知识蒸馏-Knowledge Distillation

基础介绍

核心思想

KD(Distilling the Knowledge),就是用teacher network的输出作为soft label(target)来训练一个student network。

  • Knowledge Distill是一种简单弥补分类问题监督信号不足的办法. 常见的监督信号表示hard target,是0-1的表示,而KD的表示从soft target学习,拥有不同类之间关系的信息(比如同时分类驴和马的时候,尽管某张图片是马,但是soft target就不会像hard target 那样只有马的index处的值为1,其余为0,而是在驴的部分也会有概率。)
  • 知识蒸馏是一种模型压缩常见方法,用于模型压缩指的是在teacher-student框架中,将复杂、学习能力强的网络学到的特征表示“知识”蒸馏出来,传递给参数量小、学习能力弱的网络。

Loss表达

Loss的表达:$L=\alpha L{soft}+(1−\alpha)L{hard}$
distillation loss选择:平方距离,KL-divergence,cross entropy。

核心结构:

image-20190710154101256

相关文章调研

0.开山作:Hinton发表在NIPS2014文章

1.Attention Transfer:传递teacher网络的attention信息给student网络

attention transfer的目的是将teacher网络某层的这种spatial attention map传递给student网络,让student网络相应层的spatial attention map可以模仿teacher,从而达到知识蒸馏目的。

2.FSP matrix

之前KD的teacher的某层的输出作为student的mimic目标,这篇文章将teacher网络层与层之间的关系作为student网络mimic的目标。

3.DarkRank: Accelerating Deep Metric Learning via Cross Sample Similarities

一种适合度量学习(如检索,Re-id,人脸识别,图像聚类)的知识蒸馏方法。所传递的知识就是度量学习所度量的样本间相似度,用learn to rank来传递知识。

4.Neuron Selectivity Transfer
文章:Like What You Like: Knowledge Distill via Neuron Selectivity Transfer

teacher-student的knowledge transfer过程看作两者对应feature distribution matching,使用domian adaptation 常用方法MMD(最大平均差异)进行优化。(知识蒸馏本是一种同任务迁移学习)

使用MMD来使得student网络的神经元选择性特征分布(Neuron Selectivity Feature Distributions)mimic对应teacher的的这种分布

5.Knowledge Distillation with Conditional Adversarial Networks

Paper:Training Shallow and Thin Networks for Acceleration via Knowledge Distillation with Conditional Adversarial Networks

6.Deep Mutual Learning

Deep Mutual Learning(DML)与用于模型压缩的一般知识蒸馏不同的地方在于知识蒸馏是将预训练好的、不进行反向传播的“静态”teacher网络的知识单项传递给需要反向传播的”动态”student网络.

DML:Teacher 网络也要进行反向传播

7.Born Again Neural Networks 再生网络

核心思路:直接将teacher网络的prediction当作student网络的target,得到第一代student网络的prediction,然后传递给后一代,历经几代之后,将各代student网络的prediction ensemble.形成一个sequence of teaching selves。

8.在线蒸馏 codistillation

在分布式训练任务下,提出了一种替代标准SGD训练NN模型的方法codistillation,是一种非同步的算法,事实上有很多个Wieght的副本在独立训练,他可以有效“解决”机器增加但线性度不增加的问题,实验中还有一些数据表面可以比标准的SGD收敛更快

distill的思想,但是因为是重头训练,所以什么是teacher model呢?作者提出用所有模型的预测平均作为teacher model,然后作为soft target来训练每一个模型。

10.Improving Multi-Task Deep Neural Networks via Knowledge Distillation for Natural Language Understanding 微软的文章

image-20190710163227607

Teacher是多个,每个是一个MT-DNN,Student是一个小的MT-DNN,朴素的KD做法,效果比Teacher还好

Code:https://github.com/namisan/mt-dnn

发现有益的结论:Hinton的知识蒸馏的第一项权重相当大,这里发现大小差异不大。

问:Student的网络结构和单个Teacher是一样的?

11.Model Compression with Multi-Task Knowledge Distillation for Web-scale Question Answering System

Multi-task Knowledge Distillation Model

Student:3层BERT结构,使用BERT的参数进行初始化;Teacher: BERT-Base,个数是3个

在讨论部分提出了一个Enhanced Student Model with Two-Stage Multi-Task Knowledge Distillation,结构如下:

image-20190710172005310

两阶段的范式:第一阶段使用soft label进行学习,第二阶段使用GT和soft label进行学习,效果比MKDM好,但比原始的都要差。

实现问题思考

1.student网络的具体形态的选择?很多方式,可以异质也可以同质的

2.teacher网络的结构,选择几个分类器,因为数据集上不同个数的分类器性能不一样

3.teacher预测错误的知识需要单独剔除吗?

4.当类别少的时候效果就不太显著,对于非分类问题也不适用?

常见的T-S形态

Case1:

teacher:WRN-40-10

student: WRN-10-4(CIFAR)/WRN-22-4(Imagenet32)

Case2:

Teacher:BERT-Base

Student:3层BERT / BiLSTMAttn+TextCNN

参考资料