掘金 人工智能 14小时前
一文搞懂大模型生成文本的解码策略
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文深入探讨了LLM(大型语言模型)在文本生成过程中所采用的各种解码策略,包括贪心搜索、束搜索、Top-k采样、Top-p采样、基于温度的采样、Min-P采样以及Mirostat采样等。文章分析了这些策略的优缺点,并提供了优化LLM生成结果的实用方法,旨在帮助读者更有效地利用LLM进行文本创作。

💡 贪心搜索是最简单的解码算法,但易导致文本缺乏多样性,陷入局部最优。

✨ 束搜索通过保留多个候选词,在探索和利用之间取得平衡,但仍可能产生重复。

🌟 Top-K采样引入随机性,提高文本多样性,但k值选择至关重要,过大或过小均影响效果。

💫 Top-P采样(核采样)动态调整单词集大小,平衡多样性和连贯性,更具灵活性。

🔥 温度采样通过调整概率分布,控制文本的随机性和创造性,常与其他采样方法结合使用。

💎 Min-P采样通过设置绝对概率阈值,平衡连贯性和多样性,尤其在温度较高时表现出色。

💡 Mirostat采样是一种基于反馈的自适应top-k采样方法,能够生成具有预定目标困惑度的文本,避免“乏味陷阱”和“混乱陷阱”。

🔑 各种采样方法执行顺序会影响输出质量,建议先惩罚,再过滤/截断,最后温度缩放和采样。

简介

LLM生成是根据提示词以及之前生成的token生成下一个token的概率分布,之后通过不同解码策略来生成下一个token(词元)。

从数学角度来看,输出概率分布可以表示为:

具体的LLM推理及解码过程如下图所示。

本文将探究诸如贪心搜索、束搜索、Top-k采样、Top-p采样(核采样)、基于温度的采样、Min-P 采样等知名的解码策略,通过了解这些技术,使我们可以更高效的优化LLM的生成结果。

文章较长,建议先点赞收藏,再慢慢观看。另外,我撰写的大模型相关的博客及配套代码均整理放置在Github:llm-action,有需要的朋友自取。

贪心搜索(Greedy Search)

贪心搜索是最为简单直接的解码算法。在每一时间步中,它都会选择概率最高的Token。

如下图所示,从单词 “The”\text{“The”} 开始,算法在第一步选择条件概率最高的词 “nice”\text{“nice”} 作为输出,依此往后。最终生成的单词序列为 (“The”,“nice”,“woman”)(\text{“The”}, \text{“nice”}, \text{“woman”}),其联合概率为 0.5×0.4=0.20.5 \times 0.4 = 0.2

优点:

局限:

穷举搜索(exhaustive search)

穷举搜索指穷举地列举所有可能的输出序列及其条件概率, 然后计算输出条件概率最高的一个。使用穷举搜索来获得最优序列, 但其计算量极大,通常,现有的计算机几乎不可能计算它。

束搜索(Beam search)

束搜索(beam search)是贪心搜索的一个改进版本,介于穷举搜索与贪心搜索。束搜索通过在每个时间步保留最可能的 num_beams 个词(即束宽),并从中最终选择出概率最高的序列来降低丢失潜在的高概率序列的风险。

下图以 num_beams=2 为例,在第一步,除了最有可能的假设 (“The”,“nice”)(\text{“The”}, \text{“nice”}),束搜索还跟踪第二可能的假设 (“The”,“dog”)(\text{“The”}, \text{“dog”})。在第二步,束搜索发现序列 (“The”,“dog”,“has”)(\text{“The”}, \text{“dog”}, \text{“has”}) 概率为0.360.36,比 (“The”,“nice”,“woman”)(\text{“The”}, \text{“nice”}, \text{“woman”})0.20.2 更高。

虽然结果比贪心搜索更流畅,但输出中仍然包含重复。一个简单的补救措施是引入 n-grams (即连续 n 个词的词序列) 惩罚。最常见的 n-grams 惩罚是确保每个 n-gram 都只出现一次,方法是如果看到当前候选词与其上文所组成的 n-gram 已经出现过了,就将该候选词的概率设置为 0。但是,n-gram 惩罚使用时必须谨慎,如一篇关于 纽约 这个城市的文章就不应使用 2-gram 惩罚,否则,城市名称在整个文本中将只出现一次!

在机器翻译或摘要等任务中,因为所需生成的长度或多或少都是可预测的,所以波束搜索效果比较好。但开放域文本生成情况有所不同,其输出文本长度可能会有很大差异,如对话和故事生成的输出文本长度就有很大不同。同时,在故事生成这样的场景中,很难用 n-gram 或其他惩罚来控制,因为在“不重复”和最大可重复 n-grams 之间找到一个好的折衷需要大量的微调。

优点:

局限:

随机采样

束搜索算法生成的输出较为统一,变化较少。高质量的人类语言并不遵循最大概率法则。人类生成的文本具有独特的分布,存在明显的峰值,这反映了文本的可变性和创造性。下图中展示了人类生成文本带来的惊喜度比波束搜索好不少。为了解决这一局限性,我们可以在生成过程中引入一些随机性。

随机采样是基于采样的解码中最基本的形式,它从概率分布中随机选择下一个单词,而不是选择最有可能的单词,随机采样可能会选中一个罕见词。

然而,纯粹的随机采样方法在概率分布的长尾部分存在显著缺陷,这也是LLM质量变差的区域。长尾指的是概率分布中模型为大量可能单词分配低概率的区域。虽然随机采样可以带来更多样的输出,但它也增加了从长尾中选择单词的可能性,这可能会导致文本毫无意义、语法错误或不连贯。

Top-K 采样

为了缓解随机采样的问题,可以使用Top-k采样。在 Top-K 采样中,概率最大的 K 个词会被选出,然后这 K 个词的概率会被重新归一化,最后就在这重新被归一化概率后的 K 个词中采样。 GPT2 采用了这种采样方案,这也是它在故事生成这样的任务上取得成功的原因之一。

如下图所示,以 K=6K = 6 为例,即将在两个采样步的采样池大小限制为 6 个单词。我们定义 6 个最有可能的词的集合为 Vtop-KV_{\text{top-K}}。在第一步中,Vtop-KV_{\text{top-K}} 仅占总概率的大约三分之二,但在第二步,它几乎占了全部的概率。同时,可以看到在第二步中该方法成功地消除了那些奇怪的候选词 (“not”,“the”,“small”,“told”)(\text{“not”}, \text{“the”}, \text{“small”}, \text{“told”})

优点:

局限:

Top-P 采样(核采样)

由于 Top-K 采样不会动态调整从概率分布 P(ww1:t1)P(w|w_{1:t-1}) 中选出的单词数。这可能会有问题,因为某些分布可能是非常尖锐 ,而另一些可能更平坦,所以对不同的分布使用同一个绝对数 K 可能并不普适。

在 Top-P 采样中,采样不只是在最有可能的 K 个单词中进行,而是在累积概率超过概率 p 的最小单词集中进行。然后在这组词中重新分配概率质量。这样,词集的大小可以根据下一个词的概率分布动态增加和减少。

优点:

局限:

基于温度的采样

通过温度(temperature)来调整概率分布。它控制着生成文本的随机性,进而控制文本的多样性。经过温度调整后的概率分布可以表示为:

p(x=Vlx1:i1)=exp(ul/t)lexp(ul/t)p(x = V_l | x_{1:i-1}) = \frac {\exp(u_l/ t)} {\sum_{l'} \exp(u_l'/ t)}

当 t = 1 时,模型根据其原始概率分布生成文本,在多样性和连贯性之间保持平衡。

当 t > 1 时,模型变得更具创造性和多样性。温度越高,不太可能出现的单词被选中的可能性就越大,从而产生更多样、可能更令人惊讶的输出。在探索不同的生成结果或鼓励模型突破常规思考时,这一点特别有用。

当 0 < t < 1 时,分布向高概率事件倾斜,从而隐式地降低尾部分布的概率质量。模型变得更具确定性和保守性。温度越低,最有可能出现的单词被选中的可能性就更大,从而产生更一致、可预测的输出。当目标是保持特定的风格或语气,或者当模型对其预测的信心至关重要时,这是有益的。

温度通常在 Top K、Top P 或 Min P 等采样方法之后应用。这可确保筛选首先删除不需要的token,然后,通过 temperature 调整剩余的合理token的相对可能性。此顺序保留了过滤步骤的完整性,并允许更安全地使用更高的温度(如 1.0),以增加预过滤选项的多样性。

尽管降低温度可以提高生成质量,但会以牺牲多样性为代价。

Min-P 采样

Min-P 采样是一种随机截断采样方法,在保持一定程度的token多样性的同时,仍然专注于高概率token。该方法使用相对概率阈值 pbase(0,1]p_{base} ∈ (0, 1] 来缩放最大token概率 pmaxp_{max} 以确定绝对概率阈值 pscaledp_{scaled}。然后对概率大于或等于 pscaledp_{scaled} 的标记进行采样。具体工作原理如下:

Min-P 采样会根据模型的置信度动态调整过滤阈值,当模型置信度高时,会专注于高概率的token;当置信度低时,会包括多样但合理的token选项。这比top-p和top-k采样更有效地平衡了连贯性和多样性。

通过在多个大语言模型基准测试(包括推理 [GPQA]、小学数学 [GSM8K] 和创意写作 [AlpacaEval])上的实验,相比流行的 top-p 采样方法,min-p 在保持连贯性的同时,能够在温度(temperature)超过 1 的情况下生成更多样化的输出。而在标准温度设置(T[0,1]T ∈ [0, 1])下,min-p 实现了与 top-p 相当的基准测试性能。

Mirostat 采样

当前的解码算法如top-k和top-p采样,虽然能够生成高质量的文本,但在控制文本特性方面存在不足。而先前的报告显示,人类更倾向于困惑度适中的文本,此外,交叉熵(困惑度的对数)与重复性之间存在近似线性关系。对于较小的 k 和 p 值,困惑度会随着生成文本长度的增加而显著下降,生成的文本容易陷入“乏味陷阱”(boredom trap),即出现大量重复内容。对于较大的 k 和 p 值,困惑度会随着生成文本长度的增加而上升,又容易陷入“混乱陷阱”(confusion trap),生成不连贯的内容。而 mirostat 能够避免这两种陷阱。

Mirostat 采样是一种基于反馈的自适应top-k采样方法,它能够在无需任何调整的情况下生成具有预定目标困惑度的文本(无论长度如何)。实验表明,将目标困惑度值设定在某个阈值以上时,可以显著减少句子级别的重复。

Mirostat 在生成每个词时分为两个阶段进行。首先,它基于词遵循齐夫(Zipf)定律(词频分布曲线)的假设使用最小均方误差(MMSE)来估计 s 的值;其中,s 是表征分布的指数。然后,使用 top-k 采样;其中,k 是估计的 s 和输出文本的目标困惑值的函数。

以下详细介绍了 mirostat 算法,用于生成具有预定平均困惑值的文本。输入是一个目标困惑值 τ,初始化一个变量 µ = 2τ。每个词的生成过程如下:首先根据公式30计算s^\hat{s},然后根据公式(2)近似计算 k,接着使用 top-k 采样来采样下一个词 X,计算误差项 e 为采样词 X 的观察到的困惑值 S(X) 与 τ 之间的差值,最后利用 e 更新 µ。

虽然可以通过迭代最可能的词来设置对应于具有合适困惑量的词的 k 值,以此来调整算法中的 k 值,从而控制困惑值。但 mirostat 通过反馈机制来自动调整 k 值,从而实现对文本生成过程的动态控制,确保生成的文本在整个过程中保持预定的困惑度水平。具体来说,算法通过不断地估计 s、计算 k、采样词、计算误差并更新 µ,使得生成的词序列的困惑值能够稳定在目标值 τ 附近。这种基于反馈的机制允许 mirostat 自适应地调整采样策略,避免了传统方法中因参数固定而导致的困惑度波动问题,从而能够生成更符合预期的高质量文本。

创新点:

局限:

重复控制

一些场景下,需要通过惩罚进行重复控制。常见的重复控制手段有:

重复惩罚 (repeat_penalty):防止模型在生成文本过程中过度重复之前已经生成的内容。Repetition Penalty 通常通过一个惩罚因子(penalty factor)来控制惩罚的程度。惩罚因子大于 1 时,表示增加对重复内容的惩罚。具体来说,对于已经生成的 token,其概率被除以惩罚因子。这样,这个已经被生成过的词在下一个位置被选中的概率就降低了。

频率惩罚(frequency_penalty):通过对已生成词汇的概率分布进行调整,来影响模型后续词汇的选择。Frequency Penalty 会根据词汇在生成文本中出现的频率来调整其概率。具体来说,它会对高频词汇施加惩罚,降低这些词汇在未来生成中出现的概率,从而鼓励模型探索一些不那么常见的词汇,使生成的文本更加多样化。

Frequency Penalty 的取值范围通常在 0 到 2 之间。当 Frequency Penalty 为 0 时,不对词汇的频率进行惩罚,允许高频词频繁出现;当 Frequency Penalty 值大于 0 时,会随着值的增大,更倾向于降低高频词汇的概率,使模型减少对常见词汇的依赖,生成更多新颖、不常见的词汇和表达方式。

Frequency Penalty 作为一个缩放因子,直接作用在模型预测的对数概率上,其数学表达形式为:(1 - frequency_penalty) * log_probability

存在惩罚(presence_penalty):关注词汇是否已经在生成的文本中出现过,只要词汇出现过,无论出现的频率如何,都会对其施加一定的惩罚,即降低该词汇再次被选中的概率,从而促使模型引入更多新的词汇,让生成的文本在主题和内容上更加丰富多样。

Presence Penalty 的取值通常也在 0 到 2 之间。当 Presence Penalty 为 0 时,不对已出现的词汇施加任何惩罚,允许重复使用相同的词汇;当 Presence Penalty 值大于 0 时,会随着值的增大,增加对已出现词汇的惩罚力度,使模型更倾向于选择尚未出现过的词汇进行生成,避免内容的重复,增加文本的多样性。

与 Frequency Penalty 惩罚词汇出现频率不同,Presence Penalty 对所有已出现的词汇施加的惩罚是相同的,出现2次的词汇和出现 10 次的词汇会受到相同的惩罚。

不同采样方法执行顺序最佳实践

通常情况下,可以结合多种采样方法一起使用。而采样方法的应用顺序会显著影响输出质量。在 llama.cpp 等框架中实现的标准和推荐顺序通常为:

    惩罚:对初始化的 logit 应用惩罚,如:repeat_penalty、frequency_penalty、presence_penalty。过滤/截断: 按顺序应用筛选方法,以删除不太可能或不需要的token。llama.cpp 中的典型顺序是如下所示。注意:确切的顺序可能因版本或分支而略有不同,如果精度至关重要,需查阅特定文档。每个过滤器都对前一个过滤器传递的候选集进行操作。
    温度缩放: 将剩余候选token的 logit 除以 temperature 值。Softmax & Sampling: 应用 softmax 函数将最终缩放的 logit 转换为概率,然后根据此分布对下一个token进行采样。

为什么这个顺序很重要

遵循此标准顺序可确保每个步骤都按预期运行。但在使用 Mirostat 时,它取代了步骤 2 和 3,动态控制整个过程本身。

什么时候调整不同的参数设置?

以下情况增加温度:

以下情况降低温度:

在以下情况下使用 min-p 而不是 top-p

在以下情况下增加重复惩罚

在以下情况下避免高重复惩罚

不同场景下采样推荐值

采样设置会极大地影响模型的性能。对于大多数使用场景而言,建议如下:

注:不同的模型对这些设置的响应可能不同,因此,需要通过一些实验帮助找到特定模型和场景的最佳参数。以下是一些场景的推荐设置。

设置常规编码事实写作聊天
min_p0.050.050.10.050.05
temperature0.70.20.310.85
top_p0.90.90.80.950.95
mirostat00000
repeat_penalty1.11.051.0511.15
top_k40400*00

此外,一些指南建议 Top K = 40,但 Min P 通常提供更好的自适应筛选。对于大多数事实场景,考虑单独使用 Min P ,并设置一个更高的值(0.1)。

LLM生成的回答中疑难场景的解决思路

当模型的输出不令人满意时,调整采样参数会有所帮助。但是,参数调整并不总是导致问题的原因。许多问题源于更基本的因素:

通常考虑首先解决这些基本方面。如果问题仍然存在,继续进行参数调整。注意:调整通常是一个迭代过程 ,并且更改可能会产生相互影响 。一次修改一个参数并评估整体输出质量。

模型不断重复

第一步:

参数调整(按优先级排序):

输出太随机/不连贯

参数调整(按优先级排序):

输出过于通用/可预测

参数调整(按优先级排序):

模型生成不正确的事实

参数调整(按优先级排序):

总结

本文讲述了贪心搜索、束搜索、top-k、top-p、min-p 等解码策略。

当使用LLM进行文本生成时,贪心搜索、束搜索 和 top-k 截断方法会导致大量的重复(用蓝色显示),而带温度和不带温度的采样往往会导致不连贯(用红色显示)。top-p采样(核采样)在很大程度上避免了这两个问题。

相比流行的 top-p 采样方法,在温度(temperature)超过 1 的情况下,min-p 在保持连贯性的同时,能够生成更多样化的输出。

而 Mirostat 采样是一种基于反馈的自适应top-k采样方法,它能够在无需任何调整的情况下生成具有预定目标困惑度的文本(无论长度如何)。实验表明,将目标困惑度值设定在某个阈值以上时,可以显著减少句子级别的重复。

另外,还探讨了不同采样方法执行顺序最佳实践,不同场景下采样的推荐值以及LLM生成的回答中疑难场景的解决思路。

此外,还有无尾采样(tail free sampling)、η\eta采样、ϵ\epsilon采样、Top-nσn\sigma 采样等解码算法,本文就不一一介绍了。

参考文档:

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

LLM 解码策略 文本生成 Top-K Top-P
相关文章