Decoding Strategy
介绍常见的解码策略,包括贪心解码、束搜索、Top-k 采样、Top-p 采样、典型解码和对比解码
什么是解码策略
- 给定语言模型条件分布
- 解码策略的目标是在每一步 为下一个 token 选择或采样一个值,从而形成最终序列
- 采样策略指:下一个 token 不是 argmax,而是按概率随机抽取,因此贪心解码和束搜索不是采样策略,而其他的具有随机性的解码策略是基于采样的
Greedy Decoding(贪心解码)
-
贪心解码(Greedy Decoding)每一步直接选取概率最大的 token:
-
贪心解码最快,无采样成本,但其输出单一、缺乏创造性,长文本质量差,容易导致重复 / 循环
Beam Search(束搜索)
-
维护大小为 的候选集合(beam),在每一步扩展每个候选的所有可能 token,保留 top- 总概率的序列
-
序列得分常用对数概率累积:
-
可加入长度惩罚:
-
现代大模型中不推荐使用 Beam Search:
-
增大 beam 会降低文本质量(与传统 NMT 不同)
-
更倾向重复和模板化表达
-
Top-k Sampling(截断采样)
-
仅从概率前 的 token 集合 中采样:
-
采样分布:
-
多样性可控, 越大越随机
-
长尾控制较好,去除所有尾部 token 噪声
-
若 太小 → 倾向贪心、僵硬
Top-p Sampling(Nucleus Sampling,核采样)
-
从最小集合 中采样,使得:
-
采样分布:
-
Top-p 采样的优点:
-
与 Top-k 的固定截断不同,top-p 根据上下文动态调整候选集合,适应性强(概率集中时减少候选数;分散时增加)
-
能够有效过滤尾部噪声,是 ChatGPT 早期默认策略
-
Typical Decoding(典型解码)
-
Typical Decoding 由 Maynez et al., 2020 提出,是一种基于信息论的采样方法,其选择 “信息量(surprise)最典型” 的 token 区域
-
首先计算每个 token 的自信息:
-
计算分布的信息熵:
-
典型性度量:
-
典型解码在所有 token 中选择 最小的 token 子集,再进行采样
-
Typical Encoding 的优点:
-
选择 “典型” 而非 “最高概率” 的 token,克服 top-p 在某些分布中失效的问题(如 top-p 忽略信息量结构)
-
语言更自然、减少重复、保持连贯性,更接近人类自然语言熵的生成行为
-
Contrastive Decoding(对比解码)
-
Contrastive Decoding(对比解码)由 Li et al. (2022) 提出,是一种结合 “大模型 + 小模型” 的判别式解码策略
-
给定一个强模型 与一个弱模型 ,得分为:
-
选择最大得分的 token
-
强模型生成真实语义,而弱模型捕捉语言噪声(共现偏差),两者相减减少幻觉与重复
-
需要双模型,延迟较高,但可以减少幻觉
-
Temperature 不是解码策略
-
根本区别
- Temperature 控制的是 softmax 后概率分布的 “形状”;
- 而 top-k /top-p 等解码策略是在这个概率分布之上做支持集(support)的截断与筛选
-
给定 logits ,温度缩放分布的形状:
- 温度只影响:熵大小、概率差距、分布 “尖 / 平”
-
而解码策略是在** 已经确定**的前提下裁剪支持集:
- 其中 是解码策略选出来的集合
-
Temperature:连续地调整整个分布
-
解码策略:离散地砍掉一部分支持集
解码策略对比
| 策略 | 随机性 | 多样性 | 信息利用 | 重复控制 | 质量稳定性 | 典型用途 |
|---|---|---|---|---|---|---|
| Greedy | 确定 | 极低 | 局部 | 差 | 差 | 确定性任务 |
| Beam | 确定 | 低 | 全局(弱) | 中 | 中 | 结构化翻译(但不适合 LLM) |
| Top-k | 中等 | 高 | 局部 | 中 | 中 | 创造性生成 |
| Top-p | 中等 / 高 | 高 | 动态截断 | 良好 | 良好 | Chat 对话 / 通用生成 |
| Typical | 中等 | 高 | 信息论最佳 | 良好 | 稳定 | 长文本生成 |
| Contrastive | 低 | 中 | 强判别 | 极佳 | 高 | 高真实度、减少幻觉 |