Knowledge Distillation
Swift

知识蒸馏是将训练好的大模型包含的知识蒸馏到小模型中。在线上部署的时候,我们使用小模型即可。

蒸馏过程示意图

procedure

总损失函数

  • $L_{\text {soft }}=-\sum_j^N p_j^T \log \left(q_j^T\right)$
    • $p_i^T=\frac{\exp \left(v_i / T\right)}{\sum_k^N \exp \left(v_k / T\right)}, q_i^T=\frac{\exp \left(z_i / T\right)}{\sum_k^N \exp \left(z_k / T\right)}$
    • $v_i, z_i$ 分别为教师模型和学生模型产生的logits,$N$ 为类别数,$T$ 为温度
  • $L_{h a r d}=-\sum_j^N c_j \log \left(q_j^1\right)$
    • $q_i^1=\frac{\exp \left(z_i\right)}{\sum_k^N \exp \left(z_k\right)}$

关于温度 $T$

  • $T$ 越大,softmax概率分布比原始更平缓,学生模型会更加关注到负标签的信息
  • $T$ 越小,softmax概率分布比原始更陡峭,学生模型会更加关注到正标签的信息

参考