知识蒸馏详解
·
@知识蒸馏
知识蒸馏(分类)
一、为什么要知识蒸馏
1.训练一个非常复杂的模型,尽管该模型有非常高的准确率,但由于其计算成本过高,难以部署。为了能更好的部署到用户端,需要一个较简单的模型,预测效果能接近复杂模型。所以引入了蒸馏技术。
什么是复杂模型, 复杂模型可以是一个参数量非常庞大的模型,也可以是一个集合模型。集合模型就是包含一个通用模型以及多个专家模型,通用模型是在所有数据集上训练的模型, 而专家模型是在某一易混淆类别的样本数据上训练的简单模型。对于专家模型,可将其不关注的所有类合并为一个“垃圾类”,从而大幅减少softmax层。
二、什么是知识蒸馏

- 知识蒸馏
- 原文是这样说的,一张宝马汽车的图片判别为是垃圾车的概率仅为0.01, 但该概率仍远高于被误判为胡萝卜的概率0.00001。这0.01的输出对于判别是不是胡萝卜仍然是有帮助的,即softmax输出的所有信息都是有用的。类似于NLP里的embedding, 各个词语之间是有联系的。如苹果和香蕉虽然不是同一种物体,但是他们都是水果,所以在水果这个属性的分数就比较高。
- 知识蒸馏就是softmax是具有温度T的softmax, 公式为:

温度T越大,得到的输入越柔和,如图:

- 为什么要设置温度T:
当T=1时,此时普通 Softmax 输出为[0.999, 0.001, 0.0002], 这就导致第一类的信息非常多,第二类和第三类的信息几乎丢失。
当T>1时,softmax会“拉平”概率分布, 由之前的[0.999, 0.001, 0.0002]变为[0.7, 0.1, 0.2],这样第二类和第三类的信息也可以传递给学生模型。 - 对于知识蒸馏,网络结构有两个模型,上面的是教师模型,所谓教师模型就是在大量数据集上训练结束的复杂模型。下面的是学生模型,学生模型则是一个需要从头开始训练的简单模型。
- 对于教师模型,图片输入教师模型后,会得到输出,将输出经过softmax归一化之后,得到软标签,例如有5个分类(猫,狗, 苹果, 香蕉, 车),即经过softmax后的输出为[0.7, 0.05, 0.05, 0.1 , 0.1 ],这个输出去优化学生模型。
- 使用温度T>1之后, softmax的整个输出就会被拉伸, 会缩小softmax最大值和最小值的范围,如上图所示,红色为标准softmax,蓝色为带温度T的softmax函数图像。 举个例子, 比如标准softmax最大值是0.7, 最小值是0.01,这样0.01这个值太小,信息就丢失了, 经过带温度T>1的softmax, 最大值变为0.6, 最小值变为0.2,这样最大值与最小值之间的差距就变小了,并且0.2不会像0.01那样丢失很多信息。
- 对于分类问题,硬label为[1, 0, 0, 0, 0],用硬标签和学生模型的softmax计算损失,会失去后面四类的信息,只告诉模型这张图片可能是猫的概率为0.7,所以丢失了后面四个类别的语义信息。
2.训练步骤

- 对于教师模型,一张图片经过教师模型后,用softmax归一化后会得到一个soft targe(软标签)输出。
- 对于学生模型,一张图片经过学生模型后,用softmax归一化后也会得到一个soft target(软标签)输出。
- 现在除了教师和学生两个输出的标签以外,还有一个硬标签,如[1, 0, 0, 0, 0],所以一共有三个标签来计算损失。
-
- 将教师模型输出的(有温度T, 在前面解释一下带T的标签)软标签和学生输出的软标签做交叉熵损失计算。这是让学生模型能学习到老师的知识,软标签可以传递更多的知识。
教师输出[0.1, 0.6, 0.05, 0.2, 0.05], 学生输出[0.15, 0.65, 0.1, 0.05, 0.05]。 其中qt表示教师模型的输出, qs表示学生模型的输出。

- 将教师模型输出的(有温度T, 在前面解释一下带T的标签)软标签和学生输出的软标签做交叉熵损失计算。这是让学生模型能学习到老师的知识,软标签可以传递更多的知识。
-
- 将学生模型输出的标签和硬标签做交叉熵损失计算, 这一个损失函数是为了让学生模型能从数据中学到正确的信息。
学生输出[0.1, 0.7, 0.05. 0.05, 0.1], 硬标签[0, 1, 0, 0, 0]
- 将学生模型输出的标签和硬标签做交叉熵损失计算, 这一个损失函数是为了让学生模型能从数据中学到正确的信息。
-
- Ltotal表示总损失, Lhard表示学生模型与硬标签计算的交叉熵损失, Lsoft表示教师模型与学生模型的软标签计算交叉熵损失。α表示一个平衡系数。

- Ltotal表示总损失, Lhard表示学生模型与硬标签计算的交叉熵损失, Lsoft表示教师模型与学生模型的软标签计算交叉熵损失。α表示一个平衡系数。
更多推荐


所有评论(0)