语言模型每一步并不会直接吐出“最终答案”。它输出的是一组 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 与注意力机制】59|推理退化:为什么大模型会输出乱码、死循环和无意义文本
大模型推理时偶尔会突然陷入死循环、输出乱码或连续无意义数字,这不是随机 bug,而是注意力机制、Causal Mask、解码策略和数值精度在自回归生成中共同作用的结果。本文从 QKV 计算坍塌出发,解释 Attention Sink、Softmax 马太效应、Causal Mask 的退路切断、FP16 溢出路径和 KV Cache 污染,并给出从架构到运行时的多层防线。
【Transformer 与注意力机制】58|后 Transformer 时代:架构会消失还是会进化
后 Transformer 时代不太可能是某个新架构一夜之间消灭 Transformer,更可能是 attention、SSM、MoE、检索、外部记忆、工具调用和多模态模块逐渐混合。本文回顾本系列主线,解释为什么 Transformer 很难突然消失,也为什么它不可能原样解决所有问题。
【Transformer 与注意力机制】系列总览
从《Attention Is All You Need》出发把 Transformer 注意力机制、Q/K/V、多头注意力、位置编码、Causal Mask、Softmax、FFN、训练范式、模型变体、推理工程、可解释性、未来架构以及推理退化防御串成 59 篇深度博客。
【Transformer 与注意力机制】01|为什么要从这里开始
这是【Transformer 与注意力机制】系列的第一篇,承担两件事:一是把这套五十多篇文章为谁写、解决什么问题、彼此之间是什么关系交代清楚;二是为完全没基础的读者画出一条从向量、点积、矩阵乘法走到自注意力、再走到大语言模型的爬升路径,让你在投入时间之前先知道终点在哪、路上要经过哪些坎、读完之后你会、还不会做什么事。