Hugging Face 文本生成解码方法指南
文本生成解码概述
自回归语言生成假设词序列的概率分布是条件下一个词分布的乘积。解码方法的选择——模型如何从这个分布中选择下一个标记——对生成文本的流畅性、连贯性和创造性有显著影响。
贪婪搜索
贪婪搜索是最简单的解码方法,在每个时间步选择概率最高的标记:$w_{t} = \text{argmax}{w} P(w \mid w{1:t-1})$。
主要限制:
- 重复: 使用贪婪搜索的模型经常进入重复循环。
- 次优序列: 如果高概率序列被较低概率的初始标记掩盖,则可能会遗漏它们。例如,如果步骤 $t$ 的词不是绝对最大概率候选词,则步骤 $t+1$ 的非常可能的词无法到达。
束搜索
束搜索通过在每个时间步保持 num_beams 个最可能的假设,最终选择总体概率最高的序列,从而降低遗漏高概率序列的风险。
通过 n-gram 惩罚改进束搜索
为了对抗束搜索的重复性,可以应用 n-gram 惩罚。通过设置 no_repeat_ngram_size,将会导致重复 n-gram 的任何标记的概率手动设置为 0。然而,这必须谨慎使用;例如,2-gram 惩罚将阻止短语 "New York" 在文本中出现多次。
开放式生成中的权衡
虽然在长度可预测的任务(如翻译或摘要)中效果良好,但束搜索在开放式生成(如讲故事)方面通常是次优的,原因有几点:
- 重复输出: 它高度容易出现重复。
- 可预测性: 人类语言通常不会仅遵循高概率词的分布;束搜索往往会生成过于可预测或 "乏味" 的文本。
采样策略
采样涉及根据其条件概率分布随机选择下一个词,使得生成过程具有非确定性。
基础采样和温度
纯采样可能导致不连贯的 "废话"。为了改进这一点,温度 可用于锐化 softmax 分布。降低温度会增加高概率词的可能性,降低低概率词的可能性。随着温度趋近于 0,采样等价于贪婪解码。
Top-K 采样
Top-K 采样将分布过滤为 $K$ 个最可能的下一个词,并在它们之间重新分配概率质量。这消除了经常导致不连贯性的 "长尾" 低概率标记。
局限性: Top-K 不会根据分布的形状进行自适应。在 "尖锐" 分布中,它可能包含不合适的词;在 "平坦" 分布中,它可能排除合理的候选词。
Top-p(核心)采样
Top-p 采样动态选择累积概率超过阈值 $p$ 的最小词集。这使得样本池在下一个词不可预测时扩展,在下一个词高度可预测时收缩。
解码方法总结
| 方法 | 方法 | 主要优势 | 主要劣势 |
|---|---|---|---|
| 贪婪搜索 | 概率最高的标记 | 简单、快速 | 重复、遗漏最优路径 |
| 束搜索 | 前 $N$ 个假设 | 更高的总体概率 | 重复、可预测 |
| 采样 | 基于分布的随机选择 | 多样、富有创造力 | 可能不连贯 |
| Top-K | 前 $K$ 个标记 | 减少废话 | 固定池大小,与分布无关 |
| Top-p | 累积概率 $p$ | 动态且流畅 | 仍可能受重复影响 |
研究表明,虽然在开放式任务中采样方法通常感觉更像人类,但如果模型的训练目标专门进行了调整,束搜索可以更流畅。最终,解码策略的选择取决于具体用例以及在连贯性和创造性之间所期望的平衡。