在确定性与随机性之间寻找平衡:解码算法的数学直觉
概率空间的最后一步:解码的本质
大型语言模型在每一步预测中输出的是一个维度等于词表大小(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,实时绘制以下图表:
- Token 概率直方图:观察不同 $T$ 值下,概率质量是如何在词表上移动的。
- 候选集大小曲线:在生成过程中,记录 Top-P 实际上保留了多少个 Token。
- 文本熵(Entropy)曲线:计算每一轮输出的香农熵。熵越高,代表模型越犹豫;熵骤降通常意味着模型进入了某个固定模式或模板。
总结
解码策略不是简单的调参,它是对模型预测不确定性的管理。理解了温度、剪裁和惩罚的数学直觉,你就能明白为什么同一款模型在不同的参数下,既能像严谨的程序员,又能像浪漫的诗人。在 Capstone 项目中,合适的解码配置往往比增加模型参数更能显著提升用户体验。
版权声明: 如无特别声明,本文版权归 sshipanoo 所有,转载请注明本文链接。
(采用 CC BY-NC-SA 4.0 许可协议进行授权)
本文标题:项目 09:概率的剪裁:解码策略与采样 Dashboard
本文链接:https://www.sshipanoo.com/blog/ai/llm-roadmap/lab-09-sampling/
本文最后一次更新为 天前,文章中的某些内容可能已过时!