直接上论文survey:https://arxiv.org/pdf/2006.05525v6.pdf
开局提到有数种模型加速的方法:
1、权重共享和剪枝
2、低秩分解
3、转移的紧凑卷积滤波器:这些方法通过转移去除无关紧要的参数或压缩卷积滤波器
4、KD
然后摘要里面说明kd的key problem是如何将teacher模型里面的knowledge transfer到student模型,一个kd系统包括三个部分,knowledge、蒸馏算法,teacher模型。入下图所示:
接下来文章回顾了kd的历史,从kd的进展、应用方向、包括模型结构kd和大小数据及kd,啥玩意都有,这里就不说了,接下来直接讲重点。
本篇survey的主要目的:1、提供知识概述,包括几个典型知识、蒸馏和架构; 2、回顾最近的kd进展,包括算法和不同的具体应用场景;3、解决一些问题并提供kd的一些见解,包括不同类型的知识、训练方案、蒸馏算法和结构。
本文的目录结构,如下图所示:
虽然里面的论文有点过时了,但是分类方法还是值得参考的。
我们讨论不同形式的以下类别的知识: 基于Logits(Response)-based、Feature-based和Relation-based knowledge的kd方法,三种关系如下图所示:
如上图所示,Logits(Response)-based 从teacher model的output layer学习得到;Feature-based 是从一些中间hidden layers学习knowledge;Relation-based则是学习input-hidden-output之间的关系。默默的吐槽:都是玄学。
然后本文主要会分析一下这篇survey的分类方法,我觉得挺系统,按照这个来对kd进行分类,然后最后面再介绍一下sota的工作:
1、Responsed-based
完整示意图如上所示,对最后的logits进行distillation loss进行反向传播,也就是拟合两个logits的输出。损失函数如下图所示:
如上图所示,对最后一层的logits进行distill,则损失函数使用LR-代表着kl散度。
基于响应的知识被进一步探索,以解决 ground-truth label 作为条件目标(conditional targets)的问题,基于响应的知识的想法是直接和容易理解的,尤其是在“dark-knowledge”的背景下。从另一个角度来看,软目标 soft target 的有效性类似于标签平滑(label smoothing)或是 regularizers
然而,基于响应的知识通常依赖于最后一层的输出,比如 soft target 就是如此。因此,response-based knowledge 就很难代表 teacher model 的中间层中包含的能够知道 student 网络训练的有效信息;尤其是我们认为在 network 很深的时候,中间层的重要程度更加不能忽略
因此, soft logits 实际上是类概率分布, response-based KD 也被局限于监督学习领域。更为细致的hinton的开山之作图为:
上图结构非常清晰,不细说了。
2、Feature-based
第二种是基于feature的,也是目前的sota工作所应用的最多的一种情况。
深度神经网络善于学习抽象程度不断提高的多级特征表示。这就是所谓的 “表征学习(representation learning)”无论是最后一层的输出,还是中间层的输出,即 feature map,都可以作为知识来监督学生模型的训练。具体来说,来自中间层的基于特征的知识是 response-based knowledge 的很好的扩展,尤其适用于更狭窄但是层数更深的网络的训练。
主要思想是直接匹配教师和学生网络的中间层的激活特征。受此启发,人们提出了各种其他方法来间接匹配这些特征。
survey里面给出了很多paper的做法,此处先不详细展开,直接给出normal的方法,一般的kd loss可以表示为:
如上式所写,基本上就是对student和teacher模型的featuremaop进行映射,映射到同一维度或者同一空间,然后利用一个损失函数求loss值,下表给出了损失函数的类型范围:
如上表所言,现在基本上是L2或者LCE(交叉熵),LMMD代表最大平均偏差损失。
但是survey有提到了一点,虽然 feature-based 的知识转移为学生模型的学习提供了有利的信息,但如何有效地从教师模型中选择 hint 层,从学生模型中选择 guided 层,仍有待进一步研究(Romero et al., 2015);由于 hint 层和 guided 层的 尺寸 差异很大,如何正确匹配教师和学生的特征表示也需要探索。说白了就是选择特征学习层有难度,如果网络结构不一致,怎么选择这两个层是一个困难。
3、Relation-based
response-based knowledge 和 feature-based knowledge 都使用了教师模型中特定层次的输出。relation-based knowledge 进一步探索不同层或数据样本之间的关系。典型流程如下图所示(这个是relation-based的基于特征集合的方法,属于这里面的第二种):
此处又分为两种,基于不同特征图的relation-kd, 然后进一步给出normal损失函数:
如上图所示,对模型的特征对(feature pairs)计算相似度,然后进一步对这个相似度求损失。这是一种relation的方法。也就是看teacher和student的特征对的关系是否一致。
还有另外一种relation-based-kd,就是基于实例关系的kd,normal loss可以描述为:
如上所示ti、tj是特征集合,相当于对特征集合求相似度,然后计算相似度的kd-loss
下表是以上两种方式的集合,有一些是sota的工作:
损失函数定义如上所示:具体先不描述了。自行百度下。
3,KD schemes
分为offline kd, online kd、self-kd,如下图所示:
1、离线KD
就是常规的teacher模型固定,训练student模型,没啥好说的。不过这里提到offline kd需要一个复杂的teacher模型训练,然后训练完成依旧会有一个gap在student和teacher之间。
2、onlineKD
很多的sota工作都是基于online kd来做,
这里提到一点就是,很多时候没有办法得到一个好的teacher模型,因此需要使用到online的同事训练,即online-kd。这里面有很多的sota的工作,但是来不及看了,我先看完整体的的再继续补充这里
3、self-kd
4、teacher-student的结构
我们希望学生能找到合适的老师。因此,完成对知识的捕获和提炼知识蒸馏,如何选择或设计合适的教师和学生的结构非常重要。我们讨论教师结构之间的关系模型和学生模型,如图 9 所示。
先写这么多,待会空下来再把剩下的全部写完