点击上方,选择星标置顶,每天给你送干货

阅读大概需要7分钟

跟随小博主,每天进步一丢丢

作者:Nishant Nikhil

编译:ronghuaiyang

来自:AI公园

导读

带你回顾知识蒸馏的6篇文章,了解知识蒸馏的演进历史。

历史

2012年,AlexNet在ImageNet数据上的表现超过了所有现有模型。神经网络即将被广泛采用。到2015年,许多SOTA都被打破了。业界的趋势是在你能找到的任何场景上都使用神经网络。VGG Net的成功进一步肯定了采用可以使用更深层次模型或模型集成来提高性能。

(模型集合只是一个花哨的术语。它意味着对多个模型的输出进行平均。比如,如果有三个模型,两个模型预测的是“A”,而一个模型预测的是“B”,那么就把最终的预测作为“A”(两票对一票))。

但是这些更深层次的模型和模型的集合过于昂贵,无法在推理过程中运行。(3个模型的集成使用的计算量是单个模型的3倍)。

思想

Geoffrey Hinton, Oriol Vinyals和Jeff Dean想出了一个策略,在这些预先训练的集成模型的指导下训练浅层模型。他们称其为知识蒸馏,因为你将知识从一个预先训练好的模型中提取到一个新的模型中。这就像是老师在指导学生,所以也被称为师生学习:https://arxiv.org/abs/1503.02531。

在知识蒸馏中,他们使用预训练模型的输出概率作为新的浅层模型的标签。通过这篇文章,你可以了解到这项技术的演进。

Fitnets

2015年出现了FitNets: hint for Thin Deep Nets(发布于ICLR'15)除了KD的损失,FitNets还增加了一个附加项。它们从两个网络的中点获取表示,并在这些点的特征表示之间增加均方损失。

经过训练的网络提供了一种新的学习-中间-表示让新的网络去模仿。这些表示有助于学生有效地学习,被称为hints。

FitNet能够压缩模型,同时保持几乎相同的性能

回过头看看,使用单点给出hints的选择不是最优的。随后的许多论文都试图改进这些hints。

Paying more attention to attention

Paying more attention to attention: Improving the performance of convolutional neural networks via Attention Transfer发布于ICLR 2017。

它们的动机与FitNets类似,但它们不是使用网络中某个点的表示,而是使用注意力图作为hints。(老师和学生的注意力图)。它们还使用网络中的多个点来提供hints,而不是FitNets中的单点hints。

A Gift from Knowledge Distillation

同年,A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning发布于CVPR 2017。

这和FitNets和注意力转移的论文也很类似。但是,与表示和注意力图不同的是,它们使用Gram矩阵给出了hints。

他们在论文中对此进行了类比:

“如果是人类的话,老师解释一个问题的解决过程,学生学习解决问题的过程。学生DNN不一定要学习具体问题输入时的中间输出,但可以学习遇到具体类型的问题时的求解方法。通过这种方式,我们相信演示问题的解决过程比讲授中间结果提供了更好的泛化。”

为了度量这个“解决流程”,他们在两个层的特征图之间使用了Gram矩阵。因此,它没有使用FitNets中的中间特征表示作为hints,而是使用特征表示之间的Gram矩阵作为hints。

Paraphrasing Complex Network

然后到了2018年,Paraphrasing Complex Network: Network Compression via Factor Transfer发布于NeurIPS 2018。

他们在模型中增加了另一个模块,他们称之为paraphraser。它基本上是一个不减少尺寸的自编码器。从最后一层开始,他们又分出另外一层用于reconstruction  loss。

学生模型中还有另一个名为translator的模块。它把学生模型的最后一层的输出嵌入到老师的paraphraser维度中。他们用老师潜在的paraphrased 表示作为hints。

学生模型应该能够为来自教师网络的输入构造一个自编码器的表示。

AComprehensive Overhaul of Feature Distillation

在2019年,A Comprehensive Overhaul of Feature Distillation发布于ICCV 2019。

他们认为我们获取hints的位置不是最佳的。通过ReLU对输出进行细化,在转换过程中会丢失一些信息。他们提出了marginReLU激活函数(移位的ReLU)。“在我们的margin ReLU,积极的(有益的)信息被使用而没有任何改变,而消极的(不利的)信息被压制。结果表明,该方法可以在不遗漏有益信息的情况下进行蒸馏。“

他们采用了partial L2 distance函数,目的是跳过对负区域信息的蒸馏。(如果该位置的学生和老师的特征向量都是负的,则没有损失)

Contrastive Representation Distillation发表于ICLR 2020。在这里,学生也从教师的中间表示进行学习,但不是通过MSE损失,他们使用了对比损失。

总的来说,这些不同的模型采用了不同的方法

  1. 增加蒸馏中传递信息的量。(特征表示、Gram矩阵、注意力图、Paraphrased表示、pre-ReLU特征)

  2. 通过调整损失函数,使蒸馏过程更有效(对比损失,partial L2 distance)

看待这些想法的另一种有趣的方式是,新想法是旧想法的向量和。

  1. KD的Gram矩阵 = Neural Style Transfer + KD

  2. KD的注意力图 = Attention is all you need + KD

  3. Paraphrased表示 KD = Autoencoder + KD

  4. Contrastive表示蒸馏 = InfoNCE + KD

其他向量的和是什么?

  1. GANs for KD(即改变特征表示之间的GAN损失的对比损失)

  2. 弱监督KD(Self-Training with Noisy Student Improves ImageNet classification)

—END—

英文原文:https://towardsdatascience.com/knowledge-distillation-a-survey-through-time-187de05a278a

下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!后台回复【五件套】
下载二:南大模式识别PPT后台回复【南大模式识别】说个正事哈由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:(1)点击页面最上方“深度学习自然语言处理”,进入公众号主页。(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。记得备注呦推荐两个专辑给大家:专辑 | 李宏毅人类语言处理2020笔记专辑 | NLP论文解读专辑 | 情感分析整理不易,还望给个在看!

知识蒸馏方法的演进历史综述相关推荐

  1. IJCAI 2021 | 中科院计算所:自监督增强的知识蒸馏方法

    知识蒸馏作为模型压缩里的一项重要技术,在学术界和工业界都得到了广泛的研究. 近日,AI Drive 邀请中科院计算所在读博士生杨传广,分享其在 IJCAI 2021 上发表的最新工作:自监督增强的知识 ...

  2. ACL 2021 | 结构化知识蒸馏方法

    本文介绍了上海科技大学屠可伟课题组与阿里巴巴达摩院的一项合作研究,提出了在结构预测问题上一种较为通用的结构化知识蒸馏方法.该论文已被 ACL 2021 接受为长文. 论文标题: Structural ...

  3. 目标检测中的知识蒸馏方法

    目标检测中的知识蒸馏方法 知识蒸馏 (Knowledge Distillation KD) 是模型压缩(轻量化)的一种有效的解决方案,这种方法可以使轻量级的学生模型获得繁琐的教师模型中的知识.知识蒸馏 ...

  4. PaddleClas-SSLD知识蒸馏方法梳理(82.4%ResNet50系列模型养成之路)

    简介 PaddleClas是PaddlePaddle最近开源的图像分类代码库,里面包括了目前比较常用的分类模型,ResNet.HRNet.DenseNet.ResNeXt等,配置文件里也提供了这些模型 ...

  5. 8.2 知识蒸馏方法概述

  6. CVPR 2022|解耦知识蒸馏!旷视提出DKD:让Hinton在7年前提出的方法重回SOTA行列!...

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 转载自:机器之心  |  旷视科技等 与主流的feature蒸馏方法不同,本研究将重心放回到logits蒸馏 ...

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

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

  8. 知识蒸馏 (一) 综述

    一.综述 *<Knowledge Distillation: A Survey>2021 IJCV <Knowledge Distillation and Student-Teach ...

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

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

  10. 悉尼大学 伦敦大学联合出品:知识蒸馏最新综述

    ©作者 | 夏劲松 学校 | 哈尔滨理工大学 研究方向 | 知识蒸馏.图神经网络 摘要 深度学习通过参数量巨大的模型,近几年中在多个领域取得了较好的效果,但是往往因为模型体积过大(模型的体积指的就是模 ...

最新文章

  1. 新手学stm32学f1还是f4,stm32初学者最好买哪种开发板?
  2. Python 技术篇-pip安装提示:‘pip‘ 不是内部或外部命令,也不是可运行的程序或批处理文件,问题解决方法
  3. zabbix中mysql连不上的排错_zabbix 安装及简单排错
  4. oracle pl/sql编程详细,Oracle框架:PL/SQL编程:
  5. 计算机网络基础:广域网协议相关知识笔记
  6. c++实现简单线程池代码
  7. datagridview取消默认选中_winform datagridview中的 combobox如何选中默认值?
  8. CleanCodeHandbook Chapter 9: Binary Search(48-50)
  9. python3练习-查找文件
  10. Android 四大组件 -- service
  11. mipi和isp处理_汽车摄像头的图像信号处理ISP NVP2650
  12. 开学季征文 | 一位开发实习生的真情流露
  13. 有了雀巢智能咖啡机,单身狗离“秀恩爱”还会远吗?
  14. swing-基础Graphics画布
  15. 数学建模笔记(1)——评价类问题
  16. 流水线中使用 docker in pod 方式构建容器镜像
  17. 2022广东省安全员B证第三批(项目负责人)考试试题及模拟考试
  18. 三星s9 android 版本,三星S9+先行版开箱上手,这还是你熟悉的安卓旗舰吗
  19. http工具类发送post和get请求
  20. VS验证码随机生成和字数控制

热门文章

  1. openwrt路由器进入安全模式
  2. [转载][翻译]Go的50坑:新Golang开发者要注意的陷阱、技巧和常见错误[1]
  3. 多线程同步工具——volatile变量
  4. 网络请求的null值处理
  5. DBMS_ERRLOG记录DML错误日志(一)
  6. 【编程基本功练习0】zoj 3486
  7. vue项目 拷到别的电脑应该怎吗再次重新运行
  8. easyui弹出加载遮罩层(转)
  9. C#中获去一个字符串中的汉字的个数 C#获取字符串全角的个数
  10. 如何快速上手使用STM32库函数