知识蒸馏(knowledge distillation)在模型压缩领域使用十分广泛,主要目的是通过大模型的知识通过某种方式定义出来,并进一步输入给小模型,使小模型达到更高的泛化精度。更广义的来说,无所谓"大小",提供知识的模型被称作教师模型,接受知识的模型被称作学生模型,教师模型并不一定非要比学生模型"大"。相关研究表明,知识蒸馏的作用类似于可学习的标签平滑,本博客对此简单介绍。
标签平滑-Label Smoothing
分类任务的训练大多依赖于softmax归一化+交叉熵损失,将离散化的标签转换成向量形式的过程称之为one-hot编码过程。
图源:cloud.tencent.com/developer/article/1815786
如图,假设我们收集了数据集包含{飞机,鸟,猫,狗,汽车,拖拉机},那么第2类样本(鸟),就被one-hot编码为010000。
为了使one-hot编码下的交叉熵损失达到零(即不在提供梯度),需要y_true>>y_false, 其中y_true,y_false为网络针对该样本对于正确类以及错误类别输出的logits,而由于梯度范围有限,要达成"远大于"的条件十分困难,会导致网络泛化能力下降。
标签平滑的思路十分简单,为确定性的one-hot标签编码带来噪声,噪声量