核心要点

  • 能讲贪心:每步只取概率最大的 token,简单快但是局部最优,易陷入重复、次优序列

  • 能讲 Beam Search:每步保留 top-k 条候选束并扩展,最后取整体概率最高的序列,更优但偏保守、通用、可能乏味且更慢

  • 能讲采样:按概率分布随机采样,配合 temperature/top-k/top-p 控制多样性,更有创造性但可能跑偏

  • 能给选型:翻译、摘要等确定性任务多用 beam;开放对话、创意生成多用采样

标准回答

贪心与 Beam Search

贪心解码每步直接选当前概率最大的 token,速度最快,但只看一步、不回头,容易陷入局部最优、产生重复或次优句子。Beam Search 是它的改进:每步保留概率最高的 k 条候选序列(束宽 k),分别向后扩展再剪枝,最终选整条序列联合概率最高的那条,更接近全局最优。

采样类方法

采样不再取最大,而是按模型输出的概率分布随机抽 token。temperature 调节分布陡峭程度(越高越随机),top-k 只在概率前 k 个里采样,top-p(nucleus)在累计概率达 p 的最小集合里采样。它们带来多样性和创造性,但也可能采到低概率词导致跑偏或事实错误。

选型权衡

确定性、要求忠实的任务(机器翻译、摘要、代码)偏向 beam 或低温采样,追求稳定正确;开放对话、故事/创意生成偏向 top-p/top-k 采样,避免 beam 带来的平淡重复。实际系统常按任务调温度和采样参数。

常见误区

⚠️ 常见踩坑

别以为 beam width 越大质量一定越好——过大的束反而偏向短而通用的安全输出、加剧乏味,且解码变慢;开放生成任务上 beam 常不如带 top-p 的采样自然。

追问

追问 1top-k 和 top-p 采样有什么区别,各适合什么情况?

top-k 固定取概率前 k 个候选,分布很尖锐时也强行保留 k 个,分布很平时又可能漏掉合理词;top-p 按累计概率动态确定候选集大小,能自适应分布形状。实践中 top-p(如 0.9)更稳健,常与适度 temperature 配合使用。

追问 2Beam Search 为什么在开放式生成中容易产生重复和乏味文本?

因为它优化的是序列联合概率,高概率路径往往对应高频、通用、安全的表达,缺乏多样性;且自回归模型有「越重复越自信」的退化倾向,beam 会放大这一点。可加 length penalty、n-gram 屏蔽或改用采样缓解。

延伸学习

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