Fitnets:Hints for Thin Deep Nets

这是知识蒸馏的第二篇文章,文章认为 Hinton 提出的 knowledge distillation 方法 (KD) 简单的拟合 Teacher 模型的输出并不能使 Student 达到和 Teacher 一样的泛化性能。对此,作者提出了 hint(隐藏层的输出)的概念。此外,作者认为在 thin 的条件下使得网络更 deep 可以在降低参数量的同时提升 Student 网络的性能。

Student 的损失函数

2.png

因为 Student 是更为轻量的网络,所以中间层的特征图大小与 Teacher 并不完全一致,因此需要 $W_r$ 矩阵来调整为同样的大小。为了减少参数量以及内存的消耗,作者将这一天调整的全连接改为卷积的形式。最终 Student 损失函数的完整形式如下:
$$
L_{HT}(W_{Guided},W_r)=\frac{1}{2}|u_h(x;W_{Hint})-r(v_g(x;W_{Guided});W_r)|^2
$$
这里 $u_h$ 表示 teacher 从输入到第 h 层的映射函数,$v_g$ 表示 student 从输入到第 g 层的映射函数,r 表示卷积层调整器,$W_r$ 为 r 对应的参数。

训练流程

2.png

阶段一:

  1. 选择 Teacher 中提取第 N 层输出作为 hint,提取 Student 中第 M 层输出作为 guided
  2. 使用卷积层调整器对 guided 的维度进行调整
  3. 优化 Student 最小化前文所述的 $L_{HT}$ 损失函数

阶段二:

  1. 使用第一阶段 Student 的参数作为初始参数
  2. 用 Hinton 提出的 KD 算法对 student 模型进行蒸馏
丨fengche丨 wechat
来找我聊天吧~
-------------本文结束感谢您的阅读-------------