归纳
提出一种知识蒸馏的方法,将大模型的知识进行蒸馏得到相当精度的小模型,即利用大模型(集成模型)生成的类别概率soft targets,待压缩的模型自身的类别作为hard targets,二者结合共同训练待压缩模型。并引入温度参数T,将小模型自身学到的和向大模型学到的进行加权。解决训练和移动端的矛盾。
论文
集成模型引出来知识蒸馏
蒸馏模型的开山之作
动机:
1单个模型的性能是比较弱的,因此使用集成学习。集成学习的训练和应用的矛盾
2有把集成模型压缩的工作,该工作将使用大模型所学到的知识信息对小模型进行训练,并且精度也不变
boosting:
可否用在负样本上??让非零即一的部分变成0-1之间
集成模型的弊端:
知识:学习如何从属于向量映射到输出向量。可以理解为原训练过程中忽略的信息,也可以说是和目标相似的信息
CNN的预测过程:
logits
它是全连接输出、softmax的输入
蒸馏:
温度参数T:
1引入温度参数T,缓和特征差距。放大非正确预测类别的信息
2并且无论T如何取值,soft targets都具有忽略小的logits所携带信息的倾向,因此仍然保持相对大小,只是进行缓和他们之间的差距
蒸馏过程:
损失函数
之所以还需要学生损失,是因为教师网络也可能出错
文中的细节
当所有或部分转移集都知道正确的标签时,通过训练提取的模型来生成正确的标签,可以显著地改进这种方法。一种方法是使用正确的标签来修改软目标,但是我们发现更好的方法是简单地使用两个不同目的函数的加权平均值。第一个目标函数是与软目标的交叉熵,该交叉熵是用与从繁琐的模型生成软目标相同的高温在蒸馏模型的sofumax中计算的。第二个目标函数是具有正确标签的交叉熵。这是使用蒸馏模型的softmax中完全相同的logits计算出来的,但温度是1。我们发现,对第二个目标函数使用适当的较低权值通常可以获得最佳结果。由于软目标产生的梯度大小为1/T2,因此在使用硬目标和软目标时,将其乘以T2是很重要的。这确保了在使用温度的情况下,硬目标和软目标的相对贡献大致保持不变。在对元参数进行实验时,蒸馏过程发生了变化。