Skip to content

4 种 LLM 文本生成策略

4 LLM Text Generation Strategies

每次你向 LLM 发出提示词时,它并不会「预先知道」整句话该怎么说,而是逐个 token 地预测接下来该生成什么。但这里有个关键点:光预测出概率还不够,我们还需要一套策略,来决定每一步究竟该选用哪个 token。不同的策略会带来风格迥异的输出结果。以下是文本生成中最常见的 4 种策略:

llms p33 1

策略一:贪心策略

最朴素的做法是,每一步都从概率向量中贪心地选出概率最高的词,然后不断自回归地生成下去。这种方式往往并不理想,因为它容易导致句子重复单调。

策略二:多项式采样策略

与其总是选择概率最高的 token,我们也可以直接从概率向量所给出的概率分布中进行采样。

llms p34 1

温度参数控制着生成过程中的随机程度(我们在别处已详细介绍过)。

策略一和策略二都存在一个问题:它们只关注即将生成的下一个 token。而理想情况下,我们真正在意的,是让整个序列的概率最大化,而不仅仅是下一个 token 的概率。

llms p34 2

要让这个乘积最大化,你需要预先知道未来的条件概率(也就是每个候选 token 之后会发生什么)。但在解码过程中,我们只知道下一步的概率,并不知道后续会如何延续。

束搜索试图去近似这种真正的全局最优:

llms p35 1

在每一步,它都会保留概率最高的 k 条部分序列(也就是「束」,beam)。有些「束」一开始选用的可能是概率较低的 token,但最终却可能演化出概率高得多的完整序列。通过同时保留多条候选路径,束搜索能够探索更广的概率空间。这种方法被广泛用于机器翻译这类「准确性比创造力更重要」的任务中。

llms p35 2

这是一种较新的方法,能在流畅度与多样性之间取得平衡。它的核心思路是:通过检查候选 token 与已生成内容的相似程度来施加惩罚,从而抑制重复的续写,让输出更具多样性。在每一步,模型会考察多个候选 token;如果某个 token 与已生成内容过于相似,就会对它施加惩罚;最终选出的,是在「概率」与「多样性」之间达到平衡的那个 token。这种方式同时也能避免「陷入循环」的问题,并保持较高的连贯性。

对于故事这类较长篇幅的生成任务而言,这种方法尤其有效,因为长文本很容易在不经意间出现重复。

附加内容:SLED(自演化 logits 解码)

以上提到的所有解码策略,都依赖最后一层输出的 logits——这也是 Transformer 通常生成文本的方式。问题在于:模型早期层中所包含的事实性信号,会随着网络层数加深而逐渐衰减,导致最后一层更倾向于生成流畅但偶尔不够准确的输出。

llms p36 1

SLED 引入了一处虽小却意义重大的改动:它不再只使用最后一层的 logits,而是考察 logits 在所有层之间是如何演变的。每一层都会贡献自己的预测,SLED 会衡量这些预测彼此之间的一致程度,然后在选出下一个 token 之前,把最终的 logits 向这种「跨层共识」的方向进行微调。

这一方法不需要重新训练,也不需要额外的数据或算力。通过调用模型的完整内部知识(而非只依赖最后一步),SLED 能够在同样的架构下,生成更扎实、更贴合事实的内容。

本站内容仅供学习交流,版权归原作者所有。