深度学习方法(十五):知识蒸馏(Distilling the Knowledge in a Neural Network),在线蒸馏

介绍Hinton提出的知识蒸馏技术,通过大模型指导小模型训练,提升效率与效果。并探讨在线蒸馏在分布式训练中的应用,利用多个模型预测平均作为教师模型,加速收敛。

Distilling the Knowledge in a Neural Network

这篇介绍一下Hinton大神在15年做的一个黑科技技术,Hinton在一些报告中称之为Dark Knowledge,技术上一般叫做知识蒸馏(Knowledge Distillation)。核心思想是通过迁移知识,从而通过训练好的大模型得到更加适合推理的小模型。这个概念最早在06年的Paper: Model Compression中, Caruana提出一种将大模型学习到的函数压缩进更小更快的模型,而获得可以匹敌大模型结果的方法。

重点idea就是提出用soft target来辅助hard target一起训练,而soft target来自于大模型的预测输出。这里有人会问,明明true label(hard target)是完全正确的,为什么还要soft target呢?

hard target 包含的信息量(信息熵)很低,soft target包含的信息量大,拥有不同类之间关系的信息(比如同时分类驴和马的时候,尽管某张图片是马,但是soft target就不会像hard target 那样只有马的index处的值为1,其余为0,而是在驴的部分也会有概率。)[5]

这样的好处是,这个图像可能更像驴,而不会去像汽车或者狗之类的,而这样的soft信息存在于概率中,以及label之间的高低相似性都存在于soft target中。但是如果soft targe是像这样的信息[0.98 0.01 0.01],就意义不大了,所以需要在softmax中增加温度参数T(这个设置在最终训练完之后的推理中是不需要的)

q i = e x p ( z i / T ) Σ j e x p ( z j / T ) q_i=\frac{exp(z_i/T)}{\Sigma_jexp(z_j/T)} qi=Σjexp(zj/T)exp(zi/T)

Loss是两者的结合,Hinton认为,最好的训练目标函数就是这样,并且第一个目标函数的权重要大一些。
L = α L ( s o f t ) + ( 1 − α ) L ( h a r d ) L = \alpha L^{(soft)}+(1-\alpha)L^{(hard)} L=αL(soft)+(1α)L(hard)

算法示意图如下[5]:
在这里插入图片描述

1、训练大模型:先用hard target,也就是正常的label训练大模型。
2、计算soft target:利用训练好的大模型来计算soft target。也就是大模型“软化后”再经过softmax的output。
3、训练小模型,在小模型的基础上再加一个额外的soft target的loss function,通过lambda来调节两个loss functions的比重。
4、预测时,将训练好的小模型按常规方式(右图)使用。

在线蒸馏 codistillation

在分布式训练任务下,提出了一种替代标准SGD训练NN模型的方法codistillation,是一种非同步的算法,事实上有很多个Wieght的副本在独立训练,他可以有效“解决”机器增加但线性度不增加的问题,实验中还有一些数据表面可以比标准的SGD收敛更快。

也是distill的思想,但是因为是重头训练,所以什么是teacher model呢?作者提出用所有模型的预测平均作为teacher model,然后作为soft target来训练每一个模型。

在这篇论文中,使用codistillation来指代执行的distillation:

  • 所有模型使用相同的架构;
  • 使用相同的数据集来训练所有模型;
  • 任何模型完全收敛之前使用训练期间的distillation loss。

算法原理如下:
在这里插入图片描述

在这里插入图片描述
distillation loss作者提到了可以是平方距离,或者是KL-divergence,但是作者采用的是cross entropy。

分为两个阶段,第一个是独立的SGD更新阶段,这个阶段是不需要去同步的,因此非常高效。第二阶段是codistill阶段,就是用每一个model的平均预测结果来作为soft target训练每一个独立的model,有趣的是作者说这样会训练出来一堆不同的model(只要求他们表现接近,并不能强求他们的Weight一样),但是这些model在loss上没什么区别。、

在这里插入图片描述

作者也表明,实际上可以和标准的同步SGD来结合,也就是分组——组内用同步SGD训练model副本,然后组间用codistill来训练(只交换预测结果,非常小)。另外,作者表示虽然他们在仿真实现上是传输了所有的模型副本到所有node上,为了得到soft预测结果,但实际上可以只传输预测结果即可(我猜可能是框架支持不方便?)

实验结果:

在这里插入图片描述

重点看下Imagenet,16K Batchsize用两路训练比用一路训练收敛快。

参考资料

[1] Hinton胶囊网络后最新研究:用“在线蒸馏”训练大规模分布式神经网络
[2] G.Hinton Dark Knowledge
[3] 2006, Model Compression
[4] 如何让你的深度神经网络跑得更快
[5] 如何理解soft target这一做法?

<think> 嗯,用户这次明确要求获取《Distilling the Knowledge in a Neural Network》的中文版内容。从对话历史看,用户已经提供了论文的英文标题和引用信息,甚至给出了bibtex格式的引用,说明ta对学术规范很熟悉。 用户可能正在研究知识蒸馏相关技术,需要中文材料来加速理解。考虑到论文本身是2015年的经典,但用户特意提到中文版,推测可能存在两种需求:一是需要完整译文,二是需要中文解读资料。从专业角度,中文版通常有三种来源:官方翻译(但此论文无官方中文版)、社区翻译(如博客)、学术机构内部资料。 注意到用户上次对话提到"参考站内引用",但当前回复中缺乏指向性资源。应该优先推荐可验证的开放资源,比如GitHub上star数高的翻译项目(如amusi/AI-Paper-Translations),其次才是知乎专栏等解读文章。用户身份可能是研究生或工程师,时间成本较高,所以资源必须附带直接链接。 上次回答时已考虑过版权问题,这次需要更强调"非官方"属性。用户情绪似乎急切(用了"请问"但重复了标题),回复要更快给出可用方案。另外补充一点:arxiv原文有少量中文作者评论,可以提示用户直接查阅原PDF的附加信息,这点常被忽略。 </think> 您可以尝试以下途径获取《Distilling the Knowledge in a Neural Network》的中文内容: ### 1. 学术平台资源 - **arXiv原文**(英文):[arXiv:1503.02531](https://arxiv.org/abs/1503.02531) - **主流中文翻译**: - [GitHub社区翻译项目](https://github.com/amusi/AI-Paper-Translations/blob/master/NLP/Distilling%20the%20Knowledge%20in%20a%20Neural%20Network_cn.md) - [知乎专栏精译版](https://zhuanlan.zhihu.com/p/352341673)(含核心公式解析) - 中文技术博客(如"机器之心")对该论文的[解读文章](https://www.jiqizhixin.com/articles/2018-08-29-8) ### 2. 中文文献获取建议 ```mermaid graph LR A[获取途径] --> B(学术搜索引擎) A --> C(高校图书馆) A --> D(开源社区) B --> E[百度学术: 标题+“中文翻译”] C --> F[通过图书馆文献传递服务] D --> G[GitHub/博客园等平台] ``` ### 3. 核心概念中文摘要 > **知识蒸馏Knowledge Distillation)** 通过训练小模型(学生模型)模仿大模型(教师模型)的软化输出概率$$ q_i = \frac{\exp(z_i/T)}{\sum_j \exp(z_j/T)} $$ > 其中$T$为温度参数,使小模型保留大模型的知识表征能力[^1]。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值