综述 | 知识蒸馏(1)

点击上方“机器学习与生成对抗网络”,关注"星标" 获取有趣、好玩的前沿干货!

Knowledge Distillation: A Survey

  • https://arxiv.org/pdf/2006.05525.pdf
  • Jianping Gou、Baosheng Yu、Stephen John Maybank、Dacheng Tao

前言

近年来,深度神经网络在工业和学术界都取得了较大成功,尤其是在计算机视觉任务方面:主要归因于其可扩展性以编码大规模数据(提取特征),并操纵数十亿个模型参数。然而,将这些繁琐的深度模型部署在资源有限的设备(例如,移动电话和嵌入式设备)上也是一个挑战:不仅计算复杂度高,且存储需求大。为此,多种模型压缩和加速技术被提出;其中,知识蒸馏可以有效地从大型“教师”模型学习小型的“学生”模型,迅速受到重视。本文从知识的类别、训练的策略、蒸馏的算法和应用等角度,对知识蒸馏进行了全面调研。此外,简述了知识蒸馏的挑战,并对未来研究进行讨论。

1 简介

2 原始的蒸馏模型

Bucilua等 (2006年)首先提出模型压缩,以将信息从大型模型或模型集合中转移到训练小型模型,而准确率无明显下降。主要思想是学生模型模仿老师模型,并获取相近甚至超越的性能。从大模型学习小模型后来被推广为知识蒸馏(Hinton et al,2015)。

原始的知识蒸馏框架通常包含一个或多个大型的预训练教师模型和一个小型的学生模型,教师模型通常比学生模型大得多。主要思想是在教师模型的指导下训练高效的学生模型以获得具有竞争力的性能。而来自教师模型的监督信号(通常称为教师模型学到的“知识”)可以帮助学生模型模仿教师模型的行为。在典型的图像分类任务中,logit(例如深层神经网络中最后一层的输出)被用作来自教师模型的知识的载体,而训练数据样本并未显示提供该知识。例如,猫的图像被错误地归类为狗的可能性很小,但是这种错误的可能性仍然比猫误认为汽车的可能性高很多倍(Liu等,2018c)。另一个例子是,手写数字2的图像与数字3相比更类似于数字7。这种由教师模型学习的知识在(Hinton et al。,2015)中被称为dark knowledge

原始的知识蒸馏中转移知识的方法是:给定一个logits z向量作为深度模型的最后一个完全连接层的输出,因此

z_i

是第i类的logit,则输入属于第i类的概率

p_i

可以为由softmax函数估算

因此,通过教师模型获得的软目标soft targets的预测包含dark knowledge,可以用于指导将知识从教师模型转移到学生模型;one-hot标签也称为硬目标hard target。关于软目标和硬目标的直观示例如图3所示。

此外,温度因子T被引入控制每个软目标的重要性,如

较高的温度会在各个类别上产生较“软”的概率分布。具体来说,当T→∞时,所有类别都具有相同的概率。当T→0时,软目标变为one-hot labels,即硬目标。教师模型的软目标和真实GT标签对于提高学生模型的表现都非常重要(Bucilua等,2006;Hinton等,2015;Romero等,2015), 分别记作蒸馏损失和学生损失。定义蒸馏损失以匹配教师模型和学生模型之间的logits,如下所示

其中

z_t

z_s

是教师和学生模型的logits。定义学生损失为真实GT标签和学生模型的logits的交叉熵:

联合训练:

3 “知识”的分类

基于响应的知识(Response-Based Knowledge),基于特征的知识(feature-based knowledge)和基于关系的知识(relation-based knowledge)。

  • 原始的知识蒸馏使用大深度模型的logits作为教师知识(Hinton等人,2015; Kim等人,2018; Ba和Caruana,2014; Mirzadeh等人,2019)。
  • 中间层的激活、神经元或特征也可用作指导学生模型学习的知识(Romero等人,2015; Huang和Wang,2017; Ahn等人,2019; Heo等人, 2019c; Zagoruyko和Komodakis,2017)。
  • 不同激活、神经元或样本对之间的关系包含教师模型学习到的丰富信息(Yim等人,2017; Lee和Song,2019; Liu等人,2019f; Tung和Mori,2019; Yu等人。,2019)。教师模型的参数(或各层之间的连接)也包含其他知识(Liu等人,2019c)。

4 蒸馏的策略

根据教师模型是否与学生模型同时更新,知识蒸馏的学习方案可以直接分为三大类:离线蒸馏,在线蒸馏和自蒸馏,如图6所示

  • 离线蒸馏

在原始知识蒸馏方法中(Hinton等,2015),知识从预训练的教师模型转移到学生模型,整个训练过程有两个阶段,即:1)教师模型是在蒸馏之前、首先在一组训练样本上训练的;2)教师模型用logit或中间特征的形式提取知识,指导蒸馏过程中学生模型的训练。离线蒸馏的第一阶段通常不作为知识蒸馏的一部分进行讨论,即,假设教师模型是预定义的,很少关注教师模型结构及其与学生模型的关系。因此,离线方法主要集中于改进知识转移的不同部分,包括知识的设计(Hinton等,2015;Romero等,2015)以及用于匹配特征或分布匹配的损失函数(Huang和Wang,2017;Passalis和Tefas,2018;Zagoruyko和Komodakis,2017;Mirzadeh等,2019;Li等,2018;Heo等,2019b;Asif等,2019)。

离线方法的主要优点是简单易行。例如,教师模型可能是位于不同机器上的不同软件训练的模型。知识可被提取而存储在缓存中。显然,离线蒸馏方法总是采用单向知识转移和两阶段训练程序。尽管如此,离线仍需要一个复杂的高容量教师网络及其大量的训练数据和时间。

  • 在线蒸馏

尽管离线蒸馏方法简单有效,但离线中的一些问题已引起研究界的越来越多的关注(Mirzadeh et al。,2019)。为了克服局限性,提出在线蒸馏以进一步改善学生模型的性能,特别是在没有大容量高性能教师模型的情况下(Zhang等人,2018b; Chen等人,2020a) 。

在线蒸馏中,教师模型和学生模型同时更新,整个知识蒸馏框架是端到端训练的。近两年已提出了多种在线知识蒸馏方法(Zhang等人,2018b; Chen等人,2020a; Zhu and Gong,2018; Xie等人,2019; Anil等人, 2018; Kim等,2019b; Zhou等,2018)。

比如,在 deep mutual learning 深度互学习中(Zhang等人,2018b),多个神经网络以协作方式进行,在训练过程中,任何一个网络都可以作为学生模型,其他模型可以作为老师。Chen等(2020a)进一步将auxiliary peers 和 a group leader 引入深度互学习中,以形成多种peer模型。为了降低计算成本,Zhu and Gong(2018)提出了一种多分支架构,其中每个分支表示一个学生模型,不同分支共享相同的骨干网络。Kim等人没有使用logits ,而引入特征融合模块来构建教师分类器。谢等(2019)没有使用(常规)卷积层去构建学生模型。Anil等利用在线蒸馏来训练大规模分布式神经网络,并提出了一种称为共同蒸馏的在线蒸馏变体,训练具有相同架构的多个模型,并且通过转移其他模型的知识来训练任何一个模型。最近,一种在线对抗知识蒸馏方法同时利用类别概率和特征图的知识,由鉴别者同时训练多个网络(Chung等,2020)。

  • 自蒸馏

在自蒸馏中,相同的网络被用于教师和学生模型(Yuan等人,2019; Zhang等人,2019b; Hou等人,2019; Yang等人,2019b; Yun等人,2019;Hahn和Choi,2019;Lee等人,2019a)。它也可视为在线蒸馏的特殊情况。

为了进一步直观地了解蒸馏,还可以从人类教师-学生学习的角度总结离线,在线和自蒸馏。离线蒸馏意味着知识渊博的老师向新生传授知识;在线蒸馏是指师生在老师为主要监督下互相学习;自蒸馏是学生无需老师就能自学知识。这三种蒸馏方法可以结合起来进行优势互补。

5 教师-学生网络架构

知识蒸馏原本是为了压缩深度神经网络(Hinton et al,2015)。深层神经网络的复杂性主要来自两个方面:深度和宽度。通常需要从更深、更宽的神经网络到更浅和更“瘦”的神经网络(Romero等,2015)。

学生网络通常选择为:1)教师网络的简化版本:更少层数,每层通道数更少(Wang等人,2018a);2)教师网络的量化版本,其中网络的结构是保留着的(Polino等人,2018; Mishra和Marr,2017;Wei等,2018; Shin等人,2019);3)具有高效基本操作的小型网络(Howard等,2017; Zhang等,2018a; Huang等人,2017);4)具有优化的全球网络结构的小型网络(Liu等,2019h;Xie等,2020;Gu和Tresp, 2020);或5)与老师同一个网络(Zhang等, 2018b; Furlanello等人,2018)。

待续。

6 蒸馏算法

7 蒸馏应用

本文分享自微信公众号 - 机器学习与生成对抗网络(AI_bryant8),作者:bryant8

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 2020AI炼丹炉选择参考!大力神丹,this is for U !

    表现State-of-the-art (SOTA) 的深度学习模型越来越需要更大的显存开销,现在很多GPU已经开始日渐乏力。本文将展示一些GPU在训练SOTA模...

    公众号机器学习与生成对抗网络
  • 【笔记】一些Attention 方面的网络

    视觉注意力的成功主要归功于这样的合理假设:人类视觉并不是一次性处理整个图像,相反,人们只关注整个视觉空间的某些选择性部分,这视需要而定Control of go...

    公众号机器学习与生成对抗网络
  • 语义金字塔式-图像生成:一种使用分类模型特征的方法

    ;(2)噪声矢量z,它可以使得生成多样化并去学习一个分布而非一对一(重建)映射;(3)一组掩码

    公众号机器学习与生成对抗网络
  • 大公司都在使用什么开发流程?

    可能很多工程师对于基于V模型的开发流程很熟悉,而且很多工程师早期都是按照手工的方式去完成这个流程,导致新产品的开发周期很长,这在日益增长和产品更新日益加快的市场...

    用户1605515
  • 十万同时在线用户,需要多少内存?——Newbe.Claptrap 框架水平扩展实验

    Newbe.Claptrap 项目是笔者正在构建以反应式、Actor模式和事件溯源为理论基础的一套服务端开发框架。本篇我们将来了解一下框架在水平扩展方面的能力。

    newbe36524
  • 麻省理工学院的新系统TextFooler, 可以欺骗Google的自然语言处理系统及Google Home的音频

    两年前,Google的AI还不太成熟。一段时间以来,有一部分计算机科学研究一直致力于更好地理解机器学习模型如何处理这些“对抗性”攻击,这些攻击是故意用来欺骗或...

    AI科技大本营
  • [边学边练]用简单实例学习React

    学习之路不可停止,最近在玩 React。也动手尝试写了一个实例。借此整理总结下初步学习 React 的一些基础知识。因为这几天比较忙,没那么多时间,所以实例和文...

    守候i
  • 解决过拟合:如何在PyTorch中使用标签平滑正则化

    在训练深度学习模型的过程中,过拟合和概率校准(probability calibration)是两个常见的问题。一方面,正则化技术可以解决过拟合问题,其中较为常...

    deephub
  • 智能合约:整型溢出漏洞

    一个小朋友,他可以数着手指运算十以内的运算,比如 1+1=2,他可以用两个手指算出来,但是如果你问他 5+6 等于多少,他数完十个手指之后发现手指不够用了,就会...

    yichen
  • css3动画的一些chromium的堆栈

    libcef.dll!blink::AnimatableTransform::AnimatableTransform libcef.dll!blink:...

    龙泉寺扫地僧

扫码关注云+社区

领取腾讯云代金券