本文整理自B站UP主“同济子豪兄”

原视频链接:https://www.bilibili.com/video/BV1gS4y1k7vj/?spm_id_from=333.337.search-card.all.click&vd_source=54a0edf8490a6a72a5e82c4e543fc3e2

知识蒸馏的意义:将大规模网络训练参数进行压缩,更加便于终端或者移动端的部署

其他模型压缩方法:

  • 权值量化
  • 剪枝(权值剪枝/通道剪枝)
  • 注意力迁移

信息熵的处理

hard target:例如在图像分类问题中,对于类别的判断为纯0/1判断,对于这种处理银含了一个图片完全是XX或完全不是XX,此处理方法对于含有的信息量太少,或是信息熵太少,对于真正的现实问题处理可能会有较高的准确率,但是并不是处理相似度所有问题的一个好方法。

image-20230905101057419

soft target:也例如在图像分类问题中,给于每个类别一定的置信度,而不是完全的0/1,提高分类结果的信息熵含量。

image-20230905101112451

通过以上所述,对于soft target衍生的soft label含有更多的“知识”,或直说含有更多的信息。

蒸馏温度

\[ q_{i} = \frac{exp(z_{i}/T)}{\sum_jexp(z_{j}/T)} \]

T为蒸馏温度,当T为1时,整个式子即为softmax函数

image-20230905101921482

蒸馏过程

image-20230905102632874

Teacher Model:已经训练好的model

Student Model:准备压缩的model

Step:

  • loss 1(soft loss):
    1. 教师网络经过蒸馏温度为T的softmax获得分类标签作为loss1的目标值
    2. 学生网络经过蒸馏温度为T的softmax获得分类标签作为loss1的预测值
    3. 计算误差获得loss1
  • loss 2(hard loss):
    1. 学生网络经过蒸馏温度为1,即原生的softmax,获得loss2预测值
    2. 通过ground truth和softmax的预测值计算loss2
  • loss1和loss2加权求和作为总的loss值

知识蒸馏优势

  1. 模型压缩
  2. 优化训练,防止过拟合
  3. 无限大、无监督数据集(海量图片经过teacher model获得softlabel可以作为student model的soft loss)
  4. 少样本学习

迁移学习和模型蒸馏的区别

迁移学习(同一个model架构,不同的sample):同一个模型,之前训练网络使用的识别猫狗的数据集,现在为识别植物的数据集,模型就从识别猫狗的模型变为识别植物的模型

模型蒸馏(不同的model架构,同样的效果):不同的模型,同样的知识