1 intro
- 目前已有的蒸馏方法中,都会采用带有温度超参的 KL 散度作为知识蒸馏的Loss
- 其中温度超参数τ的大小控制了教师神经网络和学生神经网络的平滑程度
- τ越大,结果越平滑(最终趋向于label smoothing)
- τ越小,结果越尖锐(最终趋向于one-hot label)
- ——>不同的τ会产生不同的知识蒸馏结果
- 现有工作普遍的方式都是采用固定的温度超参
- ——>需要通过不断调参获得最佳τ,非常低效
- 一直保持静态固定的温度超参对学生模型来说不是最优的。
- 基于课程学习的思想,人类在学习过程中都是由简单到困难的学习知识。
- 那么在蒸馏的过程中,也会希望模型一开始蒸馏是让学生容易学习的,然后难度再增加。难度是一直动态变化的。
那么,在蒸馏任务里,能不能让网络自己学习一个适合的动态温度超参进行蒸馏,并且参考课程学习,形成一个蒸馏难度由易到难的情况?
——>本文便提出了CTKD,Curriculum Temperature for Knowledge Distillation
2 模型
2.1 动态学习τ
- 这里使用了对抗学习的思路
- 学生网络的训练目标是最小化 KL loss
- τ也是一个可学习参数,目标是最大化KL Loss
- 使用一个梯度反向层GRL(gradient reversal layer)来反像传播τ的梯度
2.2 对抗效果增加
- 随着训练的进行,对抗的作用要不断增加,达到课程学习的效果
- 不断增加τ反向梯度的权重λ(使得增大KL loss的目标越来越大),以达到增加学习难度的作用
- 论文使用cos的方式,让lambda从0增加到1
2.3 τ的两种实现方式
- 全局方法
- 只产生一个τ
- 实例级别方法
- 每个单独的样本都产生一个τ
- 比如一个batch中有128个样例,那么就生成128个τ
- 每个单独的样本都产生一个τ
3 实验结果
- CIFAR-100
- 作用在已有的方法上,查看提升效果
- 作用在已有的方法上,查看提升效果
- ImageNet