Knowledge Distillation
背景
知识蒸馏(KD)是想将复杂模型(teacher)中的dark knowledge迁移到简单模型(student)中去,一般来说,teacher具有强大的能力和表现,而student则更为紧凑。通过知识蒸馏,希望student能尽可能逼近亦或是超过teacher,从而用更少的复杂度来获得类似的预测效果。Hinton在Distilling the Knowledge in a Neural Network中首次提出了知识蒸馏的概念,通过引入teacher的软目标(soft targets)以诱导学生网络的训练。近些年来出现了许多知识蒸馏的方法,而不同的方法对于网络中需要transfer的dark knowledge的定义也各不相同。
论文
1. Do Deep Nets Really Need to be Deep? 【NIPS2014】
动机
shallow net在参数较少或者一样的情况下能否和deep net达到相近的效果?
方法
1)softmax的输入是logits、输出是probability,文中提出训练shallow net的时候使用deep net的logits作为label,Hinton称之为logit匹配。
2)训练shallow net时在logits上使用L2 Loss监督训练。
思考
1)deep net更robust,可以对一些错误样本进行矫正,使shallow net学习更容易;同时 deep net学习能力更强,可以学习一些比较难的任务,并将其转换成更加容易的soft label给小模型进行学习。
2)为什么不使用probability作为标签呢?
假如[2e-9, 4e-5, 0.9999]是softmax的三个probability,用这个作为shallow net的目标,因为各个probability之间的差异太大,容易使shallow net注意力集中在较大的probability上,忽略值较小的probability。并且不同的logits通过softmax之后可能会有相近的表达,因此差别会被缩小,如[-10, 0, 10]和[10, 20, 30],显然模型对两者的特征表达是大不相同的。
3)logits比hard label包含更丰富的信息,其中包含deep net本身的知识提炼。
2. Distilling the Knowledge in a Neural Network【NIPS2015】(Hinton系统诠释蒸馏)
动机
ensemble模型部署代价太高,直接训练小模型效果不够
方法
该方法采用softmax层内特征匹配的策略,其本质是使用softmax的输出作为监督,但为了使得到的得分vector更soft,在softmax层加上了蒸馏温度T,使蒸馏的性能提升。
步骤:
1)在T=1训练teacher;
2)在高温下利用teacher softmax的输出概率作为soft label,与hard label进行融合来监督student,对两者的loss进行加权。
3. FITNETS:Hints for Thin Deep Nets【ICLR2015】
动机
deep是DNN主要的功效来源,之前的工作都是用较浅的网络作为student net,这篇文章的主题是如何mimic一个更深但是比较小的网络。
方法
使用的方法直觉上来讲也是直接的:既然网络很深直接训练会很困难,那就通过在中间层加入loss的方法,通过学习teacher中间层feature map来transfer中间层表达的知识,文章中把这个方法叫做Hint-based Training。
训练分为两个stage:
stage1(Hints Training): 选取teacher的中间层作为guidance,对student的中间层进行监督学习,通常两者的维度不一样,所以需要一个额外的线性矩阵或卷积层去进行维度变换,达到维度一致,然后使用L2 Loss进行监督。
stage2(Knowledge Distillation): 采用论文2中KD对整个student进行知识迁移。
结果
1)小而深的网络可以达到比teacher更好的效果,并且在参数量28分之一的前提下,效果高于论文2中的方法;
2)作者做了其他实验:通过深度监督(添加额外的中间层直接进行分类的loss)去学习一个小而深的网络,发现无法正常学习。因此作者得出结论:添加teacher中间层的特征作为student学习对象能够帮助其学习一个deeper的网络,而直接使用hard targets的分类信号去监督中间层则难以起到帮助。
4. Paying More Attention to Attention: Improving the Performance of Convolutional Neural Networks via Attention Transfer【ICLR2017】
动机
将feature map作为知识直接从teacher transfer到student过于生硬,效果不佳。因此,文章提出将attention map作为知识从teacher transfer到student,希望让student关注teacher所关注的区域。
方法
文章中attention map定义如下:,即将feature map不同通道的feature plane取绝对值进行power操作然后相加,拉近teacher和student的attention map之间的欧式距离。attention map可以看作全激活feature map的summary,因此会比直接transfer feature map效果好。
5. A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning【CVPR2017】
动机
过去的知识蒸馏均是利用soft targets或者利用中间特征做hint来进行知识的transfer,本文提出:神经网络的知识在于如何解决从一个输入到输出的映射,是一个从输入到输出的一个feature flow(即层与层之间的特征关系),teacher要将这个flow transfer给student。层与层之间的特征关系更能表达一种提取的手段,让student学到这种手段更加像授人以鱼不如授人以渔。
方法
文中定义了FSP Matrix矩阵来刻画层与层之间的特征关系。具体做法是:对于具有相同分辨率的特征图,低层和高层特征图的channel两两做内积,然后将结果填入FSP Matrix对应位置。FSP Matrix计算过程:
其中,F1、F2是低层、高层特征图,h、w是特征图的长宽,i、j是低层、高层特征图的channel index,x和W是当前的输入和参数。
然后用L2 Loss去拉近teacher和student的FPS matrix之间的距离,定义如下:
文章采用resnet作为实验的backbone,对teacher和student对应的stage计算FSP Matrix,然后用L2 Loss去拉近FSP Matrix之间的距离,以达到知识迁移的目的。
6. Knowledge Distillation in Generations: More Tolerant Teachers Educate Better Students【AAAI2019】
动机
硬标签会导致模型产生过拟合现象,soft label对于模型的泛化能力有所帮助。文中指出:一个更加tolerant的teacher(即使得teacher的输出更加soft一些),尽管在一定程度上降低了teacher的精度,但能给student更高的泛化学习的宽容度,反而能带来student的提升。常用的方法有label smoothing regularization(lsr)和confidence penalty(CP)两种方法,但其缺点是考虑了所有的类。本文提出了一个更合理的方法,没有计算所有类的额外损失,而是挑选了几个具有最高置信度分数的类。
方法
1)训练teacher时,对teacher的loss加了一项约束:置信度top1和topK其余K-1个平均值之间的gap,命名为top score difference。2)训练student时,用1)得到的teacher的soft label与hard label融合;
论文中实验在CIFAR-100和ILSVRC2012分类数据集上涨点3%~8%不等。