2017年CVPR论文A Gift from Knowledge Distillation:Fast Optimization, Network Minimization and Transfer Learning。
论文地址:
GitHub:
摘要
提出了将蒸馏的知识看作成一种解决问题的流,它是在不同层之间的feature通过内积计算得到的
这个方法有三个好处:
student网络可以学的更快
student网络可以超过teacher网路的性能
可以适用于迁移学习(teacher和student属于不同的任务)
本文提出以下几个观点:
- 从教师网络萃取知识不一定只从最后的softmax层这一层,还可以从多个层提取。
- 将从教师网络学习到的知识用来对学生网络进行初始化,并在之后用主流的方法进行训练。
-
因为FSP矩阵又两个层的特征得来,所以如果尺寸不同的话,可以用最大池化层拟合。
-
用Gram矩阵来计算loss函数。Gram矩阵是计算每个通道i与通道j的feature map的内积。Gram matrix的每个值都可以说是代表i通道的feature map与通道j的feature map互相关的程度。如下式:
-
单纯的教会学生模仿老师的生成特征图是个硬约束会让网络变得不灵活,所以应该致力于教会学生的学习这一过程。
动机
过去的知识蒸馏均是利用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之间的距离,以达到知识迁移的目的。
- 本文的贡献
提出了一种好的知识蒸馏的方法
这种方法对快速优化有帮助
这种方法可以显著提升student网络的性能
这种方法适用于迁移学习