2023 AAAI Curriculum Temperature for Knowledge Distillation
简介
在蒸馏任务中,能否让网络自主学习一个适合的温度调节参数进行蒸馏,并同时借鉴课程学习的思想,逐步提升蒸馏难度?在此基础上,我们提出了一种简洁有效的动态温度调节蒸馏方法,命名为CTKD。

论文链接:
https://arxiv.org/abs/2211.16231
开源代码:
https://github.com/zhengli97/CTKD
一、 背景问题
在现有蒸馏方法中,普遍采用带有温度超参的KL散度损失函数进行计算,从而实现教师模型与学生模型之间的知识蒸馏,公式如下:


而现有工作普遍的方式都是采用固定的温度超参,一般会设定成4。

那么这就带来了两个问题:
各不相同的教师学生模型在KD过程中,最优超参不一定为4。为了找到这个最佳超参,需要遍历所有可能的组合,计算量极大,耗时较长。
- 固定不变的温度参数对模型并非最佳选择。基于课程学习理论,人类的学习过程通常由简单知识逐步向复杂知识过渡。在蒸馏过程中,我们希望模型在初期蒸馏时能够使学生易于学习知识,随后逐步增加难度。难度应为动态变化的。
于是一个自然而然的想法就冒了出来:
在蒸馏任务中,是否可以让网络能够自主学习适合的温度调节参数进行蒸馏,并通过借鉴课程学习的思路,从而形成蒸馏难度逐步提升的体系?
于是我们就提出了CTKD来实现这个想法。
二、方法
τ在蒸馏过程中由两个分布之间的KL Divergence来控制,从而导致模型学习效果的变化。我们可以通过让网络自动去学习一个合适的τ值来实现这一目标。
于是以上具体问题就直接可以转化成以下的核心思想:
在蒸馏过程中,学生网络被训练以降低KL loss,而教师网络T作为一个可学习的参数,则被训练以提升KL loss,从而模拟对抗过程,提升训练难度。随着训练进程的推进,对抗作用会逐步增强,有助于促进课程学习的效果。
这一操作的实现可以非常便捷地借助梯度反向层GRL (Gradient Reversal Layer)这一工具,用于反向调整可学习超参T的梯度,从而能够有效实现对抗目标。通过逐步提升反向梯度的权重λ,可以显著提高模型的训练难度。
CTKD的论文的结构图如下:

Fig.1 CTKD网络结构图
CTKD方法可以简单分为左右两个部分:
1. 对抗温度超参T的学习部分。
该系统仅包含两个核心模块,包括梯度反向机制GRL,通过温度超参T的梯度进行反向传播,以及可学习的温度超参T。
对于温度超参T的设置,同样有两种方案可供选择,其中第一种方案是全局策略 (Global Temperature),仅设置一个温度参数T,代码实现极为简便,仅需一条指令:

第二种是基于实例的温度调节机制(Instance-wise Temperature),即每个样本都会对应生成一个温度参数T。在处理一个batch时,其中包含128个样本,每个样本都会对应生成一个温度参数T。代码实现相对简单,具体架构由两层卷积层构成的多层感知机(MLP)完成。
两种方案的对比图如Fig.2所示。

Fig.2 两种不同的可学习温度超参实现。
2. 难度逐渐增加的课程学习部分。
随着训练的进行,不断增加GRL的权重λ,达到增加学习难度的效果。
在论文的实现里,我们直接采用Cos的方式,让反向权重λ从0增加到1。
以上就是CTKD的全部实现,非常的简单有效。
概述该方法的主要内容,CTKD主要由两个关键模块组成,梯度反向层GRL和温度预测模块。CTKD方法能够作为即插即用的插件集成到现有的蒸馏方法中,显著提升性能。
三、实验结果
三个数据集:CIFAR-100,ImageNet和MS-COCO。
CIFAR-100上,CTKD的实验结果:

作为一个即插即用的插件,应用在已有的SOTA方法上:

在ImageNet上的实验:

在MS-COCO的detection实验上:

温度超参的整体学习过程可视化:

从图中可以看出,CTKD在动态学习过程中展现出T的整体特性。将其应用于多种现有的蒸馏方案,不仅能够显著提升性能,而且具有广泛的适用性。
四、总结
本文构建了一种基于动态温度超参的蒸馏新框架CTKD,该框架在学生模型的学习过程中,可学习的温度超参被训练以对抗的方式最大化蒸馏损失。通过可学习温度超参,CTKD将蒸馏任务组织成了一个由浅入深的序列,实现了显著的提升效果。同时,该方法可作为易于集成的插件,应用于现有的SOTA方法,带来显著的提升效果。
作者:李政
来源:知乎【 https://zhuanlan.zhihu.com/p/595735843】
Illustration by Manypixels Gallery from IconScout
