Decoding

Decoding Strategies (LLM 解码策略)

在 LLM 生成过程中,模型最后输出的是一个覆盖整个词表(Vocabulary)的概率分布(Logits)。解码策略决定了我们如何从这个分布中选取下一个 Token。

1. 核心参数与原理

1.1 Temperature (温度)

温度参数 $T$ 用于在执行 Softmax 之前对 Logits 进行缩放。

  • 数学公式: 设 $z_i$ 为词表第 $i$ 个 Token 的 Logits,缩放后的概率为: $$ P(x_i) = \frac{\exp(z_i / T)}{\sum_j \exp(z_j / T)} $$
  • 技术实现
    • $T < 1$ (低熵):放大高概率和低概率之间的差距。模型变得更“自信”和确定,倾向于选择最可能的词。
    • $T = 1$:原始 Softmax 分布。
    • $T > 1$ (高熵):缩小差距,分布变得平滑。模型变得更“随机”和有创意,但也更容易产生幻觉。
边界情况

当 $T \to 0$ 时,解码退化为 Greedy Search (贪心搜索),即永远只选概率最大的词。

1.2 Top-K Sampling

Top-K 将词表限制为概率最高的前 $K$ 个词。

  • 原理:将 Logits 按从大到小排序,只保留前 $K$ 个,其余设置为 $-\infty$(在 Softmax 后概率为 0)。
  • 作用:剔除概率分布中“长尾”部分的低质量词,防止模型跳到完全无关的领域。
  • 缺点:$K$ 是固定的,无法感知概率分布的厚薄。

1.3 Top-P (Nucleus Sampling) 核采样

Top-P 是一种动态裁剪方法。

  • 原理:按照概率降序排列词汇,累加它们的概率,直到累加值达到预设阈值 $P$。只从这些入选的词中采样。
  • 技术实现
    1. 对分布进行排序。
    2. 计算累积分布函数 (CDF)。
    3. 找到 CDF $> P$ 的最小索引,并将该索引之后的词全部掩蔽(Mask)。
  • 优势:当模型很确定时(概率集中在少数词),采样范围变窄;当模型不确定时,采样范围自动变宽。

1.4 Min-P Sampling (现代推荐)

Min-P 是最近由替代性前端(如 vLLM/Llama.cpp)推广的一种策略。

  • 原理:基于最高概率词的比例进行裁剪。如果最高概率是 $P_{max}$,则只保留概率 $\ge P_{max} \times \text{limit}$ 的词。
  • 优势:比 Top-P 更好地保留了有意义的低概率选项,同时有效地剔除垃圾项。

2. 完整解码流程 (Sampling Pipeline)

模型推理时的采样通常遵循以下顺序:

  1. Logits 生成:模型输出原始向量。
  2. Temperature 缩放:$Logits = Logits / T$。
  3. Repetition Penalty:对已出现的 Token 降低其 Logits(可选)。
  4. Top-K 过滤:保留前 $K$。
  5. Top-P 过滤:累积概率裁剪。
  6. Softmax:将过滤后的 Logits 转化为和为 1 的概率分布。
  7. Random Sampling:根据最终概率进行随机采样。

3. 对比总结

参数核心控制点适用场景建议值
Temperature概率分布的“陡峭”度调整创造力/保守度0.5 - 1.2
Top-K硬性数量限制确定性高的任务、小模型20 - 50
Top-P动态概率质量通用生成、对话0.8 - 0.95
Min-P基于信心的相对阈值追求自然感的长文生成0.05 - 0.1

4. 常见策略组合

  • 代码/数学 (严格模式)Temperature=0.2, Top-P=0.95 或直接 Greedy Search
  • 创意写作/文学Temperature=0.8-1.0, Top-P=0.9, Min-P=0.05

相关笔记