生成是「逐步从概率分布里采样」。greedy 贪心、beam search、temperature、top-k、top-p(nucleus) 各自在「确定性 vs 多样性」之间取舍。本文讲清每种何时用、默认值怎么来。
LLM 是自回归的:每生成一个 token,都从 softmax 出的概率分布里「采一个」出来,再喂回去。解码策略决定怎么从这个分布里选——greedy/beam 偏确定、偏保守;temperature/top-k/top-p 控制多样性。代码/事实要低随机,创意要高随机。
模型输出的是「下一个 token 的 logits」,过 softmax 变成概率分布 p。生成第 t 个 token 就是从这个分布里挑一个:
不只要一条最优,而是每步保留 b 条(beam width)当前累计概率最高的候选序列,最后选整体最优。
在 softmax 前把 logits 除以温度 T:
不想让极小概率的"胡说"token 被采到,就在采样前先截断:
temperature 调"发散度" + top-p 控"候选范围",两者一起用。top-k 常与 top-p 二选一或叠加。| 场景 | 策略 | 说明 |
|---|---|---|
| 代码/SQL/JSON/事实问答 | greedy 或 T≈0 + top-p 小 | 要准确、可复现 |
| 翻译/摘要 | beam search 或低 T | 有较优解、要流畅 |
| 聊天/文案/头脑风暴 | T 0.7~1.0 + top-p 0.9 | 要多样自然 |
| 极度发散/写诗 | T 1.0+ + top-p 0.95 | 鼓励惊喜 |