【知识蒸馏】 Knowledge Distillation from A Stronger Teacher

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、摘要

近年来,视觉模型的精度凭借更高级的训练策略和模型结构取得了大幅度的提升,但更新颖的模型也给知识蒸馏的应用带来了许多挑战。当前大部分知识蒸馏方法仍然是在传统的基准训练策略和模型上进行研究和实验,而在精度更高的新颖模型和策略下的表现甚至低于不使用知识蒸馏。以往的工作大多将此归结为模型的容量差异(capacity gap)导致的蒸馏效果下降。本文将介绍来自商汤研究团队和悉尼大学等机构的研究人员提出的一种logits层面的知识蒸馏算法DIST。该工作分析了不同大小及不同训练策略得到的模型的输出差异,并提出了一种新的logits蒸馏损失函数用于弱化这些差异,从而更关注那些对任务有意义的信息的蒸馏。实验结果表明,DIST不仅在基准模型和训练策略上取得了知识蒸馏的新高度,同时在目前SOTA的训练策略及模型下相较以往方法取得了大幅提升。

二、动机

题目中 “更强的教师模型”,有两个含义:尺寸更大,数据增强策略更先进
获得更好的知识蒸馏性能的方式之一是尝试不同类型的教师模型 (比如说使用更大的教师模型或者更强的训练策略),作者在本文中认为:应该借助 “更强的教师模型” 进行知识蒸馏。而针对什么是 “更强的教师模型”,作者推广实验给出了一些建议:
除了扩大模型规模,还可以通过先进的训练策略,如标签平滑和数据增强 (label smoothing and data augmentation),以获得更强的教师模型。但是仅仅有这些是不够的。配备了更强的教师模型之后,学生模型在正常 KD 下的表现可能会下降,甚至性能还不如不用 KD。
为什么是这样呢?作者觉得:
当将教师和学生的训练策略转换为更强的训练策略时,教师和学生之间的差异往往会变得相当大。在这种情况下,通过 KL 散度来精确恢复预测可能具有挑战性,并导致 KD 的失败。
所以,作者在本文的动机是:
保留教师和学生模型之间的预测关系非常重要。在将知识从 teacher 传给 student 时,我们其实真正关心的是教师模型的偏好 (预测的相对 Rank),而不是去恢复其预测结果的绝对值。教师预测与学生预测之间的相关性有利于放松 KL 散度的精确匹配,提取内在关系 (intrinsic relations)。

三、知识蒸馏创新点

3.1 DIST: teacher与student的松弛匹配

在介绍本工作提出的KD loss之前,我们先分析一下为何现有的KL div. loss在分布差异大时表现不好。如公式1,KL散度对两个概率分布进行exact match,也就是说,当且仅当两个分布的值完全一致时,KL散度才能达到最优。这样会导致(1)KL散度对分布变化敏感:当teacher的分布发生改变时,student也需要作出相同的改变以适应teacher,而如上文所分析,这样的改变对于student而言太难了;(2)与使用hard label的交叉熵损失冲突:KL散度想要使得分布接近teacher,而交叉熵想让概率接近0或1。
在这里插入图片描述
公式1 KL Divergence Loss
因此,本文从分类任务的目的出发,想要降低KD loss对student的约束,同时不影响student从teacher上学到有益的知识。对于分类任务中teacher的输出,相比关注每个分类具体的置信度值的大小,我们更关心它们之间的相对关系,如:哪个分类的置信度最高、分类a的置信度比分类b高还是低…

那么如何实现这种松弛的匹配(relaxed match)呢?本工作使用了一种简单常见的尺度及平移不变(scale-and-shift invariance)的match function —— Pearson Distance,见公式2。
在这里插入图片描述
公式2 Pearson Distance and Pearson Correlation Coefficient
通过使用公式2替换掉原有的KL div. loss,我们不再要求teacher和student的输出变得完全一致,而允许它们的输出在尺度和相位上发生变化,因此约束更松弛。
在这里插入图片描述
图3 点对点匹配 (KL div.) vs. 尺度和平移不变匹配 (Pearson distance)

3.2 结合类间关系与类内关系的KD loss

除了类间的关系,作者还考虑到了单个样本中类内的关系。作者认为每个类的,多个实例的,预测分数也是有用的。
举个例子, 我有三张图片, 里面的内容分别是 “猫”, “狗”, 和 “飞机”, 它们对于 “猫” 这个类别的预测结果分别是e,f,g 。那么, 猫图的对应 “猫” 类别的预测结果应该是最大的, 飞机那个图对应 “猫” 类别的预测结果应该是最小的。所以, e>f>g的关系也应当由教师模型传给学生。
换个例子, 我有两张图片, 里面的内容分别是 “猫1”, “猫2”, 它们对于 “猫” 这个类别的预测结果分别是e1,e2 。如果猫1图的对应 “猫” 类别的预测结果较大, 猫1图的对应 “猫” 类别的预测结果较小, 那么, e1>e2的关系也应当由教师模型传给学生。
受到以上思想的启发,作者也觉得应该进行类内匹配:
在这里插入图片描述
在这里我们称其为inter-class relation loss,因其衡量的是分类间的大小关系(如下图红色虚线框)。我们进一步推广,实际上teacher和student在同一个分类不同样本之间的关系也值得学习,如图4。因此,我们提出了类内关系损失(intra-classrelation loss)用于学习这种关系(如下图橙色虚线框)。

在这里插入图片描述

四、实验

4.1 目标检测

我们进一步研究了DIST在下游任务中的有效性。我们在MS COCO对象检测数据集上进行实验,并简单地利用我们的DIST作为对类的最终预测的额外监督。根据,我们使用相同的标准训练策略,并使用ResNeXt-101骨干级联掩码R-CNN作为ResNet-50骨干Faster R-CNN两阶段学生的老师;对于ResNet-50骨干的一级视网膜网,使用ResNeXt-101骨干的视网膜网作为教师。

如表6所示,我们的DIST在COCO验证集上获得了具有竞争力的结果。为了进行比较,我们在与DIST相同的设置下训练vanilla KD,结果表明,通过简单地替换损失函数,我们的DIST显著优于vanilla KD。此外,通过结合DIST与mimic结合,使教师和学生的FPN特征之间的均方误差最小化,我们甚至可以超越最先进的用于物体检测的KD方法。
在这里插入图片描述

4.2 消融实验

1.类间和类内相关性的影响
本文提出了两类关系:类间关系和类内关系。为了验证每个关系的有效性,我们分别用这些关系进行实验训练学生。表8的结果表明,类间关系和类内关系都优于常规KD;此外,将它们结合在一起可以进一步提高性能。
在这里插入图片描述2.类内关系对vanilla KD的影响
为了研究类内关系在vanilla KD中的有效性,我们采用实验来训练我们的DIST,使用KL散度作为关系度量,记为DIST (KL div.)3。如表8所示,在vanilla KD中加入类内关系也能提高性能(从71.21%提高到71.62%)。然而,当学生只接受类内相关训练时,使用KL散度的改善不如使用Pearson相关显著(70.61% vs. 71.55%),因为类内分布的均值和方差可能是不同的。
3.仅训练KD损失学生的效果
仅用KD损失训练学生能更好地反映监督信号的蒸馏能力和信息丰富性。如表9的结果所示,当学生只接受KD损失的训练时,我们的DIST显著优于vanilla KD。在不使用ground-truth标签的情况下,它甚至可以超过独立训练的准确性,这表明了我们的DIST在提取那些真正有益的关系方面的有效性。
在这里插入图片描述


总结

本文来源于一个观察,即:当教师模型的体积增大时进行知识蒸馏过程,学生模型的性能提升并不明显;当使用更强的训练策略 (数据增强) 进行知识蒸馏过程,学生模型的性能提升也不明显。这启发作者的思考,可能是知识整理过程中经常使用的 KL 散度,这种精确匹配的模式 (即当且仅当教师和学生的输出完全相同时,损失达到最小值) 就显得过于苛刻。所以作者在本文的直觉是搞一种轻松的方式来匹配老师和学生之间的预测。所以本文提出 DIST,一种包含了类内关系和类间关系的蒸馏方法,在图像识别,目标检测和语义分割任务中均取得了不错的表现。

参考:
NeurIPS 2022 | 商汤开源DIST提升SOTA模型的KD精度
NeurIPS 2022|知识蒸馏想要获得更好的性能?那就来一个更强的教师模型吧!

猜你喜欢

转载自blog.csdn.net/AaaA00000001/article/details/129144417
今日推荐