0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度学习:知识蒸馏的全过程

深度学习自然语言处理 来源:深度学习自然语言处理 作者:LinT 2021-01-07 14:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

知识蒸馏的核心思想是通过迁移知识,从而通过训练好的大模型得到更加适合推理的小模型。本文作者介绍了知识蒸馏的全过程,以及引用Hinton等人的实验结果解释说明,并提出了知识蒸馏的一些延伸工作方向。

0. 写在前面

有人说过:“神经网络用剩的logits不要扔,沾上鸡蛋液,裹上面包糠...” 这两天对知识蒸馏(Knowledge Distillation)萌生了一点兴趣,正好写一篇文章分享一下。这篇文章姑且算是一篇小科普。

1. 从模型压缩开始

各种模型算法,最终目的都是要为某个应用服务。在买卖中,我们需要控制收入和支出。类似地,在工业应用中,除了要求模型要有好的预测(收入)以外,往往还希望它的「支出」要足够小。具体来说,我们一般希望部署到应用中的模型使用较少的计算资源(存储空间、计算单元等),产生较低的时延。

深度学习的背景下,为了达到更好的预测,常常会有两种方案:1. 使用过参数化的深度神经网络,这类网络学习能力非常强,因此往往加上一定的正则化策略(如dropout);2. 集成模型(ensemble),将许多弱的模型集成起来,往往可以实现较好的预测。这两种方案无疑都有较大的「支出」,需要的计算量和计算资源很大,对部署非常不利。这也就是模型压缩的动机:我们希望有一个规模较小的模型,能达到和大模型一样或相当的结果。当然,从头训练一个小模型,从经验上看是很难达到上述效果的,也许我们能先训练一个大而强的模型,然后将其包含的知识转移给小的模型呢?如何做到呢?

* 下文统一将要训练的小模型称为新模型,将以及训练的大模型称为原模型。

Rich Caruana等人在[1]中指出,可以让新模型近似(approximate)原模型(模型即函数)。注意到,在机器学习中,我们常常假定输入到输出有一个潜在的函数关系,这个函数是未知的:从头学习一个新模型就是从有限的数据中近似一个未知的函数。如果让新模型近似原模型,因为原模型的函数是已知的,我们可以使用很多非训练集内的伪数据来训练新模型,这显然要更可行。

这样,原来我们需要让新模型的softmax分布与真实标签匹配,现在只需要让新模型与原模型在给定输入下的softmax分布匹配了。直观来看,后者比前者具有这样一个优势:经过训练后的原模型,其softmax分布包含有一定的知识——真实标签只能告诉我们,某个图像样本是一辆宝马,不是一辆垃圾车,也不是一颗萝卜;而经过训练的softmax可能会告诉我们,它最可能是一辆宝马,不大可能是一辆垃圾车,但绝不可能是一颗萝卜[2]。

2. 为什么叫「蒸馏」?

接续前面的讨论,我们的目标是让新模型与原模型的softmax输出的分布充分接近。直接这样做是有问题的:在一般的softmax函数中,自然指数 先拉大logits之间的差距,然后作归一化,最终得到的分布是一个arg max的近似 (参考我之前的文章:浅谈Softmax函数),其输出是一个接近one-hot的向量,其中一个值很大,其他的都很小。这种情况下,前面说到的「可能是垃圾车,但绝不是萝卜」这种知识的体现是非常有限的。相较类似one-hot这样的硬性输出,我们更希望输出更「软」一些。

一种方法是直接比较logits来避免这个问题。具体地,对于每一条数据,记原模型产生的某个logits是 ,新模型产生的logits是 ,我们需要最小化

文献[2]提出了更通用的一种做法。考虑一个广义的softmax函数

其中 是温度,这是从统计力学中的玻尔兹曼分布中借用的概念。容易证明,当温度 趋向于0时,softmax输出将收敛为一个one-hot向量(证明可以参考我之前的文章:浅谈Softmax函数,将 替换为 即可);温度 趋向于无穷时,softmax的输出则更「软」。因此,在训练新模型的时候,可以使用较高的 使得softmax产生的分布足够软,这时让新模型的softmax输出近似原模型;在训练结束以后再使用正常的温度 来预测。具体地,在训练时我们需要最小化两个分布的交叉熵(Cross-entropy),记新模型利用公式 产生的分布是 ,原模型产生的分布是 ,则我们需要最小化

在化学中,蒸馏是一个有效的分离沸点不同的组分的方法,大致步骤是先升温使低沸点的组分汽化,然后降温冷凝,达到分离出目标物质的目的。在前面提到的这个过程中,我们先让温度升高,然后在测试阶段恢复「低温」,从而将原模型中的知识提取出来,因此将其称为是蒸馏,实在是妙。

当然,如果转移时使用的是有标签的数据,那么也可以将标签与新模型softmax分布的交叉熵加入到损失函数中去。这里需要将式 乘上一个 ,这是为了让损失函数的两项的梯度大致在一个数量级上(参考公式 ),实验表明这将大大改善新模型的表现(考虑到加入了更多的监督信号)。

3. 与直接优化logits差异相比

由公式 ,对于交叉熵损失来说,其对于新模型的某个logit 的梯度是

由于 与 是等价无穷小(时**)**,易知,当 充分大时,有

假设所有logits对每个样本都是零均值化的,即 ,则有

所以,如果:1. 非常大,2. logits对所有样本都是零均值化的,则知识蒸馏和最小化logits的平方差(公式 )是等价的(因为梯度大致是同一个形式)。实验表明,温度 不能取太大,而应该使用某个适中的值,这表明忽略极负的logits对新模型的表现很有帮助(较低的温度产生的分布比较「硬」,倾向于忽略logits中极小的负值)。

4. 实验与结论

Hinton等人做了三组实验,其中两组都验证了知识蒸馏方法的有效性。在MNIST数据集上的实验表明,即便有部分类别的样本缺失,新模型也可以表现得很不错,只需要修改相应的偏置项,就可以与原模型表现相当。在语音任务的实验也表明,蒸馏得到的模型比从头训练的模型捕捉了更多数据集中的有效信息,表现仅比集成模型低了0.3个百分点。总体来说知识蒸馏是一个简单而有效的模型压缩/训练方法。这大体上是因为原模型的softmax提供了比one-hot标签更多的监督信号[3]。

知识蒸馏在后续也有很多延伸工作。在NLP方面比较有名的有Yoon Kim等人的Sequence-Level Knowledge Distillation 等。总的来说,对一些比较臃肿、不便部署的模型,可以将其「知识」转移到小的模型上。比如,在机器翻译中,一般的模型需要有较大的容量(capacity)才可能获得较好的结果;现在非常流行的BERT及其变种,规模都非常大;更不用提,一些情形下我们需要将这些本身就很大的深度模型集成为一个ensemble,这时候,可以用知识蒸馏压缩出一个较小的、「便宜」的模型。

文章地址:https://arxiv.org/abs/1606.07947

另外,在多任务的情境下,使用一般的策略训练一个多任务模型,可能达不到比单任务更好的效果,文献[3]探索了使用知识蒸馏,利用单任务的模型来指导训练多任务模型的方法,很值得参考。

补充

鉴于评论区有知友对公式 有疑问,简单补充一下这里梯度的推导(其实就是交叉熵损失对softmax输入的梯度,LOL)。

* 这部分有一点繁琐,能接受公式 的读者可以跳过。

由链式法则,有

注意到 是原模型产生的softmax输出,与 无关。

后一项 比较容易得到,因为 ,所以

则 是一个 维向量

前一项 是一个 的方阵,分类讨论可以得到。参考公式 ,记 ,由除法的求导法则,输出元素 对输入 的偏导是

注意上面右侧加方框部分,可以进一步展开

这样,代入公式 ,并且将括号展开,可以得到

左侧方框内偏导可以分类讨论得到

带入式 ,得到

所以 形式如下

代入式 ,可得

所以有公式 , 。

参考

[1] Caruana et al., Model Compression, 2006

[2] Hinton et al., Distilling the Knowledge in a Neural Network, 2015

[3] Kevin Clark et al., BAM! Born-Again Multi-Task Networks for Natural Language Understanding

责任编辑:xj

原文标题:知识蒸馏是什么?一份入门随笔

文章出处:【微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4827

    浏览量

    106802
  • 模型
    +关注

    关注

    1

    文章

    3649

    浏览量

    51715
  • 深度学习
    +关注

    关注

    73

    文章

    5590

    浏览量

    123911

原文标题:知识蒸馏是什么?一份入门随笔

文章出处:【微信号:zenRRan,微信公众号:深度学习自然语言处理】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何深度学习机器视觉的应用场景

    深度学习视觉应用场景大全 工业制造领域 复杂缺陷检测:处理传统算法难以描述的非标准化缺陷模式 非标产品分类:对形状、颜色、纹理多变的产品进行智能分类 外观质量评估:基于学习的外观质量标准判定 精密
    的头像 发表于 11-27 10:19 55次阅读

    BIOS POST CODE资料简介

    BIOS POST CODE主板上电过程,BIOS自检全过程,内部绝密资料
    发表于 08-25 16:06 0次下载

    深度学习遇上嵌入式资源困境,特征空间如何破局?

    多层神经网络的非线性变换拟合规律,理论上几乎可以描述和模拟一切规律,但实际上该过程效率极低 —— 其计算复杂度往往呈指数级增长。这一特性使得深度学习与端侧设备的资源约束存在根本性矛盾,导致其在端侧 AI 实施
    发表于 07-14 14:50 1120次阅读
    当<b class='flag-5'>深度</b><b class='flag-5'>学习</b>遇上嵌入式资源困境,特征空间如何破局?

    ModbusRTU转EtherCAT网关:蒸馏装置通信提速方案

    蒸馏装置等复杂控制系统中,如何有效地通过开疆智能Modbus RTU转EtherCAT网关KJ-ECT-101将这两种协议结合使用,以实现更高效、更可靠的系统性能,成为了工程师们关注的焦点。常压蒸馏
    的头像 发表于 06-26 18:29 295次阅读

    Tektronix泰克 MDO3024示波器黑屏故障定位与修复全过程

    近日湖南有企业送修一台泰克MDO3024示波器,故障表现为开机过程中黑屏。 对仪器进行初步检测,故障与客户描述一致。
    的头像 发表于 05-12 17:52 628次阅读
    Tektronix泰克 MDO3024示波器黑屏故障定位与修复<b class='flag-5'>全过程</b>

    智慧电力综合自动化系统(综自系统)如何实现?

    蜀瑞创新为大家科普:智慧电力综合自动化系统(综自系统)是电力系统智能化的核心平台,通过深度融合物联网、大数据、人工智能和数字孪生等技术,实现电力生产、传输、分配和消费全过程的实时监控、智能分析和自主决策。
    的头像 发表于 04-27 10:16 771次阅读

    嵌入式AI技术之深度学习:数据样本预处理过程中使用合适的特征变换对深度学习的意义

      作者:苏勇Andrew 使用神经网络实现机器学习,网络的每个层都将对输入的数据做一次抽象,多层神经网络构成深度学习的框架,可以深度理解数据中所要表示的规律。从原理上看,使用
    的头像 发表于 04-02 18:21 1284次阅读

    开关电源设计要领及设计全过程

    1 目的 希望以简短的篇幅,将公司目前设计的流程做介绍,若有介绍不当之处,请不吝指教。 2 设计步骤: 2.1 绘线路图、PCB Layout. 2.2 变压器计算. 2.3 零件选用. 2.4 设计验证. 3设计流程介绍(以 DA-14B33 为例): 3.1线路图、PCB Layout 请参考资识库中说明. 3.2变压器计算: 变压器是整个电源供应器的重要核心,所以变压器的计算及验证是很重要的,以下即就 DA-14B33 变压器做介绍. 3.2.1 决定变压器的材质及尺寸: 依据变压器计算公式 B(max) =铁心饱合的磁通密度(Gauss) Lp =一次侧电感值(uH) Ip =一次侧峰值电流(A) Np =一次侧(主线圈)圈数 Ae =铁心截面积(cm2) B(max) 依铁心的材质及本身的温度来决定,以 TDK Ferrite Core PC40 为例,100℃时的 B(max)为3900 Gauss,设计时应考虑零件误差,所以一般取 3000~3500 Gauss 之间,若所设计的 power 为Adapter(有外壳)则应取 3000 Gauss 左右,以避免铁心因高温而饱合,一般而言铁心的尺寸越大,Ae 越高,所以可以做较大瓦数的 Power。 文件过大,需要完整版资料可下载附件查看哦!
    发表于 03-07 15:53

    如何排除深度学习工作台上量化OpenVINO™的特定层?

    无法确定如何排除要在深度学习工作台上量化OpenVINO™特定层
    发表于 03-06 07:31

    军事应用中深度学习的挑战与机遇

    人工智能尤其是深度学习技术的最新进展,加速了不同应用领域的创新与发展。深度学习技术的发展深刻影响了军事发展趋势,导致战争形式和模式发生重大变化。本文将概述
    的头像 发表于 02-14 11:15 819次阅读

    BP神经网络与深度学习的关系

    BP神经网络与深度学习之间存在着密切的关系,以下是对它们之间关系的介绍: 一、BP神经网络的基本概念 BP神经网络,即反向传播神经网络(Backpropagation Neural Network
    的头像 发表于 02-12 15:15 1341次阅读

    设备综合管理阶段的特点

    设备综合管理是设备管理发展的关键阶段,系统性强调整体观念,全寿命周期管理涵盖全过程,综合管理体系运用多学科知识和方法。经济性追求最经济,成本效益分析和全员参与是重要手段,培训激励激发员工积极性。
    的头像 发表于 02-11 17:18 614次阅读
    设备综合管理阶段的特点

    摩尔线程宣布成功部署DeepSeek蒸馏模型推理服务

    近日,摩尔线程智能科技(北京)有限责任公司在其官方渠道发布了一则重要消息,宣布公司已经成功实现了对DeepSeek蒸馏模型推理服务的部署。这一技术突破,标志着摩尔线程在人工智能领域迈出了坚实的一步
    的头像 发表于 02-06 13:49 1184次阅读

    大连理工提出基于Wasserstein距离(WD)的知识蒸馏方法

    自 Hinton 等人的开创性工作以来,基于 Kullback-Leibler 散度(KL-Div)的知识蒸馏一直占主导地位。 然而,KL-Div 仅比较教师和学生在相应类别上的概率,缺乏跨类别比较
    的头像 发表于 01-21 09:45 1013次阅读

    百度深度学习专利申请量位列全球第一

    近日,全球领先的知识产权解决方案提供商Questel,发布全球深度学习专利全景报告。
    的头像 发表于 01-15 09:29 818次阅读