核心要点

  • 区分三者作用层:Temperature 改分布形状,Top-k/Top-p 改候选集合

  • Top-k 固定截断个数,Top-p(nucleus)按累积概率动态截断,长尾自适应

  • 能说明取值经验与组合顺序,及对多样性/稳定性的权衡

标准回答

自回归解码每步对词表 logits 经 softmax 得概率分布,三种方法控制如何从中采样:

Temperature(温度):对 logits 除以 (T) 再 softmax。(T<1) 使分布更陡峭、更确定;(T>1) 更平坦、更随机;(T\to0) 退化为贪心。它调的是分布形状,不删候选。

Top-k:只保留概率最高的 (k) 个 token,重新归一化后采样。简单但 (k) 固定——分布尖锐时引入劣质候选,分布平坦时又可能切掉合理候选。

Top-p(Nucleus):从高到低累加概率,取累积刚超过 (p) 的最小集合采样。候选数随分布动态变化,比 Top-k 更自适应。

实践:三者通常组合,典型先 Temperature 缩放,再 Top-k/Top-p 截断。创意写作 (T\approx0.8)、(p\approx0.9);事实/代码任务低温甚至贪心。参见 文本生成与解码策略 与 Temperature。

常见误区

⚠️ 常见踩坑

Temperature 不会删除候选,只改变概率陡峭度;Top-p 的 p 不是“取前百分之多少的 token”,而是累积概率阈值,候选个数是动态的。

追问

追问 1Temperature=0 和贪心解码是一回事吗?

工程上等价:(T\to0) 时 softmax 退化为对最大 logit 的 one-hot,每步选概率最高的 token,即贪心解码。实现中常直接做 argmax 以避免数值问题。

追问 2Top-k 和 Top-p 哪个更好,能一起用吗?

Top-p 通常更稳健,因为它按分布动态调候选数;Top-k 在尖锐或平坦分布下都可能不合适。两者可叠加(先 Top-k 再 Top-p),取交集进一步剪枝,很多推理框架默认同时支持。

追问 3采样和 Beam Search 有何区别?各适合什么场景?

Beam Search 维护多条高概率路径择优,偏确定、易重复,适合机器翻译、摘要等有明确目标的任务;采样引入随机性、多样性高,适合开放式生成、对话与创意写作。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。