0.摘要
论文的思想很简单:使用teacher_train和student_train配合来进行训练,老师(大模型)负责预训练,把全部知识都学会之后,通过知识蒸馏来增强对负样本的敏感程度,提取暗知识。然后有一定选择性的再教给学生(小模型),因为此时的老师已经知道侧重点。
普通的softmax函数只会对正样本比较敏感,对负样本压制的十分凸出:
但是很多时候,一组图片所包含的特征是有交集,特征之间不是那么对立的,one-hot式的编码方式太暴力了。所以hinton提出了新的损失函数softtarget(soft部分):
传统的损失(hand部分):
两部分合起来就是最终的损失也有了新的损失函数
1.知识蒸馏
粗暴地使用one-hot编码丢失了类间和类内关于相似性的额外信息。当识别数字2时,很有可能它给出的概率是:数字2为0.95,数字3为0.04而数字8为0.01.如何利用手写数字中3和2很像这一特征?
1.1soft target
可以使用t(temperature温度)来控制,在常用的softmax函数中,我们没有使用到这个温度T(换言之,T=1),当T值很高时,预测值的分布将更加靠近,因此也包含了更多的信息。所以提高t的数值可以使得分布更软,熵下降,信息分布更混乱,但是在预测的时候就可以使用温度值调低来获取模型中的知识,这也是称这个方法为蒸馏的原因。
1.2损失函数
最后实际上是
2.训练流程
对于学生的训练是要基于一个优秀的老师的,如果没有老师的话不能用一个轻量化的数据集去训练一个好的学生:
3.实验结果