| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> knowledge distillation 综述 -> 正文阅读 |
|
[人工智能]knowledge distillation 综述 |
直接上论文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散度。 然而,基于响应的知识通常依赖于最后一层的输出,比如 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 所示。 先写这么多,待会空下来再把剩下的全部写完 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 4:27:48- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |