资讯

温度系数 Temperature 是什么?决定模型多敢发挥

2026-11-065 分钟阅读百科
TL;DR温度系数(Temperature)是大模型生成文字时的一个采样参数,用来控制模型挑下一个词时有多保守:数值低,模型倾向于挑概率最高的词;数值高,概率偏低的词也有机会被选中。

温度系数(Temperature)是大模型生成文字时的一个采样参数,用来控制模型挑下一个词时有多保守:数值低,模型倾向于挑概率最高的词;数值高,概率偏低的词也有机会被选中。可以把它想成去熟悉的餐馆点菜:温度低,你每次都点招牌菜,稳妥但总是一个味;温度高,你愿意翻到菜单后半页碰碰运气,可能有惊喜,也可能踩雷。

它是怎么回事:一个除数,把概率拉尖或压平

模型每生成一个词(严格说是一个 token),会先给词表里的每个候选打一个原始分数,叫 logit,再用 softmax 换算成加起来等于 1 的概率,最后按概率抽一个词。温度就插在这两步之间:先把每个 logit 除以 T,再做 softmax。公式是 p_i = exp(z_i / T) / Σ exp(z_j / T),z 是 logit,T 是温度。Hinton 等人 2015 年的论文用的就是这个形式,并指出 T 通常取 1,取更大的值会得到更“软”的概率分布。

拿三个候选词举例,logit 分别是 2、1、0。T 等于 1 时概率约为 66.5%、24.5%、9.0%;T 降到 0.5,约为 86.7%、11.7%、1.6%,第一名几乎包揽;T 升到 2,约为 50.6%、30.7%、18.6%,差距明显缩小。除以正数不会改变排名,变的只是第一名领先多少。Google 的文档对 T 等于 0 的描述很直白:总是选概率最高的那个词。

从哪来的:从物理课本一路走到大模型

名字来自统计物理里的玻尔兹曼分布:温度高,系统更容易跳到高能量状态;温度低,就集中在低能量状态。1985 年 Ackley、Hinton 和 Sejnowski 在 Cognitive Science 发表《A Learning Algorithm for Boltzmann Machines》,把它搬进神经网络,玻尔兹曼机因此得名。

让温度在深度学习里广为人知的,是 2015 年 Hinton、Vinyals 和 Dean 的《Distilling the Knowledge in a Neural Network》:大模型用较高温度输出柔和的概率,小模型学这些“软目标”,训练完再调回 1。到了文本生成,Holtzman 等人 2019 年的《The Curious Case of Neural Text Degeneration》(ICLR 2020)指出,纯采样会掉进低概率词组成的“不可靠的长尾”,文字容易跑偏;调低温度能提升质量,代价是多样性下降。他们提出的核采样(nucleus sampling,即 top-p)就是为了绕开这个两难。

现在在哪用:各家的范围和建议并不一样

OpenAI 的 Chat Completions 接口里,temperature 取值 0 到 2,默认 1,文档还建议 temperature 和 top_p 只改一个。到了推理模型,这套参数被收紧:OpenAI 在 GPT-5.2 的说明里写明,temperature、top_p、logprobs 只有在推理强度为 none 时才支持,其他推理强度或更早的 GPT-5 系列带上这些字段会报错。

Claude 的 API 文档写的默认值是 1.0,范围 0.0 到 1.0,分析类任务靠近 0,创作类靠近 1,并提醒即使设成 0 结果也不会完全确定。不过同一份文档现在把 temperature 标成了已弃用:Claude Opus 4.6 之后发布的模型不支持自行设置,传 1.0 会被接受,其他数值返回 400 错误。Gemini 3 没有禁用这个参数,但 Google 的文档强烈建议保持默认的 1.0,并提醒调到 1.0 以下可能出现循环输出或表现变差,复杂数学和推理任务尤其明显。

还把温度当主力旋钮的,是 DeepSeek 和开源模型。DeepSeek 的 API 文档给出默认值 1.0,并按场景列了推荐值:代码和数学 0.0,日常对话和翻译 1.3,创意写作和诗歌 1.5。Qwen3 的模型卡则按模式给配置:思考模式用 Temperature 0.6、TopP 0.95、TopK 20、MinP 0,并提醒不要用贪心解码,否则可能性能下降并陷入无尽重复。

容易混的地方:别把它当成“创造力开关”

最常见的误解,是把温度当成聪明程度或创造力的开关。它只改变模型已有概率分布的形状,不会让模型多知道什么。高温给了低概率词更多机会,有时是新鲜的措辞,有时就是跑题。第二个误解是温度 0 等于每次输出一模一样,Anthropic 的文档明确说了并不完全确定。第三,温度和 top_p、top_k 不是一回事:后两者先砍掉候选词,温度调整剩下候选的概率形状,Google 的参数说明里温度采样发生在 topK 和 topP 筛选之后。第四,数值不能跨家直接套用,DeepSeek 推荐的 1.3 和 1.5,就超出了 Claude 文档里 0 到 1 的范围。

我们 AI主线 的建议是:用之前先翻目标模型当前的官方文档,看这个参数还开不开放、推荐值是多少;能用默认值就用默认值,要调一次只动一个参数,代码、数据抽取这类要求严格的输出,另外做校验,别全押在温度上。