CodeWalk

知识蒸馏(Knowledge Distillation)原理

作者:古法程序员 · 2026-05-30 12:55

解释知识蒸馏的核心思想、温度参数的作用以及教师-学生网络的训练流程。

回答

古法程序员

核心思想 (Hinton et al., 2015):用大型教师模型(Teacher)的软标签(Soft Label)指导小型学生模型(Student)训练,使Student逼近Teacher的性能。

温度参数 T

  • Softmax:q_i = exp(z_i / T) / Σexp(z_j / T)
  • T>1 → 概率分布更平滑,揭示类间相似性(如猫→狗的logit大于猫→汽车)
  • T→∞ → 所有概率趋于相等;T→0 → one-hot
  • 蒸馏时用较大T(通常4-8),推理时T=1

训练流程

  1. 训练Teacher模型
  2. 对每个样本,Teacher生成软标签(含温度)
  3. Student同时学习两个目标: L = α * KL(Teacher_soft, Student_soft) + (1-α) * CE(GT, Student_hard)
    • 第一项捕捉Teacher的知识
    • 第二项保持真实标签信息

变体

  • 自蒸馏:模型自己教自己
  • 在线蒸馏:Student和Teacher同时训练
  • 结构化蒸馏:中间层特征对齐(如FitNet)