每天给你送来NLP技术干货!


来自:GiantPandaCV

这一篇介绍各个算法的蒸馏机制,根据教师网络是否和学生网络一起更新,可以分为离线蒸馏,在线蒸馏和自蒸馏。

感性上理解三种蒸馏方式:

  • 离线蒸馏可以理解为知识渊博的老师给学生传授知识。

  • 在线蒸馏可以理解为教师和学生一起学习。

  • 自蒸馏意味着学生自己学习知识。

1. 离线蒸馏 Offline Distillation

上图中,红色表示pre-trained, 黄色代表To be trained。

早期的KD方法都属于离线蒸馏,将一个预训练好的教师模型的知识迁移到学生网络,所以通常包括两个阶段:

  • 在蒸馏前,教师网络在训练集上进行训练。

  • 教师网络通过logits层信息或者中间层信息提取知识,引导学生网络的训练。

第一个阶段通常不被认为属于知识蒸馏的一部分,因为默认教师网络本身就是已经预训练好的。一般离线蒸馏算法关注与提升知识迁移的不同部分,包括:知识的形式,损失函数的设计,分布的匹配。

Offline Distillation优点是实现起来比较简单,形式上通常是单向的知识迁移(即从教师网络到学生网络),同时需要两个阶段的训练(训练教师网络和知识蒸馏)。

Offline Distillation缺点是教师网络通常容量大,模型复杂,需要大量训练时间,还需要注意教师网络和学生网络之间的容量差异,当容量差异过大的时候,学生网络可能很难学习好这些知识。

2. 在线蒸馏 Online Distillation

上图中,教师模型和学生模型都是to be trained的状态,即教师模型并没有预训练。

在大容量教师网络没有现成模型的时候,可以考虑使用online distillation。使用在线蒸馏的时候,教师网络和学生网络的参数会同时更新,整个知识蒸馏框架是端到端训练的。

  • Deep Mutual Learning(dml)提出让多个网络以合作的方式进行学习,任何一个网络可以作为学生网络,其他的网络可以作为教师网络。

  • Online Knowledge Distillation via Collaborative Learning提出使用soft logits继承的方式来提升dml的泛化性能。

  • Oneline Knowledge distillation with diverse peers进一步引入了辅助peers和一个group leader来引导互学习过程。

  • 为了降低计算代价,Knowledge Distillation by on-the-fly native ensemble通过提出一个多分支的架构,每个分支可以作为一个学生网络,不同的分支共享相同的的backbone。

  • Feature fusion for online mutual knowledge distillation提出了一种特征融合模块来构建教师分类器。

  • Training convolutional neural networks with cheap convolutions and online distillation提出使用cheap convolutioin来取代原先的conv层构建学生网络。

  • Large scale distributed neural network training throgh online distillation采用在线蒸馏训练大规模分布式网络模型,提出了一种在线蒸馏的变体-co-distillation。co-distillation同时训练多个相同架构的模型,每一个模型都是经由其他模型训练得到的。

  • Feature-map-level online adversarial knowledge distillation提出了一种在线对抗知识蒸馏方法,利用类别概率和特征图的知识,由判别器同时训练多个网络

在线蒸馏法是一种具有高效并行计算的单阶段端到端训练方案。然而,现有的在线方法(如相互学习)通常不能解决在线设置中的大容量教师,因此,进一步探索在线设置中教师和学生模型之间的关系是一个有趣的话题。

3. 自蒸馏 Self-Distillation

在自蒸馏中,教师和学生模型使用相同的网络。自蒸馏可以看作是在线蒸馏的一种特殊情况,因为教师网络和学生网络使用的是相同的模型。

  • Be your own teacher: Improve the performance of convolutional neural networks via self distillation 提出了一种新的自蒸馏方法,将网络较深部分的知识蒸馏到网络较浅部分。

  • Snapshot distillation:Teacher-student optimization in one generation 是自蒸馏的一种特殊变体,它将网络早期阶段(教师)的知识转移到后期阶段(学生),以支持同一网络内有监督的培训过程。

  • 为了进一步减少推断的时间,Distillation based training for multi-exit architectures提出了基于蒸馏的训练方案,即浅层exit layer在训练过程中试图模拟深层 exit layer的输出。

  • 最近,自蒸馏已经在Self-distillation amplifies regularization in hilbert space进行了理论分析,并在Self-Distillation as Instance-Specific Label Smoothing中通过实验证明了其改进的性能。

  • Revisit knowledge distillation: a teacher-free framework 提出了一种基于标签平滑化的无教师知识蒸馏方法。

  • Regularizing Class-wise Predictions via Self-knowledge Distillation提出了一种基于类间(class-wise)的自我知识蒸馏,以与相同的模型在同一源中,在同一源内的训练模型的输出分布相匹配。

  • Rethinking data augmentation: Self-supervision and self-distillation提出的自蒸馏是为数据增强所采用的,并对知识进行增强,以此提升模型本身的性能。

4. 教师学生架构

在知识提炼中,师生架构是形成知识传递的通用载体。换句话说,从教师到学生的知识获取和提炼的质量是由设计教师和学生网络的方式 决定的。

就人类的学习习惯而言,我们希望学生能找到一个合适的老师。因此,要很好地完成知识提炼中的知识捕捉和提炼,如何选择或设计合适的教师和学生的结构 是非常重要而困难的问题。

最近,在蒸馏过程中,教师和学生的模型设置几乎是预先固定的,其尺寸和结构都不尽相同,这样就容易造成模型容量差距。然而,如何对教师和学生的体系结构进行特殊的设计,以及为什么他们的体系结构是由这些模型设置决定的,这些问题几乎没有得到解答。

这部分将探讨的教师模型和学生模型的结构之间的关系,如上图所示。

在Hinton提出的KD中,知识蒸馏先前被设计用来压缩深度神经网络,深度神经网络的复杂度主要来自于网络的深度和宽度。通常需要将知识从更深更宽的神经网络转移到更浅更窄的神经网络。学生网络被选择为:

  • 教师网络的简化版:通道数和层数减少。

  • 教师网络的量化版:网络结构被保留下来。

  • 具有高效基本操作的小型网络。

  • 具有优化全局网络结构的小型网络。

  • 与教师相同的网络。

大型深度神经网络和小型学生网络之间的模型容量差距会降低知识转移的性能 。为了有效地将知识转移到学生网络中,已经提出了多种方法来控制降低模型的复杂性。比如:

  • Improved knowledge distillation via  teacher assistant引入教师助理,缓解教师模式和学生模式之间的训练gap。

  • Residual Error Based Knowledge Distillation提出使用残差学习来降低训练gap,辅助的结构主要用于学习残差错误。

还有一些工作将关注点放在:最小化学生模型和教师模型结构上差异

  • Model compression via distillation and quantization将网络量化与知识蒸馏相结合,即学生模型是教师模型的量化版本。

  • Deep net triage:  Analyzing the importance of network layers via structural compression.提出了一种结构压缩方法,将多个层学到的知识转移到单个层。

  • Progressive blockwise knowledge distillation for  neural network acceleration在保留感受野的同时,从教师网络向学生网络逐步进行block-wise的知识转移。

以往的研究大多集中在设计教师与学生模型的结构 或教师与学生之间的知识迁移机制 。为了使一个小的学生模型与一个大的教师模型相匹配,以提高知识提炼的绩效,需要具有适应性的师生学习架构。近年来,知识提炼中的神经结构搜索,即在教师模型的指导下,对学生结构和知识转移进行联合搜索,将是未来研究的一个有趣课题。

  • Search to distill: Pearls are everywhere but not the eyes

  • Self-training with Noisy Student improves ImageNet classification

  • Search for Better Students  to Learn Distilled Knowledge

以上的几个工作都是在给定教师网络的情况下,搜索合适的学生网络结构。


投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

整理不易,还望给个在看!

知识蒸馏 | 综述:蒸馏机制相关推荐

  1. 知识蒸馏综述:蒸馏机制

    作者丨pprp 来源丨GiantPandaCV 编辑丨极市平台 导读 这一篇介绍各个算法的蒸馏机制,根据教师网络是否和学生网络一起更新,可以分为离线蒸馏,在线蒸馏和自蒸馏. 感性上理解三种蒸馏方式: ...

  2. 论文阅读:Knowledge Distillation: A Survey 知识蒸馏综述(2021)

    论文阅读:Knowledge Distillation: A Survey 知识蒸馏综述2021 目录 摘要 Introduction Background 知识 基于响应的知识 基于特征的知识 基于 ...

  3. 【知识蒸馏】2021年最新知识蒸馏综述和论文总结

    [知识蒸馏]2021最新知识蒸馏综述和论文总结 简介: 按照"知识"的定义来分类: 按照教师模型来分类: 按照"数据"有无来分类: 简介: 按照"知识 ...

  4. 知识蒸馏 循环蒸馏_Java垃圾收集蒸馏

    知识蒸馏 循环蒸馏 串行,并行,并发,CMS,G1,Young Gen,New Gen,Old Gen,Perm Gen,Eden,Tenured,Survivor Spaces,Safepoints ...

  5. A Survey on Knowledge Graphs___Representation, Acquisition and Applications.知识图谱综述:表示,获取,应用

    知识图谱综述:表示.获取及应用 这是研究生第一篇综述文章,第一次读也是花了好几天的时间. 摘要:人类的知识提供了对世界的一种形式的理解.表征实体之间结构关系的知识图已成为认知和人的智能研究的热门方向. ...

  6. 基于深度学习的知识图谱综述

    基于深度学习的知识图谱综述 摘要:随着现如今计算机设备的更新,计算能力的不断提高促使深度学习再一度推上热门技术,深度学习已经广泛应用于图像处理.文本挖掘.自然语言处理等方面,在医学.交通.教育.旅游等 ...

  7. 【知识图谱综述】Knowledge Graphs: A Survey

    知识图谱综述 本文主要在阅读文章Knowledge Graphs. ACM Comput. Surv., 54(4): 1–37. 2021的基础上进行归纳总结,涉及原理知识较浅,旨在帮助对知识图谱进 ...

  8. radioml2018数据集_7 Papers Radios | CVPR 2020获奖论文;知识蒸馏综述

    机器之心 & ArXiv Weekly Radiostation 参与:杜伟.楚航.罗若天 本周的重要论文是CVPR 2020 公布的各奖项获奖论文,包括最佳论文和最佳学生论文等. 目录: K ...

  9. 知识蒸馏综述:网络结构搜索应用

    [GiantPandaCV导语]知识蒸馏将教师网络中的知识迁移到学生网络,而NAS中天然的存在大量的网络,使用KD有助于提升超网整体性能.两者结合出现了许多工作,本文收集了部分代表性工作,并进行总结. ...

  10. 深度学习中的3个秘密:集成、知识蒸馏和蒸馏

    作者:Zeyuan Allen-Zhu 来源:AI公园 编译:ronghuaiyang 在现在的标准技术下,例如过参数化.batch-normalization和添加残差连接,"现代&quo ...

最新文章

  1. C#一个事件中调用另一个事件
  2. SQL学习总结-思维导图
  3. JVM-04垃圾收集Garbage Collection(上)【垃圾对象的判定】
  4. 做技术的,这些观点真的扯淡!
  5. vscode设置中文,设置中文不成功问题
  6. 使用Excel VBA(快捷键)(加菜单)
  7. (71)Verilog HDL时间度量系统函数:$time
  8. 自学python能干什么-python能干啥
  9. 寻找linux最新版本,在各大Linux发行版中安装和使用inxi以查找Linux系统详细信息...
  10. 利用application在页面中显示访问次数
  11. 互联网国家缩写代码一览表
  12. asus z170 asrock b150点位图 换换口味欣赏欣赏
  13. 【数据库】数据库期末考试复习试题与答案
  14. 社交媒体与邮件营销结合实现1+12的效果,你会玩吗?
  15. 鸿蒙系统体验报告,我雷某人摊牌了,鸿蒙2.0版本使用体验汇报
  16. 冰羚-README.md翻译
  17. JS使用canvas实现(下雨天)特效
  18. 高分辨率屏幕下vm安装xp的解决方案
  19. java ssm羽毛球馆管理和交流平台系统
  20. 傅里叶变换频域积分性质和频域卷积性质证明

热门文章

  1. javascript实例:路由的跳转
  2. 我的Python学习笔记(四):动态添加属性和方法
  3. linux exec操作文件描述符
  4. c++学习笔记--C++Primer第4版--标准库类型string
  5. ASP.NET站点性能提升-缩短首页生成时间
  6. 二极管(一):反向恢复时间
  7. Springboot2.x 拦截器
  8. TCP半连接队列和全连接
  9. fullPage最后一屏自适应
  10. Python 模块EasyGui