什么是知识蒸馏技术?

知识蒸馏技术首次出现是在Hinton几年前的一篇论文《Distilling the Knowledge in a Neural Network》。老大爷这么大岁数了还孜孜不倦的发明各种人工智能领域新名词,让我这种小白有很多可以去学习了解的内容,给个赞。

那什么是知识蒸馏技术呢?知识蒸馏技术的前提是将模型看作一个黑盒,数据进入后经过处理得到输出。通常意义上,复杂的模型的输出会比简单模型准确,那么是否有办法让复杂模型的知识传递给简单模型,就是知识蒸馏要探索的内容。

这就有点类似于迁移学习的原理,在迁移学习中,网络先学习大数量级的数据,然后生成base模型,再用小数据在base模型的基础上Fine-Tune。在知识蒸馏中,也是先生成复杂的Teacher模型,然后采用Teacher模型将知识传递给简单的Student模型的方式。

这样做的好处就是Student网络不必那么复杂,某种意义上实现了模型压缩的功能。

为什么叫蒸馏呢?

我最先好奇的其实不是Teacher网络和Student网络怎么传递知识,而是为什么用了Distilling这个词,我甚至觉得是不是某些人翻译错误了。于是有道了一下,蒸馏也可以是提炼的意思,我就懂了。

在化学领域有一个概念叫沸点,不同液体有不同的沸点,假设酒精和水混合在一起,我们想提取混合物中的水,就可以将温度加热到小于水的沸点而大于酒精沸点的温度,这样酒精就挥发了。知识蒸馏也是用相似的手段将需要的知识从Teacher网络蒸馏出来传递给Student网络。

Teacher网络和Student网络

具体怎么做呢?就是先构建一个非常复杂的网络作为Teacher网络,默认它的模型预测准确性很高。然后再构建一个简单的Student网络,用Teacher网络的输出结果q和Student网络的输出结果p做Cross Entropy(交叉熵),y是真实的目标值,最终算Loss的公式如下。

这样就达到了知识传递的问题,但是第二个问题来了。如果Teacher网络的预测准确率很准,比如Teacher网络是一个图片识别模型,识别猫、狗、兔子,Teacher网络很准的话,最后的输出可能是以下这样的概率分布结果,非常不均匀

  1. 猫的概率:0.998

  2. 兔子的概率:0.0013

  3. 狗的概率:0.0007

这种结果被称为Hard Label,因为真实传递下去的知识只有“猫”这一个结果,忽略了“兔子”比“狗”更像“猫”这样的知识,因为“兔子”和“狗”的权重太低。Teacher网络需要Soft Label,怎么做呢?在Softmax结果加入下面的公式:

其中zi是Softmax输出的logit,T取1,那么这个公式就是输出Hard Label。如果T的取值大于1,T越大整个Label的分布就变得越均匀,Hard Label就自然转变成了Soft Label。

总结

上一篇文章讲了模型压缩技术中的剪枝、量化、共享权重,加上今天这篇知识蒸馏就比较完整了。感觉知识蒸馏这种方案比较适合终端设备的模型压缩,特别是CV相关的模型。

非技术背景,纯YY,有不对的请大神指正。

参考文章:

(1)https://zhuanlan.zhihu.com/p/90049906

(2)https://blog.csdn.net/nature553863/article/details/80568658

(3)https://zhuanlan.zhihu.com/p/81467832

(衷心感谢以上文章的作者们)

浅谈“知识蒸馏”技术在机器学习领域的应用相关推荐

  1. 浅谈区块链技术在商业领域的应用

    近年来,由于虚拟数字货币炒作的火爆,作为其底层技术的区块链也开始受到广泛关注.区块链具有去中心化.去信任.集体维护.可靠存储的特征,目前己在虚拟货币领域广泛应用. 自比特币诞生以来,目前全球已陆续出现 ...

  2. 深度学习中的知识蒸馏技术(下)

    本文概览: 写在前面: 这是一篇介绍知识蒸馏在推荐系统中应用的文章,关于知识蒸馏理论基础的详细介绍,请看我的这篇文章: 深度学习中的知识蒸馏技术(上) 1. 背景介绍 1.1 简述推荐系统架构 如果从 ...

  3. 【深度学习】深度学习中的知识蒸馏技术(上)简介

    本文概览: 1. 知识蒸馏介绍 1.1 什么是知识蒸馏? 在化学中,蒸馏是一种有效的分离不同沸点组分的方法,大致步骤是先升温使低沸点的组分汽化,然后降温冷凝,达到分离出目标物质的目的.化学蒸馏条件:( ...

  4. 浅谈区块链技术应用场景

    浅谈区块链技术应用场景 摘要 一,区块链技术简介 二,区块链技术基础 1. 点对点之间传输信息的网络 2. 非对称加密技术 3. 共识机制 三,基于软件层面区块链技术应用场景 应用层 区块链技术与身份 ...

  5. 浅谈人脸识别在公共安全领域的应用

    浅谈人脸识别在公共安全领域的应用 电子科技大学 格拉斯哥学院2017级杨凯 随着人脸识别技术的普及与发展,它越来越多的领域得到了广泛的应用,如人们所熟知的门禁系统和智能手机上的面部解锁功能.在社会安全 ...

  6. 计算机与音乐结合论文,计算机毕业论文:浅谈计算机音乐技术在音乐教学中的应用...

    计算机毕业论文:浅谈计算机音乐技术在音乐教学中的应用 计算机音乐技术是计算机技术与音乐理论结合在一起而形成的一门新的学科,进入了21世纪,随着计算机技术应用的领域越来越广泛,已经深入到了社会的各个方面 ...

  7. 计算机网络仿真技术概述,浅谈计算机网络仿真技术及其研究

    浅谈计算机网络仿真技术及其研究 来源:用户上传 作者: 摘要:在信息化和工业化相互促进的现代化进程中,计算机网络仿真技术将逐步深入到国民经济的各个领域,并将扮演越来越重要的角色.该文正是基于此背景,对 ...

  8. 浅谈计算机仿真技术对各行业发展的重要性和必要性

    浅谈计算机仿真技术对各行业发展的重要性和必要性 计算机仿真技术是以计算机为基础,根据问题对象的实际要求,建立真实的数学模型,并将其转换成仿真模型.在不同的问题下,利用计算机系统来演示运行状态,从而将抽 ...

  9. 深度学习中的知识蒸馏技术(上)

    本文概览: 1. 知识蒸馏介绍 1.1 什么是知识蒸馏? 在化学中,蒸馏是一种有效的分离不同沸点组分的方法,大致步骤是先升温使低沸点的组分汽化,然后降温冷凝,达到分离出目标物质的目的.化学蒸馏条件:( ...

最新文章

  1. 只需一行代码,你的纯文本秒变 Markdown
  2. android 原理 组合控件_Android自定义控件进阶01-自定义控件开发套路与流程
  3. 软件能力成熟度CMMI3管理过程域
  4. 【oracle】手动安装EM
  5. 谈一谈为什么我要创建个人博客
  6. python代码中使用pip安装文件
  7. 使用Python预处理机器学习需要的手写体数字图像文件数据集
  8. Ubuntu下安装Python3(与旧Python2版本共存)
  9. 利用Pandas库进行简单的数据规整
  10. (转)DeepMind 的下一场博弈:用机器学习颠覆资产管理?
  11. 远程桌面未知的用户名_远程桌面连接 提示用户名密码错误的解决办法
  12. 家用无线漫游组网设置-亲测可用
  13. 粒子群在小车机械手臂的应用
  14. 组装计算机什么配置比较好,组装电脑什么配置好 组装电脑配置推荐
  15. 强学习器------随机森林
  16. 程序员笑话常客:“rm -rf *“和 “rm -rf /*“的区别
  17. Qt5 模拟鼠标点击
  18. Win7系统不同程序无法同时播放声音是怎么回事?
  19. c语言编程一张纸对折,关于一张纸的对折问题
  20. python pyserial 无法识别VSPD创建的虚拟串口 windons 10

热门文章

  1. linux epoll监听套接字实例
  2. 如何查看keepalived版本号_Linux下Keepalived 安装与配置
  3. 冒泡排序c++代码_八大排序算法(解释+代码+结果+算法优化)
  4. java注解判断字段是否存在_使用注解和反射判断指定的字段不能为空
  5. f5 会话保持 负载均衡_四层负载均衡和七层负载均衡区别在哪里?
  6. python爬取有道词典_利用Python3和Charles爬取有道词典,生成翻译exe单文件
  7. 文本编辑器创建工具栏
  8. C程序背后的故事--头文件、库文件的查找
  9. 蓝桥杯java最小公倍数_蓝桥杯算法训练 最大最小公倍数
  10. php中的伪类选择器,css伪类选择器介绍