知识蒸馏方法汇总

2015年,Hinton 已提出蒸馏学习,并成功使用在特定的任务上。

在NLP领域,因为各种预训练语言模型的体积越来越大而无法实施,需要硬件和引擎能够过关,同时算法也要提高,除了剪枝、压缩等对模型能力更高的方法外,蒸馏是要求成本最低的方法。

Hinton 在Distilling the Knowledge in a Neural Network 中首次提出了知识蒸馏在CV领域中使用,旨在把大模型学到的知识灌输到小模型中,以达到缩小模型的目标:

知识蒸馏方法汇总_第1张图片

1.  首先,训练一个大模型。

2.  对大模型做特征软化,输出预测的概率,此为softed labeled。

3.  训练小模型,同时附带大模型的信息,通常是在损失函数里面加入这个信息。

例如:T 为老师网络,即大模型, S 是小模型,损失要考虑 T 和 label 的关系、S 和 label 的关系及 S 和 T 的关系。损失函数代表的是一种学习方式,平时只考虑网络结果和 label 的关系,拟合出特征到 label 的映射。
 

NLP 中的知识蒸馏

Distilling Task-Specific Knowledge from BERT into Simple Neural Networks 文章中将 bert 和 bi-lstm 结合,对损失函数做了处理,在训练中,需要在常规损失的基础上加入师生两个网络输出的差距,使用两者的欧氏距离。

 

参考:

​​​​​​Distilling Task-Specific Knowledge from BERT into Simple Neural Networks论文学习_hxshine的博客-CSDN博客

心法利器[1] | NLP知识蒸馏思考_baidu_25854831的博客-CSDN博客

你可能感兴趣的:(nlp,深度学习)