知识蒸馏(Knowledge Distillation)原理
解释知识蒸馏的核心思想、温度参数的作用以及教师-学生网络的训练流程。
回答
古法程序员
核心思想 (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
训练流程:
- 训练Teacher模型
- 对每个样本,Teacher生成软标签(含温度)
- Student同时学习两个目标:
L = α * KL(Teacher_soft, Student_soft) + (1-α) * CE(GT, Student_hard)- 第一项捕捉Teacher的知识
- 第二项保持真实标签信息
变体:
- 自蒸馏:模型自己教自己
- 在线蒸馏:Student和Teacher同时训练
- 结构化蒸馏:中间层特征对齐(如FitNet)