知识蒸馏
一、简介
https://zhuanlan.zhihu.com/p/258721998
https://zhuanlan.zhihu.com/p/90049906
https://zhuanlan.zhihu.com/p/353472061
(一)、定义
知识蒸馏的方式就是将Teacher Network输出的soft label作为标签来训练Student Network。
比如在上图中我们训练Student Network来使其与Teacher Network有同样的输出。这样的好处是Teacher Network的输出提供了比独热编码标签更多的信息。
比如对于输入的数字1,Teacher Network的输出表明这个数字是1,同时也表明了这个数字也有一点像7,也有一点像9。另外训练Student Network时通常使用交叉熵作为损失函数,这是因为训练过程相当于要拟合两个概率分布。
(二)、优势
知识蒸馏训练出的Student Network有一点神奇的地方就是这个Network有可能辨识从来没有见过的输入,不如把Student Network的训练资料中的数字7移除后可能训练完成后也会认识数字7,这是因为Teacher Network输出的soft label提供了额外的信息。
(三)、用途
https://zhuanlan.zhihu.com/p/347890400
知识蒸馏的一个用处是用来拟合集成模型,有时候我们会集成(Ensemble)很多个模型来获取其输出的均值从而提高总体的效果,我们可以使用知识蒸馏的方式来使得 Student Network学习集成模型的输出,从而达到将集成模型的效果复制到一个模型上的目的:
(四)、使用时的小技巧
在进行知识蒸馏时我们还会使用到下面的技巧就是调整最终输出的sofmax层来避免Teacher Network输出类似独热编码的标签:
二、方法介绍
soft label loss (训练时使用相同T)+ hard label loss
预测时T=1
三、前沿的研究方向
(一)、loss
https://zhuanlan.zhihu.com/p/138210881
https://zhuanlan.zhihu.com/p/92269636
https://zhuanlan.zhihu.com/p/160206075
https://zhuanlan.zhihu.com/p/93287223
https://zhuanlan.zhihu.com/p/163477538
- 蒸馏特征,特征输出算loss
2.蒸馏层间关系,不同网络层与层间特征关系(element-wise x)算loss - 学生与学生互相学习
4.自己向自己学习
(二)、优化
FT:相关性因子加权学习法` https://arxiv.org/pdf/1802.04977.pdf
-
PKT:概率分布学习法` https://arxiv.org/pdf/1803.1083
上述两篇文章的作者认为学生一般都是不聪明的,为了让学生能够更好的理解教师模型,FT算法这篇文章提出了一种新的知识转移方式,如图所示,利用卷积运算对教师模型的输出进行编码,并解码(翻译)给学生。而位于学生模块部分也添加一个卷积操作,用来学习翻译后的教师知识。实验证明这种方式要比直接学习效果好。PKT算法这篇文章提出了另一种新的知识转移方式,如图所示,该文章让学生模型学习教师模型的概率分布,使得整体的学习更加容易,更鲁棒。作者提出了一种通过匹配数据在特征空间中的概率分布进行知识蒸馏,PKT算法的另一个优势是该方法可以直接转移不同架构和维度层之间的知识。
(三)、强化学习, GAN
https://zhuanlan.zhihu.com/p/107496421
(四)、可解释性
https://zhuanlan.zhihu.com/p/113811002
(五)、交互
https://zhuanlan.zhihu.com/p/158186335
四、工业实战经验
作者:加油11dd23
原文链接:https://www.jianshu.com/p/d6e5936acd71