目录
摘要
将知识迁移看成一种分布匹配问题
通过用一种新的损失函数最小化teacher与student网络间的Maximum Mean Discrepancy (MMD) metric来解决这个分布问题
引言
- 出发点
神经元具有知识选择性特性,比如神经元只对特定的区域或者样本感兴趣,所以作者提出了对齐teacher和student网络间的神经元选择样式分布
最终的损失函数为交叉熵损失和MMD的和
- 本文的贡献
提出了一种新的知识迁移的观点(对其选择样式分布),并提出了新的名叫 Neuron Selectivity Transfer (NST)的蒸馏的方法
在很多数据集上测试,并证明了提出的方法有效
表明提出的方法与其他的知识蒸馏的方法结合
表明知识迁移的方法可以帮助学习更好的特征,并且在其他的视觉任务中(比如目标检测)也可以获益
相关工作
深度网络压缩与加速
网络裁剪:
小数量级的权重是不重要的,可以裁剪,需要特殊的实现
将裁剪看作子集选择和稀疏优化问题
量化和低秩近似
这些方法都可以与作者提出的方法结合
知识蒸馏
KD的优点:软标签一方面可以捕捉类内的变化,另一方面还可以类间的相似性;
KD的缺点:假如是二分类,那么可供蒸馏的信息就很少
Fitnets可以通过中间层的监督来解决KD的问题,但要求严格,当teacher和student能力相差太大,可能会差生不利的影响
AT可以通过注意力机制,只蒸馏与目标强相关的神经元去蒸馏,解决Fitnets的问题,后面会讲到这是作者提出的方法的特殊情况
Flow of Solution Procedure (FSP)计算了两个不同层的特征的Gram matrix,他们认为FSP矩阵可以反应老师教学生的过程
领域自适应
解决的问题是当目标领域的没有标签的时候,如何利用已有的标签,通过对比并减少两个领域的分布差异来训练模型,核心问题是如何减少两个领域分布的差异
在Reproducing Kernel Hilbert Space (RKHS)中, MaximumMeanDiscrepancy(MMD)被当作比较两个分布的一个指标
有的方法,通过重新分配样本的权重或者重新挑选样本来最小化两个分布的MMD
有的方法,通过在一个显式的低维潜在空间中测量MMD
还有的,用MMD去正则化原领域和新领域学到的特征
值得注意的是,风格迁移也是一种领域自适应问题,它也是二秩多项式核MMD的特殊情况
准备知识
一些符号
表示第k个通道上的特征
表示在第i个位置上的C维特征
MMD(Maximum Mean Discrepancy)
什么高大尚的名字,其实就是个l2 norm
但不是直接求两个向量的欧氏距离,而是将每个向量先分成N组,对N组先求平均,得到最终的向量
对于卷积网络中的H*W*C特征,就是先将每个通道做映射,得到H'*W'*C的特征,然后将映射完后的通道H'*W'*C做平均,得到H'*W'的结果,用teacher与student的这个结果求欧式距离
可以利用kernel技巧,省去映射的过程,直接求得损失函数的结果,k就是核函数
神经元选择性迁移
出发点
- 这样做的原因
图2展示的是神经元的**图(应该是从该神经元向输入求导得到的)
从图中可以看出,神经元具有区域选择性,这些区域是有任务相似性的,比如左边图片对应猴子的脸,右边的图片对应字母,为了捕捉这些区域相似性,在学生网络中,神经元也应该学到这些**样式
- 直接用feature map来做匹配有什么问题
将feature map的每个通道的特征看作为神经元选择性的采样空间
文章中直接用teacher和student的这些采样去匹配,会忽略掉在这个空间中的采样密度,丢掉了样式
这两句话过于晦涩难懂,个人理解如下:
如过直接用feature map间的欧式距离作为损失函数,体现不出来Figure2中的样式(猴脸,字母),所以用一种新的方式,先将每个通道上的H*W的特征映射成H'*W'的特征,现在的特征就是H'*W'*C,然后将新的特征在C方向上合并,形成H'*W'的新的特征(比如注意力蒸馏中的做法)就可以体现出这个样式,也注重了空间上的采样密度,再用欧式距离算损失即可
公式
- 损失函数
在(4)中,是在(3)中的fk.的基础上添加了l2-normalized,这是为了确保每个采样有相同的尺度
- 核函数的选择
讨论
- 线性核函数
线性核下的损失函数:
在注意力图映射函数是绝对值就和规范化的条件下,AT的损失函数:
除了规范化的方式不一样外,式5与式8是等价的,因此AT是本工作的一个特殊情况
- 多项式核函数
G是一个Gram matrix,gij代表了位置i与位置j上向量的相似性;
其中的F是按照4.2节描述的方法规范化的;
Gram matrix中含有区域相似性,晦涩难懂的词,我也懒得解释了。。。。。
实验
在分类数据集上
总的来说,所有的对比实验表明,NST-poly最然不是最好的,但是他是KD的补充,它和KD结合起来可以吊打一切
在检测数据集上
总的来说,NST-poly相比于其他是最好的,可能是因为检测任务需要更多的空间信息,而KD没有,所以KD打不过它;
还有一点没有变的是,KD-NST依然是最强的组合,又证明了NST是KD的好伙伴
讨论
不同KT的分析
- NST
Figure 5中,一个点代表一个神经元的分布,可视化是用一种叫做t-SNE做出来的
NST可以使teacher和student神经元的分布接近一致
各人感觉,除了KD,其他的方法(AT,HT)都可以做到这一点
- KD
KD在类别更多的分类任务上效果更好,因为类别更多,soften target得到的信息就更多;
然而KD太过依赖softmax,所以它不能在回归和rank(是个什么任务)上起作用
Fitnets将所有的feature都用作了监督信息,可能会引入噪声,而且没有注重采样密度
MMD以外的方法
GAN的思想是一个可以研究的方向,student的特征相当于一个G,teacher的特征相当于D
结论
将知识迁移看错一个分布对齐的问题(分布对齐其实就是说的好听了,其实跟分布没啥关系)
利用了神经元的选择性(这个是AT的思想,还不如AT来的干脆,真的多余)
NST和KD的协作能力才这篇论文值得吹嘘的地方
可以迁移到更高级的视觉任务中(AT,HT都可以做到,但是NST最好,也不知道为啥)