温度(Temperature)
一句话 TL;DR:温度是大模型生成时调节 softmax "陡峭度" 的单个参数。温度低,分布变尖,模型更确定(趋近 贪心);温度高,分布变平,模型更随机(趋近纯随机)。它本质是在调节输出分布的"熵"--即"创造力"vs"确定性"的旋钮。
L1 · 一句话点破
温度 $T$ 是 softmax 的一个缩放因子,作用于 logits(softmax 前的原始输出):
$$ P_T(v) = \frac{\exp(z_v / T)}{\sum_{v'} \exp(z_{v'} / T)} $$
- $T \to 0$:分布趋近 one-hot(永远选最大 logit),退化为 贪心解码
- $T = 1$:原始 softmax 分布
- $T \to \infty$:分布趋近均匀(纯随机)
温度调节"模型有多敢冒险选低概率 token"。低温度 = 保守,高温度 = 激进。
L2 · 通俗类比
调收音机的"灵敏度旋钮":
- 低温度(T=0.3):只接收最强信号台。稳定但单调,永远听一个台。
- 中温度(T=0.7):主要听强信号台,但偶尔切到附近弱台。多样但可控。
- 高温度(T=1.5):所有台都收,频繁切换。丰富但可能收到杂音。
- 极高温度(T=10):所有台信号一样强,随机乱切。杂乱无章。
对应到生成:
- T=0.3(低温):模型永远选概率最高的词。适合代码、数学、事实问答--需要确定、准确。
- T=0.7(中温):模型主要选高概率词,偶尔选次高。适合对话--既合理又有变化。
- T=1.5(高温):模型常选低概率词。适合 brainstorming、创意激发--天马行空。
- T=10(极高):模型乱选词。输出无意义。
"温度"这个名字来自统计物理。在物理学中,温度高 = 粒子运动随机性强;温度低 = 粒子运动确定。softmax 的温度参数借用这个比喻:高温 = 概率分布"热"(随机),低温 = 概率分布"冷"(确定)。
L3 · 正经定义
温度(Temperature) 是 softmax 函数的缩放参数,调节输出分布的"锐度":
$$ P_T(v) = \frac{\exp(z_v / T)}{\sum_{v'} \exp(z_{v'} / T)} $$
其中 $z_v$ 是 token $v$ 的 logit,$T > 0$ 是温度。
性质:
- $T$ 不改变 logit 的排序(最大 logit 对应的 token 概率始终最高)
- $T$ 改变概率分布的"陡峭度"
- $T \to 0^+$:$P_T \to \text{onehot}(\arg\max z)$(贪心)
- $T = 1$:原始 softmax
- $T \to \infty$:$P_T \to 1/|V|$(均匀分布)
实务典型值:
| 温度 | 行为 | 适用 |
|---|---|---|
| 0 | 贪心 | 代码、推理、评测复现 |
| 0.3 | 高确定性 | 事实问答、摘要 |
| 0.7 | 平衡 | 通用对话默认 |
| 1.0 | 原始分布 | 训练时、对比基线 |
| 1.2-1.5 | 高随机性 | 创意写作、brainstorming |
| 2.0+ | 极随机 | 几乎不用 |
温度与熵的关系:分布的熵 $H(P_T) = -\sum P_T \log P_T$ 随 $T$ 单调递增。温度直接控制输出的"不确定性"。
参考资料:
- Ackley et al., 1985 - Boltzmann Machine - 温度在神经网络中的早期使用
- Hinton et al., 2015 - Distilling the Knowledge - 温度在知识蒸馏中的应用
- Goodfellow et al. - Deep Learning 第 6.2 节
L4 · 原理深挖
4.1 温度的数学本质:调节分布的熵
温度的本质是调节输出分布的熵。考虑两个 logit 差 $\Delta = z_1 - z_2$,对应两个 token 的概率比:
$$ \frac{P_T(v_1)}{P_T(v_2)} = \exp\left(\frac{\Delta}{T}\right) $$
- $T$ 小:$\Delta/T$ 大,概率比大,分布尖锐(高概率 token 主导)
- $T$ 大:$\Delta/T$ 小,概率比接近 1,分布平坦(各 token 概率接近)
极端情况:
- $T \to 0$:$\exp(\Delta/T) \to \infty$($\Delta > 0$ 时),最高 logit 的 token 概率趋于 1,其余趋于 0。退化为 贪心。
- $T \to \infty$:$\exp(\Delta/T) \to 1$,所有 token 概率趋于 $1/|V|$。纯随机。
熵 $H$ 随 $T$ 单调递增(在 logit 不全相等时)。所以温度就是"熵调节器"。
4.2 温度的物理类比:Boltzmann 分布
温度参数的命名来自统计物理。Boltzmann 分布描述粒子在不同能量状态的占据概率:
$$ P(\text{state } i) = \frac{\exp(-E_i / k_B T)}{\sum_j \exp(-E_j / k_B T)} $$
- $E_i$:状态 $i$ 的能量
- $T$:温度
- $k_B$:Boltzmann 常数
类比到 softmax:
- logit $z_v$ 对应 $-E_i$(高 logit = 低能量 = 高概率)
- 温度 $T$ 直接对应物理温度
物理意义:
- 低温:粒子集中在低能态(基态),系统确定
- 高温:粒子均匀分布各能态,系统随机
Ackley et al., 1985 - Boltzmann Machine 把这个概念引入神经网络。现代 LLM 的温度参数是同一个概念的延续。
4.3 温度与采样策略的关系
logits = model(seq)[-1]
logits = logits / temperature # 1. 调温度
probs = softmax(logits) # 2. softmax
# 3. 可选:Top-k 或 Top-p 截断
# 4. 采样温度调节分布形状,Top-k/Top-p 截断长尾。两者互补:
- 温度:全局"软调节",所有 token 概率都调整
- Top-k/Top-p:局部"硬截断",nucleus 外 token 概率置 0
实务组合:
- 通用对话:temperature=0.7, top_p=0.9(OpenAI 风格默认)
- 事实问答:temperature=0.3, top_p=0.8
- 创意写作:temperature=0.9, top_p=0.95
- 代码/推理:temperature=0, top_p=1(纯贪心)
注意:当 temperature=0 时,分布退化为 one-hot,Top-k/Top-p 失去意义(永远选最高)。所以 temperature=0 时通常不需要 Top-k/Top-p。
4.4 训练时的温度:知识蒸馏
温度不只是推理时的参数,在训练中有关键应用:知识蒸馏(Knowledge Distillation)。
Hinton et al., 2015 - Distilling the Knowledge 提出:用高温 softmax 生成"软标签"训练小模型,让小模型学到教师模型的"暗知识"(dark knowledge)--即非正确类的相对概率。
教师模型(大): logits = [10, 5, 2, 1] # 正确类是 0
T=1: softmax = [0.997, 0.003, 0.0001, 0.00004] # 几乎只学"类 0 对"
T=5: softmax = [0.56, 0.23, 0.11, 0.10] # 学到"类 1 比类 2 更接近正确"高温让"次优类的相对关系"显现,小模型不只学"哪个对",还学"哪个接近对"。这是知识蒸馏的核心技巧,让小模型接近大模型性能。
4.5 温度的常见误区
① "温度=1 是默认,所以最好"
不是。T=1 是模型原始输出分布,但模型训练时用 T=1 的 next-token CE,不代表推理时 T=1 最优。多数对话场景 T=0.7 比 T=1 效果好(更确定、更少胡言乱语)。
② "温度越低越准确"
在事实性任务上确实。但在创意任务上,低温让输出枯燥重复。准确性和多样性是权衡,温度调节这个权衡。
③ "温度可以无限大"
理论上可以,但 T 过大(如 T>2)输出基本无意义(接近纯随机)。实务很少用 T>1.5。
④ "温度和 Top-p 是一回事"
不是。温度是全局软调节,Top-p 是局部硬截断。机制不同,常组合使用(4.3)。
4.6 温度调节的直觉
一个有用的直觉:
- 温度低:模型"自信",只选最可能的。适合需要准确的场景。
- 温度高:模型"犹豫",候选都考虑。适合需要创意的场景。
但"自信"不等于"正确"。模型可能自信地错(幻觉)。低温让模型更确定地输出它的(可能错误的)判断,不解决准确性问题。
实际使用建议:
- 从 T=0.7 开始:通用默认
- 需要更稳定:降到 0.3-0.5
- 需要更创意:升到 0.9-1.2
- 需要可复现:T=0(贪心)
L5 · 沿革与坑
沿革
- 1985:Ackley et al. - Boltzmann Machine 把物理温度引入神经网络。
- 1990s:模拟退火(simulated annealing)等算法用温度控制探索-利用权衡。
- 2015:Hinton et al. - Knowledge Distillation 用高温 softmax 做知识蒸馏,温度在训练中有关键应用。
- 2018-2020:GPT-2/GPT-3 时代,温度成为推理时标配参数。
- 2022-2023:ChatGPT 等对话 API 把温度作为用户可调参数,T=0.7 成为通用默认。
- 2024-2025:推理模型(o1、DeepSeek-R1)用 T=0 保证可复现,温度在评测中的标准化成为议题。
常见误解
❌ 误解:温度越低模型越聪明。 ✅ 真相:温度调节的是"确定性 vs 随机性",不是"聪明 vs 愚蠢"。低温让模型更确定地输出它的判断(可能错),不提升准确性。
❌ 误解:T=1 是"正确"的温度。 ✅ 真相:T=1 是模型训练时的温度,不代表推理时最优。多数对话场景 T=0.7 效果更好(4.5)。
❌ 误解:温度高能解决幻觉。 ✅ 真相:不能。高温让模型更随机,可能加剧幻觉(选了不该选的 token)。幻觉的根源是模型不知道自己不知道,温度无法解决(见 幻觉)。
❌ 误解:温度和 Top-p 二选一。 ✅ 真相:机制不同(软调节 vs 硬截断),常组合使用。OpenAI 等默认同时支持(4.3)。
❌ 误解:温度=0 等于贪心解码。 ✅ 真相:等价。T=0 时 softmax 退化为 argmax,与贪心完全相同。框架常通过 temperature=0 实现贪心。
❌ 误解:温度可以无限调高获得更多创意。 ✅ 真相:T>1.5 后输出基本无意义(接近纯随机)。创意有上限,温度过高反而破坏质量(4.5)。
面试怎么考
- "什么是温度?怎么影响生成?" --softmax 的缩放因子,调节分布熵。低温确定,高温随机(L1、L3)。
- "温度的物理含义?" --来自 Boltzmann 分布。低温粒子集中低能态(确定),高温均匀分布(随机)(4.2)。
- "温度=0 和贪心什么关系?" --等价。T=0 时 softmax 退化为 argmax(4.1)。
- "温度和 Top-p 的区别?" --温度是全局软调节,Top-p 是局部硬截断。常组合使用(4.3)。
- "温度在训练中有什么用?" --知识蒸馏。高温 softmax 生成软标签,让小模型学"暗知识"(4.4)。
- "通用对话温度怎么设?" --T=0.7 是通用默认。需要稳定降,需要创意升(4.5)。
延伸阅读
- 📄 Ackley et al., 1985 - Boltzmann Machine
- 📄 Hinton et al., 2015 - Distilling the Knowledge
- 📝 Goodfellow et al. - Deep Learning 第 6.2 节
上一篇:Top-p 采样 -- 自适应窗口的采样策略。下一篇:幻觉 Hallucination -- 模型为什么一本正经胡说八道。