论文原址在这里
 
这是Geoffrey Hinton在2016年发表的论文,是早期对于知识蒸馏的探索性论文。文章的贡献点主要在提出了温度(Temperature)在知识蒸馏中的重要作用,并通过大量实验为知识蒸馏的可行性和普适性提供了足够的实验支撑。

Knowledge Distillation

知识蒸馏(Knowledge Distillation)是一种模型压缩和加速技术,通过将一个大型且复杂的模型(称为教师模型)训练好的知识传递给一个较小且更简单的模型(称为学生模型),从而提升学生模型的性能。知识蒸馏在这篇文章中被首次提出,原文在softmax层的基础上增加了一个温度(Temperature)变量,用于控制知识蒸馏过程中的信息熵。
 
notion image

Soft Target

大模型在知识蒸馏过程中需要一个载体将自身的知识传递给小模型,这就是传输集(Transfer Set),传输集可包含多种训练数据和标签。原文以分类任务为例,在传输集原有硬标签(Hard Target)的基础上添加了软标签(Soft Target)。硬标签为分类任务中正确分类的label,正标签为1,其余标签都为0;软标签是大模型输出层之前的输出,最常见的是softmax层输出的类概率分布。
 
notion image
 
软标签的重要意义在于其包含了大模型学习到的知识。以MNIST数据集为例:当真实标签为2时,softmax层输出的类概率中类为3的概率一般大于类为7的概率,其隐含了2与3在形状上更为相似的知识。通过软标签,小模型能够在少量的数据上,采用较大的学习率,训练达到较好的效果。

Temperature

原文在神经网络输出层之前用于计算概率的softmax层上增加了一个新的变量:温度(Temperature)。
由公式可见,温度能在不改变输出结果的基础上,改变输出类(class)之间的概率分布。较高的温度会产生较平缓的概率分布,信息熵较大;较低的温度会产生较陡峭的概率分布,信息熵较小。在一般的softmax中,温度普遍设为1。通过对于温度的调节,控制软标签的信息熵,从而训练不同的目的小模型。这是知识蒸馏中至关重要的一环。

Experiment

在原文实验部分,作者围绕三组数据集验证了软标签和温度的重要性,感兴趣的读者请自行到原文查看具体的实验设置。其中最有意思的实验是围绕MNIST数据集设计的。作者在传输集上去除了训练集中的 3 ,经过以如图所示的损失函数为目标训练的小模型,在测试集上出现了 206 次错判,其中 133 次错判出现在 1010 个真实标签为 3 的数据上。如果减小生成软标签过程中的温度,小模型在测试集上出现的错判减少到 109 次,出现在真实标签为 3 数据上的错判减少到 14 次。如果传输集仅包含训练集中的 7 和 8,蒸馏模型的测试误差为 47.3%,当温度一定程度的增大时,测试误差降至 13.2%
 
notion image
 
这两组结果清晰的体现了软标签以及温度对于知识蒸馏效果的决定性作用。原文中也提到,在不同的小模型结构设计下,训练效果的好坏与温度具有相当直接的关联。可惜的是,文中并未提及关于温度选择的逻辑,过于依赖经验。
 

Summary

在当下Scaling law被奉为圣经的大模型时代,如何解决本地部署、计算加速等问题,是许多前沿研究关注的热点。当下一种观点认为,随着大模型训练轮数的增加,有用的参数量会不断减少。这都表明,如何进行模型压缩,已经成为了大模型发展过程中不可忽视的问题。知识蒸馏作为一种有效的模型压缩方法,既有机遇,也有挑战,还有许多问题等待着研究者去探索。
 
代码实现见这里
忏悔录1欧洲杯决赛前瞻
Loading...