Temperature、Top-k 和 Top-p 怎样影响模型采样?
未标记
考查重点:概率分布调整与候选截断。Temperature调整概率尖锐程度,Top-k保留最高k项,Top-p保留累计概率达到p的最小前缀;它们控制采样多样性而不保证事实正确
本题目录
参考答案
核心回答
这三个参数控制模型每一步怎样选择下一个 Token,属于推理时的解码设置,不会改变模型权重。
Temperature调整概率分布的尖锐程度:正温度越低,高概率候选越占优势;越高,分布越平坦。在固定logits下,它通常不改变候选的概率排名。Top-k按数量截断候选:保留概率最高的 k 个 Token,再在保留的集合内采样。Top-p按累计概率截断候选:从高到低累加概率,保留累计概率达到 p 的最小前缀,再采样;保留多少个 Token 会随当前分布变化。
它们影响多样性与输出稳定性,但不直接保证事实正确。多个参数可以组合,实际效果还取决于处理顺序、模型模式及服务是否支持这些设置。temperature=0 在一些服务中代表贪心解码约定,不能直接代入温度公式做除零运算。
Temperature:改变概率,不直接删除候选
设模型在当前上下文上给各候选的分数为 zᵢ,正温度 T(T > 0)下的概率为:
Pᵢ(T) = exp(zᵢ / T) / Σⱼ exp(zⱼ / T)。
T=1 对应普通 Softmax;0<T<1 让高分候选更集中;T>1 让分布更平坦。实现通常先减去最大分数再做指数运算,以提高数值稳定性。
假设 A、B、C、D 四个候选在 T=1 时的概率是 0.50、0.30、0.15、0.05。若只调整温度,可以用 Pᵢ(T) ∝ Pᵢ(1)^(1/T) 复算:
- T=0.5:平方后重新归一化,约为
0.685、0.247、0.062、0.007。 - T=2:开平方后重新归一化,约为
0.379、0.294、0.208、0.120。
A 的排名始终最高,但低概率候选在高温下更容易被抽到。这里改变的是同一步的采样概率,不能据此推断整段答案一定更长、更有创意或更正确;前一步抽出的 Token 也会改变后续上下文和分布。
当最大分数唯一时,T 趋近 0 的极限会把概率集中到最高分候选。但 T=0 本身不在公式定义域内:例如,vLLM 的实现把零温度切换为贪心并关闭相关采样过滤;Transformers 的温度处理器要求正数,单束贪心可通过 do_sample=False 选择。具体接口应按其契约设置。
Top-k:控制候选数量
仍用原分布,k=2 保留 A、B,C、D 的采样概率变为 0。A、B 归一化后分别是 0.625、0.375,然后按这个分布抽取下一个 Token,并非在两者间等概率随机选一个。
k 较小时限制更强,k 较大时允许更多候选。若每一步都保留同样数量,当分布已经非常集中时,较大的 k 仍可能带入不太合理的尾部候选;分布较平坦时,较小的 k 又可能过早排除合理表达。
在没有并列边界等特殊处理时,k=1 只剩最高概率候选,效果相当于贪心。具体实现可能通过阈值保留并列候选,或要求最少保留若干 Token,不能把边界行为一概而论。关闭 Top-k 的配置值也由接口定义,例如,所引 Transformers 版本使用 top_k=0 表示不启用该过滤。
Top-p:控制候选累计概率
Top-p 又叫核采样。对原分布:
- p=0.75:A 的 0.50 不够,加入 B 后累计 0.80,保留 A、B。
- p=0.90:A、B 合计 0.80 不够,再加入 C 达到 0.95,保留 A、B、C。
跨过阈值的那个 Token 也保留,再对保留集合归一化。p 指的是累计概率质量,不是“每个 Token 的概率都至少为 p”,也不是“固定保留词表前 p 的比例”。
因此,分布很集中时,较少候选就能达到阈值;分布较平坦时,需要更多候选。这是它相对固定 k 的主要特点。一般而言,降低 p 会缩小候选范围,但截断本身仍不能识别哪个候选包含事实错误。
组合使用时,顺序为什么重要
只考虑这三个参数时,一种实现是先按温度缩放分数,再 Top-k、Top-p,最后对保留分数做 Softmax 并采样。所引 Transformers 版本中,这三项的相对顺序如此,并且仅在采样策略开启时加入;其他处理器还可能参与其中。这是具体实现方式,参数定义本身并没有要求所有引擎采用同一顺序。
Top-p 依赖它看到的概率分布,所以顺序可以改变候选集合。例如用原分布、k=2、p=0.6:
- 先
Top-k:A、B 归一化为 0.625、0.375,再Top-p,A 单独就超过 0.6,只保留 A。 - 先
Top-p:原分布需要 A、B 才达到 0.6;随后Top-k=2,仍保留 A、B。
温度也会影响 Top-p:同样 p=0.65,原分布需要 A、B,T=0.5 后 A 的概率约 0.685,单个 A 已足够。排查参数效果时,应同时看服务的处理顺序和有效配置,不能只比较请求里填写的三个数字。
项目里怎样调整
先确认模型与模式支持哪些参数,按对应模型的推荐配置建立基线,再用固定业务用例调整。每次先改一个参数,有助于看清变化来自哪里;若组合调整,应记录完整配置。
字段抽取、工具参数、SQL 等任务通常更关注输出稳定性,可以在模型支持的范围内测试较保守的采样;写作和方案发散可以测试更大的候选范围。但“要求准确就统一零温度”不是通用结论:例如 Qwen3-8B 模型卡明确建议其思考模式避免贪心解码;DeepSeek 当前 API 文档也区分不同模式下参数是否生效。
评价时检查任务正确率、结构与约束通过率、重复或退化输出,以及多次运行的差异。低温下反复产生同一个错误,仍然需要改模型、上下文、提示词或结果校验;单纯降低随机性解决不了知识和业务逻辑问题。
常见追问
Temperature=0,输出就一定完全一致吗?
贪心去掉了按概率抽样的随机选择,但仍需固定模型版本、输入、模板和服务配置。不同计算路径、数值误差或后台版本变化可能改变接近的分数,继而改变后续输出。业务需要稳定结果时,还应固定运行条件并校验结果。
调高 Temperature,能让 Top-k 已经删掉的候选回来吗?
如果该候选已被屏蔽为负无穷,后续温度缩放不会把它恢复。先执行哪些过滤、在哪一步计算 Top-p 的概率,需要看引擎实现。
这里的 Top-k 和 RAG 检索 Top-k 是一回事吗?
都表示保留前 k 项,但对象不同:采样 Top-k 作用于当前下一 Token 的候选分布;检索 Top-k 作用于文档、片段等检索结果。它们处于不同阶段。
对应教程
- 电商问数:关键词抽取与多路召回:第 5.3 节从逐 Token 生成解释温度与候选集合的区别,并将稳定输出的需求放到问数场景中;具体取值仍应结合所用模型与模式验证。
参考资料
- 国内:阿里云:文本生成:借鉴温度改变分布、Top-p 累计概率及逐项调参的说明,组织正文中的概率解释与固定业务用例调参方法。
- 国内:DeepSeek:Create Chat Completion:依据 Temperature、Top-p 在不同模式下的有效条件,说明正文中请求参数与实际生效配置的区别;该 API 的条件不泛化到所有模型。
- 国内:Qwen 团队:Qwen3-8B 模型卡:依据思考与非思考模式的采样建议,说明正文中 Qwen3-8B 思考模式避免贪心、不能统一用零温度的条件。
- 国外:Hugging Face:Generation strategies:依据贪心与单束采样的区分,并结合 采样处理器实现与组合顺序,说明正文中概率缩放、候选屏蔽、并列边界及三个参数的处理顺序与采样开关。
- 国外:vLLM:SamplingParams API 参考:依据温度、Top-k、Top-p 与种子的参数约定,并结合 零温度分支实现,说明正文中服务将 temperature=0 切换为贪心、而非在公式中除以零的处理。
相关面经
8 篇腾讯
后训练模型推理超参详解:Top-k、Top-p、Temperature、Beam Search、Thinking Mode
字节跳动
前端开发工程师Top-K和Top-P的区别,怎么调整这两个值
蚂蚁集团
如果是做实体抽取或确定的逻辑分类任务,你会怎么调整 temperature、top_p 等参数?
蚂蚁集团
Agent 开发工程师模型参数Temperature、Top-k、Top-p分别代表什么含义?它们对输出结果有什么影响?
联影
Agent 开发工程师temperature 和 top-p 分别控制大模型输出的什么属性?



