作者丨pprp

来源丨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

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

本文仅做学术分享,如有侵权,请联系删文。

3D视觉精品课程推荐:

1.面向自动驾驶领域的多传感器数据融合技术

2.面向自动驾驶领域的3D点云目标检测全栈学习路线!(单模态+多模态/数据+代码)
3.彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进
4.国内首个面向工业级实战的点云处理课程
5.激光-视觉-IMU-GPS融合SLAM算法梳理和代码讲解
6.彻底搞懂视觉-惯性SLAM:基于VINS-Fusion正式开课啦
7.彻底搞懂基于LOAM框架的3D激光SLAM: 源码剖析到算法优化
8.彻底剖析室内、室外激光SLAM关键算法原理、代码和实战(cartographer+LOAM +LIO-SAM)

9.从零搭建一套结构光3D重建系统[理论+源码+实践]

10.单目深度估计方法:算法梳理与代码实现

11.自动驾驶中的深度学习模型部署实战

12.相机模型与标定(单目+双目+鱼眼)

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、多传感器融合、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流、ORB-SLAM系列源码交流、深度估计等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、激光/视觉SLAM自动驾驶等)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近4000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. JQuery:DOM操作
  2. Tomcat网页加载速度过慢的解决方法
  3. 简述安装linux至少需要哪两个分区?还有哪些常用分区?,Linux试题
  4. 当clear line vty 命令不起作用时
  5. JZOJ 5444. 【NOIP2017提高A组冲刺11.2】救赎
  6. 【MFC】CDialog类详解
  7. 第 7 章 异常处理结构、代码测试与调试
  8. 用idea建立jsp项目_用idea创建maven项目,配置tomcat详解
  9. 操作系统之计算机系统概述:1、操作系统概述(定义、功能、作用)
  10. android 支付宝月账单 统计图_@三明人 支付宝年度账单来了!今天的你晒账单了吗?...
  11. gtp怎么安装系统_UEFI+GTP模式下使用GHO文件安装WIN7或WIN8图文教程
  12. 用Asp.Net创建基于Ajax的聊天室程序
  13. 人口各省预测模型matlab_基于MATLAB的人口预测模型
  14. RGB颜色对照表(数值+英文,Markdown可用)
  15. 算法分析之常用符号大O、小o、大Ω符号、大Θ符号、w符号
  16. 云计算工程师面试题集锦,常见云计算面试题及答案
  17. c语言单片机自动浇花系统,Arduino零基础C语言编程ch5-5.13综合示例–自动浇花系统...
  18. 二分查找(折半查找)简介与代码实现(C++)
  19. Linux Redhat 7.6 操作系统 下载安装详解
  20. 我学会了用计算机作文,我学会了用计算机

热门文章

  1. Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
  2. linux实战专家为你梳理网站集群安全基本框架思路!
  3. 优点和阵列的缺点,并且一个链表
  4. 案例:用JS实现放大镜特效
  5. Linux IO模型漫谈(6)- 信号驱动IO模型
  6. DELL equallogic 的MPIO配置
  7. 控制Open With菜单项的注册表键值
  8. Windows下的for
  9. 史上最强 NIO 框架,没有之一!!!
  10. redis灵魂拷问:19图+11题带你面试通关