Bilibili视频-知识蒸馏笔记
视频链接:【精读AI论文】知识蒸馏
轻量化神经网络
- 压缩已训练好的模型:知识蒸馏,权重量化,剪枝(权重剪枝、通道剪枝),注意力迁移
- 直接训练轻量化网络:SqueezeNet, MobileNet, Mnasnet, shuffleNet, Xception. EfficientNet, EfficientDet
- 加速卷积运算:im2col+GEMM, Winograd, 低秩分解
- 硬件部署:TensorRT, Jetson, Tensorflow-slim, Tensorflow-lite, Openvino, FPGA, 集成电路
Distilling the Kownledge in a Neural Network
知识的表示与迁移
soft Target and hard Target
蒸馏温度
T
T
T
q
i
=
exp
(
z
i
/
T
)
∑
j
exp
(
z
j
/
T
)
q_i=\frac{\exp \left(z_i / T\right)}{\sum_j \exp \left(z_j / T\right)}
qi=∑jexp(zj/T)exp(zi/T)
利用该公式可以让标签变得更加soft
举例:
知识蒸馏的过程
-
distillation loss:学生网络需要在 T = t T=t T=t的条件下的输出与教师网络的输出进行损失计算;
-
student loss:需要在 T = 1 T=1 T=1的时候与标签hard label进行损失计算。
Total loss = α×distillation loss + β×student loss
实验结果
实验结果表明学生网络可以学习到在训练时没有提到的信息(如类别)但是该信息在教师网络训练中提到了。可以类比为教师可以把自己学到的知识教给不会该知识的学生,让该学生学会该知识。
上图的实验结果表明经过知识蒸馏后,学生网络的表现与教师网络几乎相同。
上图表示使用Soft Targets可以有效的防止过拟合。
知识蒸馏的应用场景
- 模型压缩
- 优化训练,防止过拟合
- 无限大、无监督数据集的数据挖掘
- 少样本、零样本学习
- 迁移学习和知识蒸馏
知识蒸馏背后的机制
使用知识蒸馏让学生网络的收敛空间向教师网络的收敛空间靠拢。
知识蒸馏发展趋势
- 教学相长(学生帮助老师)
- 助教(多个老师、同学)
- 知识的表示(中间层)、数据集蒸馏、对比学习
知识蒸馏发展趋势
- 教学相长(学生帮助老师)
- 助教(多个老师、同学)
- 知识的表示(中间层)、数据集蒸馏、对比学习
- 多模态、知识图谱、预训练大模型的知识蒸馏