模型压缩(二):知识蒸馏

先训练一个大模型,再训练一个小模型学习大模型的输出。

大模型不仅学到了类别,还学到了类别之间相似的东西,比真实label更多信息,不知告诉这个图片是1,还告诉它和7/9很像。
从来不给小模型看7,但是因为大模型会教他,所以可能也能得到正确的结果。

学生模型多任务,与老师的soft target的loss是kl散度,真实label的loss是交叉熵。

比赛中用模型融合,但是实际中不能用多个模型,但是学生模型可以学习多个模型,学习融合模型的平均输出。一个模型就能达到模型融合的效果。

soft label

不用onehot,使用一个温度t,拉近不同label间的分数。


(助教在实验中发现知识蒸馏没有特别有用)

参考:

  • 开山之作论文:https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1503.02531
  • 一个实验结果:https://blog.csdn.net/shi2xian2wei2/article/details/84570620
  • 相应代码:https://github.com/PolarisShi/distillation

你可能感兴趣的:(模型压缩(二):知识蒸馏)