ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

knowledge distillation 综述

2021-11-22 22:32:03  阅读:323  来源: 互联网

标签:based knowledge 综述 kd 模型 distillation 所示 teacher


直接上论文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 所示。

先写这么多,待会空下来再把剩下的全部写完

标签:based,knowledge,综述,kd,模型,distillation,所示,teacher
来源: https://blog.csdn.net/lovep1/article/details/121378130

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有