语言模型每一步并不会直接吐出“最终答案”。它输出的是一组 logits:词表里每个 token 一个分数。softmax 把这些分数变成概率分布,然后解码策略决定选哪个 token。下一步,选出的 token 又会回到上下文中,影响后续分布。
因此,解码不是模型之外的无关小细节。同一个模型,同一个 prompt,只要 temperature、top-p 或重复惩罚不同,输出风格就可能完全不同。稳定、创造性、幻觉、重复、格式遵循,都和解码策略有关。
本篇能让你学会三件事:
- logits 如何变成下一个 token 的概率;
- 贪心、Beam Search、采样各自代表什么决策偏好;
- 为什么聊天模型常用采样,而不是机器翻译时代常见的 beam。
一、logits、softmax、概率分布
模型最后一层输出一个向量,长度等于词表大小。这个向量就是 logits。logit 越大,对应 token 在当前上下文下越可能。
softmax 把 logits 转成概率:
\[ p_i=\frac{e^{z_i}}{\sum_j e^{z_j}} \]
这里的 \(z_i\) 是第 \(i\) 个 token 的 logit。softmax 保证所有概率非负且总和为 1。
但概率分布还不是文本。解码策略要从这个分布中选择 token。选择方式不同,生成序列就不同。
二、贪心解码
贪心解码每一步选择概率最高的 token。它简单、确定、稳定。对于格式固定、答案明确的任务,贪心可能很好。
问题是,局部最优不等于全局最优。每一步都选当前最高概率,可能让模型走进重复、平庸或过早结束的路径。自然语言生成不是单步分类,而是一条路径。
贪心还会降低多样性。写作、对话、创意任务通常需要在合理范围内探索多个可能表达,而不是永远选最安全的词。
三、Beam Search
Beam Search 保留多条候选路径。beam size 为 4 时,每一步保留当前总概率最高的 4 条序列,再继续扩展。它比贪心更接近全局搜索。
机器翻译和摘要曾经大量使用 Beam Search,因为这些任务往往有较明确目标:给定源句,找高概率目标句。Beam Search 能减少单步贪心造成的早期错误。
但在开放式聊天中,Beam Search 往往让回答变得保守、重复、缺乏自然变化。高概率文本不一定是最有帮助、最自然或最有信息量的回答。
四、temperature:改变分布尖锐程度
temperature 会缩放 logits:
\[ p_i=\mathrm{softmax}(z_i/T) \]
\(T<1\) 时,分布更尖锐,高概率 token 更占优势;\(T>1\) 时,分布更平,低概率 token 更容易被采到。
temperature 不是“智商旋钮”。它改变的是随机性和探索程度。低 temperature 更稳定但可能死板,高 temperature 更有变化但更容易跑偏。
五、top-k 与 top-p
top-k 只保留概率最高的 k 个 token,然后在其中采样。它直接切掉长尾。k 小,输出更稳定;k 大,多样性更高。
top-p(nucleus sampling)保留累计概率达到 p 的最小 token 集合。它不是固定数量,而是随分布形状变化。分布很尖时保留少量 token;分布很平时保留更多 token。
top-p 更适合自然语言,因为不同上下文下合理候选数量不同。有些位置答案很确定,有些位置可以有多种表达。
六、重复惩罚和停止条件
语言模型容易重复,尤其在长生成中。重复惩罚会降低已经出现过的 token 的概率,避免模型陷入循环。频率惩罚、presence penalty 等策略也有类似目的。
停止条件同样重要。模型需要知道何时停止:遇到 EOS token、达到最大长度、生成特定 stop sequence,或满足工具调用格式。停止条件设计不好,模型可能过早截断,也可能继续输出无关内容。
这些策略看起来工程化,但直接影响用户体验。
七、为什么聊天模型常用采样
聊天任务是开放式生成。很多问题没有唯一答案,好的回答需要自然表达、适度变化和上下文适配。采样比 beam 更适合这种场景。
但采样不是越随机越好。高 temperature 加大 top-p 可能带来创造性,也会增加幻觉和格式漂移风险。生产系统通常会为不同任务设置不同解码参数:代码、JSON、工具调用偏稳定;创意写作可以更开放。
解码策略是模型行为控制的一部分,不是最后的装饰。
八、关键概念回顾
- logits:模型输出的未归一化 token 分数。
- softmax:把 logits 转成概率分布。
- 贪心解码:每步选最高概率 token。
- Beam Search:保留多条高概率候选路径。
- temperature:控制分布尖锐程度。
- top-k / top-p:限制采样候选集合。
- 重复惩罚:降低重复 token 或重复模式的概率。
九、常见误解
9.1 “temperature 越高模型越聪明”
不对。temperature 只改变采样随机性,不改变模型知识或推理能力。
9.2 “Beam Search 总比采样好”
Beam 适合目标明确的序列生成,不一定适合开放式聊天。
9.3 “解码策略不影响事实性”
影响。更随机的解码更容易探索低概率路径,也可能增加幻觉风险。
十、下一步
解码策略决定每一步选什么 token,但推理效率还要解决另一个问题:历史前缀能不能复用?下一篇 49|KV Cache 讲自回归推理为什么不像训练那样计算。
十一、参考文献
- Graves, A. “Sequence Transduction with Recurrent Neural Networks.” ICML Workshop, 2012. Beam Search 在序列生成中的早期背景之一。
- Fan, A. et al. “Hierarchical Neural Story Generation.” ACL 2018. top-k 采样相关实践。
- Holtzman, A. et al. “The Curious Case of Neural Text Degeneration.” ICLR 2020. nucleus sampling 代表论文。
- Vaswani, A. et al. “Attention Is All You Need.” NeurIPS 2017.
← 上一篇:47|Diffusion + Transformer | 下一篇:49|KV Cache →
同主题继续阅读
把当前热点继续串成多页阅读,而不是停在单篇消费。
【Transformer 与注意力机制】38|GPT 系列:从 GPT-1 到 GPT-4 的路线演进
GPT 路线的关键不是某个模型名字,而是 Decoder-only Transformer、next-token prediction、规模扩展、上下文学习、指令微调和人类反馈逐步合流。本文从 GPT-1 讲到 GPT-4,只使用公开可确认信息,解释为什么自回归语言模型最终成为大语言模型时代的主线。
【Transformer 与注意力机制】39|T5:把所有 NLP 任务统一成 Text-to-Text
T5 的核心不是又发明了一种 Transformer,而是把翻译、摘要、分类、问答都改写成“输入文本到输出文本”的统一格式。本文解释 T5 为什么选择 Encoder-Decoder 架构,span corruption 和 BERT/GPT 的目标有什么差异,C4 和系统化消融实验为什么让 T5 成为迁移学习路线的重要基准。
【Transformer 与注意力机制】40|三大路线之争:为什么大模型几乎都是 Decoder-only
Transformer 不是只有一种形态。Encoder-only、Encoder-Decoder、Decoder-only 分别对应理解、条件生成和自回归生成三类信息流。本文横向比较 BERT、T5、GPT 代表的三条路线,解释为什么通用大模型时代 Decoder-only 占主流,以及为什么这不意味着另外两条路线失去价值。
【Transformer 与注意力机制】41|位置编码演进:Sinusoidal → Learned → RoPE → ALiBi
Transformer 本身没有递归和卷积,如果不注入位置信息,它只会看到一袋 token。本文从原始正弦位置编码讲到 learned embedding、相对位置、RoPE 和 ALiBi,解释位置编码为什么从“给 token 加坐标”演进到“让 attention 感知相对距离”,以及长上下文为什么让位置外推变成核心问题。