目录
摘要
作者提出了一种teacher-student映射知识蒸馏的方法,在小数据集上有效
teacher和student用来对接的中间层可以通过自适应的方式来选择,这种自适应的方式是以一种迭代的方式通过评估联合损失来完成的
引言
- KPN介绍
提出了Knowledge Projection Network (KPN),KPN是一种两阶段的联合优化方法
如Fig 1所示,这种映射可以在测试的时候关掉,从而达到不增加模型复杂度的效果
- 贡献
提出了一种新的框架,可以将在大数据集上训练好的模型迁移到窄而深的网络中去
提出了一种新的方法,可以学习一种映射,这个映射可以将techer网络的特征映射到student网络上,从而对student网络加以指导
提出了一种迭代的方式,用以选择映射的时候teacher-student的连接路径
实验证明,这种方法在减小模型复杂度的情况下,可以保持甚至超过teacher网络的效果
相关工作
- 领域自适应
有人在领域适应问题上,通过改正领域的分布差分,提升了领域不变性
fine-tune
有人研究过Feature transferability
在浅层网络结构中,有人研究学习领域不变的特征
- 量化、裁剪、矩阵分解
有人提出Optimal Brain Damage (OBD) ,用二次倒数找到准确率和模型复杂度的权衡点
有人提出 Optimal Brain Surgeon (OBS),优于OBD,但是计算复杂度太高
有人提出了不丧失准确度的裁剪方法
量化和哈夫曼编码
SVD-based低秩近似
clustering-based量化
Generalized SVD和对非线性层的特殊处理
有人提出稀疏连接的随机网络,性能好于稠密连接的网络
- 知识蒸馏
KD
Fitnet
KPN
总览
损失函数如式7所示,是有KP损失,任务损失和正则化构成的
KPN层设计
其实就是将teacher网络对应层,用1X1的conv来得到与student网络对应层相同的通道的特征
式9中,r表示1X1conv卷积的操作,也就是映射的操作
μ代表teacher网络从头到对应层的映射
v代表student网络从头到对应层的映射
这里的h是损失函数的缩放因子,个人认为这里的h的自变量写错了,应该是r而不是μ,不然维度对不上
损失函数用L1不用L2的原因是L1对噪声不敏感
多路多阶段训练
student网络在映射层后是为了适应网络的最终目标,而在映射层前是为了适应teacher提取的映射特征,所以将训练分为两个阶段,一个初始化阶段和一个联合训练阶段
在初始化阶段,断开path 2,用映射特征和student网络的上层结构(这里应该是论文描述错了)通过Lp来训练,用映射特征和student的下层结构来训练Lkp,这里KPL相当于一个隐式的连接student网络前半部分和后半部分的存在,使得前半部分结构只能看到解释的映射特征,而看不到target,这可以在早期的训练过程中防止网络过拟合
在联合训练阶段,连接path 2,断开path 1,通过联合损失函数式7来训练网络
迭代删减选择映射路径
- 确定候选路径
感受野要在一定范围以内,beta为0.2
空间像素要一致
- 找出最小损失的那一组
联合损失训练,找出最小损失的一组剔除,找最小是迭代的,知道只剩一组路径
实验结果
数据集上的分析
从ResNet-38和ResNet-38 fine-tune的结果看,fine-tune好于ResNet-38,因为它用到了大数据的信息
从Our method和ResNet-50 slim来看,本文的方法是一个有效知识蒸馏的方法
从Our method和ResNet-38 fine-tune来看,本文的方法可以超越fine-tune的作用
自动路径选择方法的分析
上部分是做多次实验得到的最终的映射路径的分配情况
下部分是枚举所有的映射路径得到的平均误差
可以看出这两部分正好是成反相关的,证明这个方法有效
结论
提出了一种新的知识映射框架,可以同时解决领域自适应和模型复杂度过高的问题