当我们与 ChatGPT 或 Llama 等大型语言模型 (LLM) 交互时,我们要么把它们视为神奇的黑盒: 输入提示词,连贯的回答就出现了。然而,在底层,这些模型本质上是下一个 Token 预测器 。 它们输出的是词表中成千上万个 Token 的概率分布。

将这些概率转换为我们阅读的流畅文本的过程称为解码

很长一段时间以来,社区的运作依赖于源自旧的特定任务模型 (如 2018 年用于翻译的模型) 的“经验之谈”。但是,这些规则是否适用于当今庞大的通用 LLM?最近的一篇论文*《A Thorough Examination of Decoding Methods in the Era of LLMs》 (LLM 时代解码方法的彻底审查) *提供了一个全面的答案。

在这篇文章中,我们将探索各种解码策略的机制——从“经典”方法到前沿的研究方法——并分析它们在不同任务、对齐阶段和部署约束下的表现。

概率与文本之间的桥梁

在深入研究复杂的算法之前,让我们先建立基础概念。LLM 是逐个 Token 生成文本的。在每一步 \(t\),模型都会查看输入序列 \(\mathbf{x}\) 和目前为止已生成的 Token \(\mathbf{y}_{

解码方法就是从这个分布中选择特定 Token \(y_t\) 的决策规则。这些方法通常分为两类: 确定性 (对于给定的输入总是选择相同的输出) 和随机性 (引入随机性以生成多样化的输出) 。

让我们来分析一下这些竞争者。

1. 确定性方法 (Deterministic Methods)

确定性方法通常受到需要精确性任务的青睐,例如编码或翻译,在这些任务中通常有一个“正确”或最佳的答案。

这是最简单的方法。模型只需在每一步选择概率最高的 Token。

方程 1: 贪婪搜索选择

虽然速度快,但贪婪搜索通常患有“隧道视野” (目光短浅) 。它选择当前最好的选项,而不考虑这对后续序列的影响,通常导致重复或次优的文本。

集束搜索 (Beam Search, BS)

集束搜索试图解决贪婪搜索的短视问题。它不是只保留一个序列,而是在每个时间步保留前 \(k\) 个概率最高的序列 (即“束”) 。

方程 2: 集束搜索的评分函数

方程 3: 集束搜索选择

通过同时探索多条路径,集束搜索通常能找到整体概率更高的句子。然而,在开放式生成 (如讲故事) 中,标准的集束搜索往往会产生重复和无聊的文本。

多样化集束搜索 (Diverse Beam Search, DBS)

为了对抗集束搜索的重复性,DBS 将束分为若干组,并添加惩罚项以确保各组之间存在差异。这迫使模型探索不同的措辞或想法。

方程 13: 带惩罚项的多样化集束搜索评分

对比搜索 (Contrastive Search, CS)

这是一种更现代的方法,旨在修复开放式文本中出现的“退化” (循环和重复) 问题。CS 使用了一种前瞻机制。它选择概率较高同时会对与先前上下文过于相似的 Token 进行惩罚 (确保隐藏状态是截然不同的) 。

方程 14: 对比搜索目标

对比解码 (Contrastive Decoding, CD)

对比解码是一种迷人的方法,它使用两个模型: 一个强大的“专家” (主 LLM) 和一个较弱的“业余者” (较小的模型) 。其直觉是,业余者会犯常见的错误并依赖简单的统计模式 (幻觉、陈词滥调) 。CD 会放大专家与业余者意见不一致的 Token 的概率。

方程 15: 对比解码评分

它本质上是从大模型的“信号”中减去了小模型的“噪声”。

方程 16: 对比解码候选集

极其简单的解码 (Frustratingly Simple Decoding, FSD)

FSD 的运作原理与对比解码相似,但简化了“业余者”。它不使用单独的神经网络,而是使用简单的 \(n\)-gram 模型 (仅查看词频) 作为“反向语言模型” (Anti-LM) 。它会惩罚那些仅仅因为是常见短语而概率很高的 Token,从而推动模型选择更切合上下文的 Token。

方程 17: 极其简单的解码评分

DoLa (通过层对比解码)

DoLa 是一种独特的方法,它将 LLM 最后一层的输出与其自身的早期层进行对比。理论依据是,事实性知识存在于较高层,而语言语法存在于较低层。通过对比它们,DoLa 旨在增强事实的正确性。

2. 随机性方法 (Stochastic Methods)

随机性方法引入了随机性,使其成为多样性至关重要的创造性任务的标准。

温度采样 (Temperature Sampling)

这是 API (如 OpenAI 的 API) 中最常见的参数。一个“温度”参数 \(\tau\) 会在 Softmax 函数之前缩放 Logits。

  • 高温 (\(>1\)): 使分布变平,让罕见词更有可能出现 (更具创造性/混乱) 。
  • 低温 (\(<1\)): 使分布变尖,让最可能的词可能性更大 (更具确定性) 。

方程 18: 温度采样概率

Top-\(k\) 和 Top-\(p\) (核) 采样

这些方法截断了分布的尾部,以避免选择极不正确的 Token。

  • Top-\(k\): 仅从概率最高的 \(k\) 个 Token 中采样。
  • Top-\(p\): 从累积概率超过 \(p\) (例如 0.9) 的最小 Token 集合中采样。这有效地根据模型的置信度调整了候选池的大小。

方程 19: Top-p 采样约束

基于熵的采样 (\(\eta\), Mirostat, Typical)

这些高级方法试图在生成的文本中保持特定的信息密度或“惊喜”因素。

  • 典型采样 (Typical Sampling): 根据 Token 的概率与预期熵 (信息含量) 的接近程度来选择 Token。
  • Mirostat: 在生成过程中主动调整采样参数,以保持文本的困惑度 (Perplexity) 率恒定。
  • \(\eta\)-采样: 基于熵依赖的阈值来截断单词。

方程 20: 典型采样优化

方程 21: Eta 采样候选集


实验分析: 到底什么有效?

研究人员使用 Llama-2 系列 (包括基础 7B/13B/70B 模型和“Chat”对齐版本) ,在大量任务中评估了这些方法。他们关注三个关键维度: 性能鲁棒性速度

1. 性能: 任务之间的鸿沟

最重要的发现是,“最佳”解码方法高度依赖于任务的性质以及模型是否经过了对齐 (RLHF) 。

未对齐模型 (Base Llama-2) 对于基础模型,存在明显的鸿沟。

  • 封闭式任务 (数学、编码、翻译) : 确定性方法占主导地位。集束搜索和 FSD 是表现最好的。随机性方法 (如 Mirostat 或 Top-\(p\)) 在这里经常失败,产生不连贯的逻辑。
  • 开放式任务 (故事生成) : 这是随机性方法传统上大放异彩的地方。然而,研究发现现代确定性方法 (如对比搜索和 FSD) 正在迎头赶上,能够生成高质量的文本,而没有贪婪搜索中出现的退化/循环问题。

对齐模型 (Llama-2-Chat) 这才是事情变得有趣的地方。对齐 (指令微调和 RLHF) 极大地缩小了不同解码方法之间的差距。

请看下面的表 1。这种“热力图”风格显示了性能排名。

表 1: 性能比较

从数据中得出的关键观察:

  • 始终如一的高性能者: 查看 FSDFSD-d (极其简单的解码) 这两列。对于未对齐模型,它们在几乎所有类别中都获得了高分 (橙色/红色) 。
  • 对齐效应: 在表格的下半部分 (Llama2-7B-Chat) ,性能差异下降。模型对自己偏好的“风格”非常有信心,以至于解码方法的选择变得不再那么重要。
  • DoLa 的挣扎: 令人惊讶的是,DoLa (专为事实性设计) 在 Chat 模型上表现不佳。作者推测,对齐已经解决了 DoLa 试图解决的问题,导致了矫枉过正。

为了直观地展示对齐如何降低解码选择的重要性,请看下面的图 1。“相对偏差百分比” (RDP) 衡量了当改变解码方法时性能的波动程度。

图 1: RDP 偏差

请注意, 绿色柱状图 (Chat 模型) 几乎总是低于蓝色柱状图 (Base 模型) 。这意味着如果你使用的是 Chat 模型,相比使用原始 Base 模型,选择标准的解码方法会更“安全”。

2. 鲁棒性: 令人头疼的超参数

在研究论文中,作者会针对每个数据集完美地调整超参数 (如温度或束宽) 。在现实世界中,你通常只设置一个参数,并希望它对所有情况都有效。

该研究分析了当方法被锁定为单个“固定”超参数与使用“最佳”调整参数时的性能对比。

图 2: 超参数敏感性

理解图表:

  • X 轴: 每个任务在最佳可能设置下的性能。
  • Y 轴: 所有任务使用一个固定设置下的性能。
  • 理想情况: 位于右上角 (高性能,高鲁棒性) 。

发现:

  • FSD / FSD-d (棕色圆圈) : 它们是这里的超级明星。它们位于对角线的高处,意味着单个默认设置几乎和精心调整的效果一样好。
  • 温度采样 (紫色) : 注意那个下降。如果你不针对特定任务调整温度 \(\tau\),性能会显著下降 (基础模型下降了 11.59%) 。
  • 对比解码 (橙色三角形) : 高度敏感。它需要仔细调整惩罚权重才能良好工作。

3. 速度: 智能的代价

高级解码方法通常需要额外的计算。对比搜索需要向前看;对比解码需要在主模型旁边运行第二个模型 (业余者) 。

图 3: 解码延迟

速度细分:

  • 基线: 贪婪搜索 (比率 1.0) 。
  • FSD (棕色线) : 几乎和贪婪搜索一样快。这对于部署来说是一个巨大的优势。
  • 集束搜索 (红色/绿色) : 较慢,且随着生成长度增加线性变差。
  • 对比搜索 (蓝色) : 最慢,随着生成长度增加,延迟达到 2 倍。

4. 自洽性的力量 (Self-Consistency)

虽然确定性方法通常在单次尝试的推理任务 (如 GSM8K 数学问题) 中获胜,但随机性方法有一张隐藏的王牌: 多样性

如果你使用随机性方法 (如温度采样) 生成 20 个不同的解决方案,然后进行“多数投票” (自洽性) ,性能会飙升。

图 4: 自洽性结果

如图 4 所示,虽然单次随机运行 (x 轴 = 1) 通常比集束搜索 (灰色虚线) 差,但进行 20 次生成后,像 Top-p温度采样这样的方法能够超越最佳的确定性结果。

结论和指南

这篇论文挑战了“解码已解决”或我们应该简单地默认使用 temperature=0.7 的观念。

以下是给学生和从业者的实用建议:

  1. 对于通用 (已对齐) 聊天机器人: 选择不那么重要。 集束搜索多样化集束搜索是安全、可靠的选择。如果你需要创造力,标准的温度采样效果很好,因为模型的对齐机制可以防止它偏离轨道。
  2. 对于基础/未对齐模型: 你必须小心。 极其简单的解码 (FSD) 是杰出的赢家——它提供了复杂确定性方法的高性能,对超参数设置具有鲁棒性,并且几乎和贪婪搜索一样快。
  3. 对于复杂推理 (数学/代码) : 如果你有计算预算,请使用带自洽性的随机采样 (多次生成并投票) 。如果你只有一次机会,坚持使用贪婪搜索集束搜索
  4. 如果速度至关重要,避免复杂性: 像对比搜索和对比解码这样的方法虽然能带来提升,但在延迟方面代价巨大。

在 LLM 时代,模型的好坏取决于将其思想转化为文本的解码器。随着模型变得越来越大、越来越强,理解这些机制不仅是学术练习,也是构建高效、可靠 AI 应用的必要条件。