知识蒸馏(Knowledge Distillation)详细深入透彻理解重点
知识蒸馏是一种模型压缩方法,是一种基于“教师-学生网络思想”的训练方法,由于其简单,有效,在工业界被广泛应用。这一技术的理论来自于2015年Hinton发表的一篇神作:
论文链接
chrome-extension://ibllepbpahcoppkjjllbabhnigcbffpi/content/web/viewer.html?file=https%3A%2F%2Farxiv.org%2Fpdf%2F1503.02531.pdf
arxiv.org
Knowledge Distillation,简称KD,顾名思义,就是将已经训练好的模型包含的知识(”Knowledge”),蒸馏(“Distill”)提取到另一个模型里面去。今天,我们就来简单读一下这篇论文,力求用简单的语言描述论文作者的主要思想。在本文中,我们将从背景和动机讲起,然后着重介绍“知识蒸馏”的方法,最后我会讨论“温度“这个名词:
温度: 我们都知道“蒸馏”需要在高温下进行,那么这个“蒸馏”的温度代表了什么,又是如何选取合适的温度?
MNIST任务
假设某个输入的“2”更加形似"3",softmax的输出值中"3"对应的概率为0.1,而其他负标签对应的值都很小,而另一个"2"更加形似"7","7"对应的概率为0.1。这两个"2"对应的hard target的值是相同的,但是它们的soft target却是不同的,由此我们可见soft target蕴含着比hard target多的信息。并且soft target分布的熵相对高时,其soft target蕴含的知识就更丰富。
这就解释了为什么通过蒸馏的方法训练出的Net-S相比使用完全相同的模型结构和训练数据只使用hard target的训练方法得到的模型,拥有更好的泛化能力。
TextBrewer
5. 参考
深度压缩之蒸馏模型 - 风雨兼程的文章 - 知乎 https://zhuanlan.zhihu.com/p/24337627
知识蒸馏Knowledge Distillation - 船长的文章 - 知乎 https://zhuanlan.zhihu.com/p/83456418
https://towardsdatascience.com/knowledge-distillation-simplified-dd4973dbc764
https://nervanasystems.github.io/distiller/knowledge_distillation.html
bert 本身就以市面上公布的小模型参数作为student 模型
知识蒸馏(Knowledge Distillation)详细深入透彻理解重点相关推荐
- 知识蒸馏Knownledge Distillation
知识蒸馏源自Hinton et al.于2014年发表在NIPS的一篇文章:Distilling the Knowledge in a Neural Network. 1. 背景 一般情况下,我们在训 ...
- 知识蒸馏 knowledge distill 相关论文理解
Knowledge Distil 相关文章 1.FitNets : Hints For Thin Deep Nets (ICLR2015) 2.A Gift from Knowledge Distil ...
- 知识蒸馏(Distillation)
Hinton的文章<Distilling the Knowledge in a Neural Network>首次提出了知识蒸馏的概念,通过引入教师网络用以诱导学生网络的训练,实现知识迁移 ...
- MPLS协议基本知识总结(比较详细,好理解)
MPLS(Multiprotocol Label Switching)多协议标签转发复习总结 首先我们要先知道MPLS是为何出现的? MPLS是基于传统IP网络(RIP,OSPF等)的缺陷由IETF确 ...
- Knowledge Distillation | 知识蒸馏经典解读
作者 | 小小 整理 | NewBeeNLP 写在前面 知识蒸馏是一种模型压缩方法,是一种基于"教师-学生网络思想"的训练方法,由于其简单,有效,在工业界被广泛应用.这一技术的理论 ...
- 【深度学习】深度学习中的知识蒸馏技术(上)简介
本文概览: 1. 知识蒸馏介绍 1.1 什么是知识蒸馏? 在化学中,蒸馏是一种有效的分离不同沸点组分的方法,大致步骤是先升温使低沸点的组分汽化,然后降温冷凝,达到分离出目标物质的目的.化学蒸馏条件:( ...
- [深度学习]知识蒸馏技术
一 知识蒸馏(Knowledge Distillation)介绍 名词解释 teacher - 原始模型或模型ensemble student - 新模型 transfer set - 用来迁移tea ...
- 深度学习中的知识蒸馏技术(上)
本文概览: 1. 知识蒸馏介绍 1.1 什么是知识蒸馏? 在化学中,蒸馏是一种有效的分离不同沸点组分的方法,大致步骤是先升温使低沸点的组分汽化,然后降温冷凝,达到分离出目标物质的目的.化学蒸馏条件:( ...
- 深度学习中的知识蒸馏技术!
本文概览: 1. 知识蒸馏介绍 1.1 什么是知识蒸馏? 在化学中,蒸馏是一种有效的分离不同沸点组分的方法,大致步骤是先升温使低沸点的组分汽化,然后降温冷凝,达到分离出目标物质的目的.化学蒸馏条件:( ...
最新文章
- keras构建前馈神经网络(feedforward neural network)进行回归模型构建和学习
- 剑指offer:二维数组中的查找python实现
- ASP.NET Core 发布至Linux生产环境 Ubuntu 系统
- c语言本身有输入输出语句正确错误,C语言模拟选择题
- leetcode 95 python
- 微信带翅膀昵称ʚɞ,这也太可了吧
- JAVA-初步认识-第六章-类类型参数
- vue 2.0项目 favicon.ico不显示 解决方案
- 卓文萱在北京净万家像街头卖艺似的骗子粉丝做公益绯闻男友辰亦儒看不惯假惺惺模样破口大骂
- Greenplum小把戏 - 几个常用数据库对象大小查询SQL
- 像“毒液”一样的粘液机器人火了,能取出体内异物,穿过1.5mm细缝无压力!...
- 李开复微博数据分析--微博爬虫、数据挖掘、数据可视化(持续更新)
- 结构化、非结构化和半结构化数据
- 计算机丢失libdelogo.dll,电脑图标打开就出错,用联机解决说计算机中丢失Duilib.dll 是怎么回事...
- 无限纷争如何找到以前的服务器,无限纷争远古遗迹及幻境冒险玩法详细讲解
- 数据库建模工具powerdesigner15.2破解文件 百度云
- 辗转相除法-欧几里得算法
- springMVC之Controller方法的返回值
- C语言实现 修改文件的创建时间,上一次访问的时间,最近一次修改的时间
- 验证身份证号 格式问题