知识蒸馏(Knowledge Distillation):
知识蒸馏即将知识从「教师」模型迁移到「学生」模型,执行方式为训练学生模型模仿教师模型的预测。
把一个大模型或者多个模型ensemble学到的知识迁移到另一个轻量级单模型上,方便部署;
即“用新的小模型去学习大模型的预测结果,改变一下目标函数”。
1、为什么蒸馏可以 work
好模型的目标不是拟合训练数据,而是学习如何泛化到新的数据。
所以蒸馏的目标是让student学习到teacher的泛化能力,理论上得到的结果会比单纯拟合训练数据的student要好。
另外,对于分类任务,如果soft targets的熵比hard targets高,那显然student会学习到更多的信息。
2、模型结构
- 多任务模型主要基于BERT,因此该多任务模型能通过知识蒸馏学习到各单任务模型的语言知识。
- 模型会有一个教师退火的过程,即最开始由多个单任务模型教多任务模型学习,而随着训练的进行,多任务模型将更多使用真实任务标签进行训练(即图中的λ从0慢慢变到1)
- https://zhuanlan.zhihu.com/p/71986772
- https://daiwk.github.io/posts/nlp-bam.html