一句话定义
采样与解码是把模型每步输出的概率分布变成具体 token 的策略;它决定回答的确定性、多样性和稳定性。
为什么需要它
模型只输出下一个 token 的分数。直接取最高分(贪心)最稳定但容易重复;按概率采样更自然,却可能跑偏。温度、Top-K、Top-P 和束搜索就是在这两者之间调平衡。
怎么工作
- 模型输出 logits,经 Softmax 与 Logits 变成概率。
- 贪心:每步取概率最高的 token。
- 束搜索:保留 k 条候选序列,按累计分数选最优;适合翻译等确定性任务。
- 温度 T:把 logits 除以 T;T<1 更集中,T>1 更发散。
- Top-K:只保留概率最高的 K 个 token;Top-P:保留累计概率达到 P 的最小集合。
- 选出 token 后追加到输入,进入下一轮;这就是自回归解码。
关键点与取舍
- 确定性任务(抽取、代码、评测)优先低温/贪心;开放创作可以调高温度或 Top-P。
- Top-P 通常比固定 Top-K 更自适应;两者可以叠加。
- 束搜索提升序列分数,但延迟和显存更高,开放对话不一定更好。
- 束搜索适合离线、可打分的任务;在线对话通常用采样以降低延迟。
常见误区
- 温度不是“创造力开关”,它只改变分布的平坦程度。
- Top-P=1 不代表不采样,只代表不截断。
- 采样不会给模型增加知识;它只改变从已有分布里怎么选。
用在哪里
- 调 API 的 temperature / top_p / top_k;离线评测固定解码参数。
- 需要可复现结果时用贪心或固定种子;需要多样性时用采样。
- 同一模型在不同解码参数下表现差异很大,评测时要写清楚配置。
相关概念
- LLM:解码的对象。
- Softmax 与 Logits:概率分布从哪里来。
- 上下文窗口:每一轮都要把历史放进上下文。