1.定义
最早见于Hinton的文章(Distilling the Knowledge in a Neural Networ),主要思想是:先训练一个复杂的模型,然后使用这个复杂模型的输出和数据的真实标签去训练一个需要的小模型。其中复杂模型为Teacher模型,小模型为Student模型。
2.分类
主要分为基于Logits的知识蒸馏和基于特征的知识蒸馏
2.1基于logits的知识蒸馏
将teacher model输出的logits作为软标签,数据的真实标签作为hard label,然后分别计算student model预测的结果与上述两种label的交叉熵作为损失函数,最后将两个loss进行加权得到最终的损失函数。
注意:
用soft label计算交叉熵时,在softmax输出logits时使用了超参数T(表示蒸馏的温度),softmax函数变为了:
在进行softmax之前先除了一个温度参数。