在确定性与随机性之间寻找平衡:解码算法的数学直觉

概率空间的最后一步:解码的本质

大型语言模型在每一步预测中输出的是一个维度等于词表大小(Vocab Size)的向量,即 Logits。这些原始数值通过 Softmax 函数转换为概率分布。然而,直接选择概率最高的 Token(贪婪搜索,Greedy Search)往往会导致模型陷入死循环或生成过于乏味的文本。

项目 09 的核心是构建一个“采样实验场”,理解如何通过数学手段对原始分布进行二次塑形,从而控制模型的“创造力”与“逻辑性”。

第一阶段:温度(Temperature)——分布强度的拉伸

温度参数 $T$ 并不直接过滤 Token,而是通过修改 Logits 的尺度来改变概率分布的熵。 公式为:$P_{i} = \frac{\exp(L_{i}/T)}{\sum \exp(L_{j}/T)}$

  • 当 $T < 1$(低温)时:Logits 之间的差距被放大。概率最高的词会占据绝对主导,分布变得极其尖锐(Sharp)。这会使模型表现得更自信、更保守,适合代码生成或数学推理。
  • 当 $T > 1$(高温)时:Logits 之间的差距被缩小。分布趋于平坦(Flat),低概率词的生存空间被放大。这会引入随机性,增加文案创作的灵活性,但也会导致逻辑崩溃和幻觉增加。
  • 极限情况:当 $T \to 0$ 时,采样退化为贪婪搜索;当 $T \to \infty$ 时,采样退化为均匀分布的随机抽奖。

第二阶段:分布剪裁——Top-K 与 Nucleus Sampling (Top-P)

由于词表通常包含几万个词,长尾部分的 Token 往往是完全无关的噪声。如果不加限制,即使概率极低,模型也有可能抽中这些词,导致输出乱码。

1. Top-K 采样

固定保留概率最大的前 $K$ 个词。

  • 工程缺陷:$K$ 是静态的。在某些语境下(如模型非常确定下一个词),前 10 个词可能只有前 2 个是合理的;而在另一些语境下(如描述一个颜色),可能有 50 个词都是合理的。Top-K 无法自适应这种变化。

2. Top-P (核采样)

模型动态选择一个最小候选集,使得这些词的累积概率之和达到阈值 $P$。

  • 数学意义:它关注的是概率分布的“核心”(Nucleus)。当模型非常确定时,核空间很小;当模型不确定时,核空间自动扩大。这是一种基于信息熵的自适应剪裁,是目前生产环境的标配。

第三阶段:惩罚机制——抑制重复与增强多样性

模型容易陷入“自我复读”的陷阱(特别是小参数量模型)。我们需要在采样前对 Logits 进行惩罚。

  • 存在惩罚(Presence Penalty):只要 Token 出现过,就降低其 Logits。这鼓励模型谈论新话题。
  • 频率惩罚(Frequency Penalty):根据 Token 出现的次数线性增加惩罚强度。这通过提高重复成本来压低常见词。
  • Repetition Penalty(CTRL 论文方法):直接对已出现 Token 的 Logits 进行除法缩放。如果 $L_{i} > 0$,则 $L_{i} = L_{i} / \theta$;如果 $L_{i} < 0$,则 $L_{i} = L_{i} \times \theta$。

实验与可视化(The Dashboard)

为了直观理解这些参数,你需要构建一个 Dashboard,实时绘制以下图表:

  1. Token 概率直方图:观察不同 $T$ 值下,概率质量是如何在词表上移动的。
  2. 候选集大小曲线:在生成过程中,记录 Top-P 实际上保留了多少个 Token。
  3. 文本熵(Entropy)曲线:计算每一轮输出的香农熵。熵越高,代表模型越犹豫;熵骤降通常意味着模型进入了某个固定模式或模板。

总结

解码策略不是简单的调参,它是对模型预测不确定性的管理。理解了温度、剪裁和惩罚的数学直觉,你就能明白为什么同一款模型在不同的参数下,既能像严谨的程序员,又能像浪漫的诗人。在 Capstone 项目中,合适的解码配置往往比增加模型参数更能显著提升用户体验。

版权声明: 如无特别声明,本文版权归 sshipanoo 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:项目 09:概率的剪裁:解码策略与采样 Dashboard

本文链接:https://www.sshipanoo.com/blog/ai/llm-roadmap/lab-09-sampling/

本文最后一次更新为 天前,文章中的某些内容可能已过时!