DOCAI · 概念 · L3
top_p 和 top_k 是什么,要不要调
一句话定义
两种采样截断:top_p 按累积概率保留候选,top_k 按数量保留;通常只调其中一个,别和 temperature 一起乱动。
专业更新 2026-11-13核验 2026-11-13 · docai 编辑部
三个参数各管什么
生成每个 token 时,模型先算出一组候选词的概率,然后要决定从里面挑哪个:
| 参数 | 作用 | 典型取值 |
|---|---|---|
| temperature | 把概率分布压尖或压平 | 0–1(有的服务到 2) |
| top_p | 只保留累积概率前 p 的候选 | 0.9–1.0 |
| top_k | 只保留概率最高的 k 个候选 | 20–50 |
temperature 改的是形状,top_p 和 top_k 改的是范围。
top_p 怎么理解
把候选按概率从高到低排,累加,直到总和达到 p,只在这些词里采样。
top_p = 1:不截断,所有候选都有机会(等价于只受 temperature 影响)。top_p = 0.9:砍掉尾部 10% 的概率质量,通常砍掉的都是明显不合适的词。
top_k 更粗暴:直接保留前 k 个,不管它们的概率总和。它在候选分布很平时容易 把合理的词也砍掉,所以很多 API 默认不开。
只调一个
OpenAI 的建议是「只用其中一个」。原因是两者叠加时效果难以预测:
- 高 temperature + 低 top_p:温度把分布压平,top_p 又砍掉尾部,结果介于两者之间;
- 低 temperature + 高 top_p:几乎等于只看 temperature。
实践中:
- 先固定
top_p = 1,只调 temperature。 - 需要更强约束时,再单独降 top_p,一次只改一个。
- 不要在两个参数之间来回试,你分不清是谁起的作用。
常见误解
- 「top_p 越高越有创造力」:它只影响候选范围,创造力的主要来源还是温度和提示。
- 「top_k 越大越好」:太大等于没截断,太小会砍掉合理选项。
- 「这些参数能提高正确率」:它们改变多样性,不改变知识。要事实正确,靠材料和校验。
下一步
- 主力参数:Temperature
- 输出不稳定的另一个原因:提示词模板