← 返回题目列表

知识蒸馏中的 temperature 有什么作用?

中等 第 19 / 25 题 更新于 2026/09/18
模型压缩AI技术大模型面试题

简化版

Temperature T 用来软化教师和学生的 Logits:T 越大,概率分布越平,非最大类别之间的相对关系更明显,这些“暗知识”能告诉学生哪些错误类别更相似。T=1 是原始 Softmax,T 过高则趋近均匀,信号变弱。

蒸馏通常同时优化软标签损失和真实硬标签损失,并把软损失乘 T²,补偿 Softmax 导数随温度缩小。T 与软/硬损失权重需在验证集联合调参,不能照搬固定值。

详细版

p_i(T) = exp(z_i / T) / Σ_j exp(z_j / T)
L = alpha × T² × KL(p_teacher(T) || p_student(T))
  + (1-alpha) × CE(y, p_student(1))

当教师极度自信时,较高 T 会暴露次优类别关系;当类别少、教师校准差或生成词表巨大时,过高 T 可能把大量噪声抬升。应观察验证质量、KL、校准和不同难度切片。

温度分布特点常见风险
T<1更尖锐接近硬标签,暗知识少
T=1原始分布教师过度自信仍尖
1<T<高值更平滑通常适合搜索
极高 T接近均匀有效对比被稀释

完整版教学

1. Temperature 改变了什么

Softmax 前把 Logit 除以 T。T 增大时类别差异被压缩,尾部概率上升;T 减小时分布更尖锐。

它不改变 Logit 排序,但改变不同类别之间的相对概率和梯度。

2. 什么是暗知识

硬标签只说正确类别是谁;教师软分布还表达“猫比汽车更像狗”。这种类别相似性可帮助小模型学到决策边界。

如果教师输出几乎 one-hot,次优类别差异难以传递,升温可放大可见度。

3. 公式如何理解

p_i(T) = softmax(z_i / T)

例如 Logit [6, 3, 1] 在 T=1 时很尖,T=3 后第二、第三类获得更明显概率,但第一类仍最大。

4. 为什么常乘 T²

升温会让 Softmax 对 Logit 的梯度缩小,蒸馏项梯度量级大致随 1/T² 变化。乘 T² 用于保持不同 T 下软损失梯度可比。

具体框架的 KL reduction 和实现方向会影响常数,需检查代码,不能只背公式。

5. 软标签与硬标签为何并用

教师可能错误或带偏差,真实标签提供锚点;软标签传递类别结构。alpha 控制两者权衡。

教师情况建议倾向
教师明显强且校准好提高软损失权重
标签高可信、教师偶有错保留较强硬损失
无人工标签依赖验证与过滤
教师学生差距大可能需中间教师/特征蒸馏

alpha 与 T 共同影响梯度,必须联合搜索。

6. T 太低会怎样

分布接近原始尖锐输出,蒸馏退化为模仿教师 Top-1,学生得到的类别关系有限。

若教师本身校准好且任务类别边界明确,T=1 也可能足够,不能假设升温必然提升。

7. T 太高会怎样

概率趋于均匀,教师重要偏好被稀释;大量低概率错误类别被抬高,可能向学生注入噪声。

在超大词表语言模型中,这一点更明显,因此可考虑 TopK Logits、序列蒸馏或针对任务的候选集合。

还应观察教师分布熵与学生梯度:若不同类别概率几乎相同、软损失梯度很小,继续升温已没有有效监督价值。

8. 分类与生成任务有何区别

分类任务类别固定,完整 Soft Logits 易保存;生成模型每个 Token 有巨大词表和长序列,Logit 蒸馏存储/计算昂贵。

生成场景常使用教师生成序列做硬目标,或在线获取 TopK Logits,并配合隐藏层/注意力蒸馏。

TopK 蒸馏需妥善处理未保存词表的剩余概率质量;直接重新归一化可能夸大候选概率,应在实现和评测中保持一致口径。

9. 教师校准如何影响温度

过度自信教师可通过升温暴露更多结构,但温度不能修正系统性错误。先在独立集评估教师准确率与校准。

若教师在某切片偏差严重,应过滤、换教师或降低该切片软损失,而不是无限提高 T。

10. 如何选择温度

在合理网格如 1、2、4、8 上搜索,同时调 alpha;固定数据、训练预算和 Seed,多次运行看稳定性。

选择依据是独立验证任务指标、校准、安全和长尾,不是训练 KL 最低。学生容量变化后需重新调参。

11. 是否可以动态温度

可按教师熵、样本难度或类别调整 T:教师太尖时升温,分布本就不确定时避免过度平滑。

动态策略增加复杂度,需与固定 T 基线比较,并限制范围以防异常样本产生极端梯度。

例如按教师熵分桶选择少数温度档位,比为每个样本连续预测 T 更易复现与部署;每个桶仍需独立检查质量和样本规模。

12. 实现中常见错误

教师和学生必须用同一 T 计算软分布;硬标签 CE 通常仍用 T=1。教师 Logits 应停止梯度。

soft_t = softmax(teacher_logits / T).detach()
log_s = log_softmax(student_logits / T)
loss_kd = kl_div(log_s, soft_t) * (T * T)

确认 KL 的参数方向与 reduction,避免符号/尺度错误。

13. 如何做实验诊断

记录硬损失、软损失、梯度范数、教师/学生熵和各难度切片表现。若高 T 下训练稳定但验证退化,可能在学习尾部噪声。

对比无蒸馏、T=1 和多组 T,并检查同等训练预算;上线还要验证实际延迟和成本收益。

Temperature 的作用是控制教师概率结构暴露多少,而不是一个越大越能传递知识的旋钮。

14. 常见误区与追问

  • 误区:T 越高暗知识越多。 极高会趋于均匀并放大噪声。
  • 误区:蒸馏只需要软标签。 硬标签可约束教师错误。
  • 误区:乘 T² 是经验装饰。 它用于补偿梯度尺度变化。
  • 误区:所有任务用同一温度。 教师校准、类别数和学生容量不同。
  • 误区:训练 KL 最低就是最优。 应看独立任务、校准和安全指标。
  • 追问:语言模型为何常不用全 Logits? 词表×序列存储和计算成本很高。
  • 追问:如何选择 T? 与 alpha 联合网格搜索并做切片验证。

15. 加强记忆

  1. 先记公式:Logit 除以 T。
  2. 再记效果:T 大更平,T 小更尖。
  3. 再记暗知识:次优类别关系。
  4. 再记 T²:补偿软损失梯度尺度。
  5. 再记双损失:软教师加硬标签。
  6. 再记边界:高温均匀、低温接近硬标签。
  7. 最后记调参:T 与 alpha 联合,以独立验证为准。