1,简介

昆虫作为幼虫时擅于从环境中汲取能量,但是成长为成虫后确是擅于其他方面,比如迁徙和繁殖等。

同理神经网络训练阶段从大量数据中获取网络模型,训练阶段可以利用大量的计算资源且不需要实时响应。然而到达使用阶段,神经网络需要面临更加严格的要求包括计算资源限制,计算速度要求等等。

由昆虫的例子我们可以这样理解神经网络:一个复杂的网络结构模型是若干个单独模型组成的集合,或者是一些很强的约束条件下(比如dropout率很高)训练得到的一个很大的网络模型。一旦复杂网络模型训练完成,我们便可以用另一种训练方法:“蒸馏”,把我们需要配置在应用端的缩小模型从复杂模型中提取出来。

“蒸馏”的难点在于如何缩减网络结构但是把网络中的知识保留下来。知识就是一幅将输入向量导引至输出向量的地图。做复杂网络的训练时,目标是将正确答案的概率最大化,但这引入了一个副作用:这种网络为所有错误答案分配了概率,即使这些概率非常小。

我们将复杂模型转化为小模型时需要注意保留模型的泛化能力,一种方法是利用由复杂模型产生的分类概率作为“软目标”来训练小模型。在转化阶段,我们可以用同样的训练集或者是另外的“转化”训练集。当复杂模型是由简单模型复合而成时,我们可以用各自的概率分布的代数或者几何平均数作为“软目标”。当“软目标的”熵值较高时,相对“硬目标”,它每次训练可以提供更多的信息和更小的梯度方差,因此小模型可以用更少的数据和更高的学习率进行训练。

像MNIST这种任务,复杂模型可以给出很完美的结果,大部分信息分布在小概率的软目标中。比如一张2的图片被认为是3的概率为0.000001,被认为是7的概率是0.000000001。Caruana用logits(softmax层的输入)而不是softmax层的输出作为“软目标”。他们目标是是的复杂模型和小模型分别得到的logits的平方差最小。而我们的“蒸馏法”:第一步,提升softmax表达式中的调节参数T,使得复杂模型产生一个合适的“软目标”  第二步,采用同样的T来训练小模型,使得它产生相匹配的“软目标”

   “转化”训练集可以由未打标签的数据组成,也可以用原训练集。我们发现使用原训练集效果很好,特别是我们在目标函数中加了一项之后。这一项的目的是是的小模型在预测实际目标的同时尽量匹配“软目标”。要注意的是,小模型并不能完全无误的匹配“软目标”,而正确结果的犯错方向是有帮助的。

2,蒸馏

T就是调节参数,一般设为1。T越大,分类的概率分布越“软”

“蒸馏”最简单的形式就是:以从复杂模型得到的“软目标”为目标(这时T比较大),用“转化”训练集训练小模型。训练小模型时T不变仍然较大,训练完之后T改为1。

当“转化”训练集中部分或者所有数据都有标签时,这种方式可以通过一起训练模型使得模型得到正确的标签来大大提升效果。一种实现方法是用正确标签来修正“软目标”,但是我们发现一种更好的方法是:对两个目标函数设置权重系数。第一个目标函数是“软目标”的交叉熵,这个交叉熵用开始的那个比较大的T来计算。第二个目标函数是正确标签的交叉熵,这个交叉熵用小模型softmax层的logits来计算且T等于1。我们发现当第二个目标函数权重较低时可以得到最好的结果

【模型压缩】蒸馏神经网络(Distill the Knowledge in a Neural Network)相关推荐

  1. 蒸馏神经网络(Distill the Knowledge in a Neural Network)

    本文是阅读Hinton 大神在2014年NIPS上一篇论文:蒸馏神经网络的笔记,特此说明.此文读起来很抽象,大篇的论述,鲜有公式和图表.但是鉴于和我的研究方向:神经网络的压缩十分相关,因此决定花气力好 ...

  2. Paper:《Distilling the Knowledge in a Neural Network神经网络中的知识蒸馏》翻译与解读

    Paper:<Distilling the Knowledge in a Neural Network神经网络中的知识蒸馏>翻译与解读 目录 <Distilling the Know ...

  3. Distilling the Knowledge in a Neural Network 论文笔记蒸馏

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/bryant_meng/article/ ...

  4. 【Distilling】《Distilling the Knowledge in a Neural Network》

    arXiv-2015 In NIPS Deep Learning Workshop, 2014 文章目录 1 Background and Motivation 2 Conceptual block ...

  5. 第一节课-第二周:神经网络的编程基础(Basics of Neural Network programming)

    二.神经网络的编程基础(Basics of Neural Network programming) 2.1 二分类(Binary Classification) 2.2 逻辑回归(Logistic R ...

  6. 《吴恩达深度学习》学习笔记002_神经网络的编程基础(Basics of Neural Network programming)

    http://www.ai-start.com/dl2017/html/lesson1-week2.html 神经网络的编程基础(Basics of Neural Network programmin ...

  7. 【论文翻译_知识蒸馏】Distilling Holistic Knowledge with Graph Neural Networks

    (以下的"提取"都可以替换为"蒸馏"),收录于ICCV2021 摘要 知识提炼(KD)旨在将知识从一个更大的优化教师网络转移到一个更小的可学习学生网络.现有的知 ...

  8. 【模型压缩】Channel Pruning for Accelerating Very Deep Neural Networks算法笔记

    转:https://blog.csdn.net/u014380165/article/details/79811779 论文:Channel Pruning for Accelerating Very ...

  9. 《Distilling the Knowledge in a Neural Network》 论文阅读笔记

    原文链接:https://arxiv.org/abs/1503.02531   第一次接触这篇文章是在做网络结构的时候,对于神经网络加速,知识蒸馏也算是一种方法,当时连同剪纸等都是网络压缩的内容,觉得 ...

最新文章

  1. 皮一皮:看看你有没有在自杀...
  2. 基站基带fgpa 服务器芯片,基于FPGA的AIS基带数据处理芯片设计
  3. Linq 演变的过程(delegate = Lamb = Linq)
  4. 我的世界java版导入地图_网易我的世界备份与导入地图
  5. MAUI 跨平台播客应用程序(Conf 2021)
  6. 易点云在京发布璇玑调度系统 中小企业办公IT升级步伐加快
  7. 外卖餐饮点餐系统,连锁餐饮,公众号小程序源码2.1.5
  8. js对象赋值只保留存在的属性_js对象的创建对象模式和继承模式(上)---构建对象模式...
  9. 如何做到行业顶尖位置?
  10. 【牛腩1】--- 服务器错误:编译错误
  11. mysql5.5java安装_配置非安装版的mysql 5.5
  12. Noip 2016 Day1 题解
  13. python爬虫毕业论文大纲参考模板_毕业论文大纲参考模板.docx
  14. MySQL 重置密码
  15. SEO优化技术的简介
  16. 苹果appstore中兑换码的使用方法
  17. 项目集成腾讯移动直播总结--后端
  18. “大数据杀熟”杀的是你吗?
  19. Pycharm:注释、删除所有注释
  20. C语言《程序设计基础课程设计》题库

热门文章

  1. Bitvise SSH Client 8.32下载
  2. Unity最新版打包AssetBundle和加载的方法
  3. 2017网易笔试矩阵快速幂
  4. Arcgis中地理坐标系转投影坐标系(自定义地理坐标转换)
  5. 【雕爷学编程】Arduino动手做(67)---BMP180气压传感器
  6. C++ 拉格朗日插值法优化 DP
  7. U盘安装Ubuntu16.04报unable to find a medium containing a live file system和ACPI Error错误
  8. Oracle 19c VLDB and Partitioning Guide 第5章:管理和维护基于时间的信息 读书笔记
  9. web测试与APP测试方法总结
  10. 【flutter】type ‘Null‘ is not a subtype of type ‘bool‘