类BERT模型蒸馏原理

news2024/11/28 0:34:24

如果你曾经训练过 BERT 或 RoBERTa 等大型 NLP 模型,就就会知道这个过程非常漫长。 由于此类模型规模庞大,训练可能会持续数天。 当需要在小型设备上运行它们时,可能会发现你正在为当今不断提高的性能付出巨大的内存和时间成本。

幸运的是,有一些方法可以减轻这些痛苦,同时对模型的性能影响很小,这些方法称为蒸馏(distillation)。 在本文中,我们将探讨 DistilBERT [1] 方法背后的机制,该方法可用于提取任何类似 BERT 的模型。

首先,我们将讨论蒸馏的一般情况以及为什么我们选择 DistilBERT 的方法,然后如何初始化该过程,蒸馏过程中使用的特殊损失,最后是一些足够相关的额外细节,需要单独提及。

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 

1、DistilBERT 简介

蒸馏的概念非常直观:它是训练小型学生模型以尽可能接近地模仿大型教师模型的过程。 如果我们只在用于微调的集群上运行机器学习模型,那么蒸馏将毫无用处,但遗憾的是,事实并非如此。 因此,每当我们想要将模型移植到较小的硬件(例如有限的笔记本电脑或手机)上时,蒸馏就会出现,因为蒸馏模型运行速度更快,占用的空间更少。

你可能已经注意到,基于 BERT 的模型自在 [2] 中首次引入以来,在 NLP 中非常流行。 随着性能的提高,参数也随之增加。 准确地说,BERT 的数量超过 1.1 亿,而且我们甚至不是在谈论 BERT-large。 因此,蒸馏的必要性显而易见,因为 BERT 用途广泛且性能良好。 此外,后来的模型基本上都是以相同的方式构建的,类似于 RoBERTa [3],因此通过学习正确提炼 BERT,你可以一石二鸟。

第一篇关于 BERT 蒸馏的论文是我们的灵感来源,即 [1]。 但其他人紧随其后,比如 [4] 或 [5],所以很自然地想知道为什么我们将自己限制在 DistilBERT 上。 答案有三个:首先,它非常简单,因此这是对蒸馏的一个很好的介绍; 第二,它会带来好的结果; 第三,它还允许对基于 BERT 的模型进行蒸馏。

DistilBERT 的蒸馏有两个步骤,我们将在下面详细介绍。

2、复制教师模型的架构

BERT 主要基于一系列相互堆叠的注意力层。 因此,这意味着 BERT 学习的“隐藏知识”就包含在这些层中。 我们不会关心它们是如何工作的,但对于那些想要更多细节的人,除了原始论文 [1] 之外,我可以推荐这篇 TDS 文章,它做得非常出色 [6]。 目前,我们可以将注意力层视为黑匣子,这对我们来说并不重要。

BERT 的架构

从一个 BERT 到另一个 BERT,层数 N 各不相同,但模型的大小当然与 N 成正比。因此,训练模型所需的时间和前向传递的持续时间也取决于 N,以及 用于存储模型的内存。 因此,提炼 BERT 的逻辑结论是减少 N。

DistilBERT 的方法是将层数减半,并从教师的层初始化学生的层。 简单而高效:

学生模型初始化

DistilBERT 在一个复制层和一个忽略层之间交替,根据[4],这似乎是最好的启发式,它尝试优先复制顶层或底层。

多亏了huggingface的transformers模块和对其内部工作原理的一点了解,这可以很容易地实现。 我们将在另一篇文章中展示如何实现,因为在这篇文章中我们将只限于理论。

当然,如果你使用基于 BERT 的模型来完成特定任务,比如说序列分类,那么你还需要为学生复制老师的头部,但一般来说,BERT 头部与其注意力层相比小多了。

我们现在有了一个可以教授的学生模型。 然而,蒸馏过程并不是一个经典的拟合例程:我们并不是像平常那样教学生学习一种模式,我们的目标也是模仿老师。 因此,我们必须调整我们的训练程序,尤其是我们的损失函数。

3、蒸馏损失

我们的训练程序将基于损失,正如前面所说,它旨在实现几个目标:最小化教师训练的经典损失函数并模仿教师本身。 更糟糕的是,模仿教师需要混合使用两种损失函数。 因此,我们将从更简单的目标开始:最小化经典损失。

3.1 经典损失

关于这一部分没有太多可说的:类似 BERT 的模型都以相同的方式工作,核心将嵌入输出到特定问题的头部。 教师微调的任务有其自己的损失函数。 为了计算该损失,由于该模型是由具有与教师相同的特定问题头的注意力层组成,因此我们只需插入学生的嵌入和标签即可。

3.2 师生交叉熵损失

交叉熵损失对两个3D向量的影响

这是第一个旨在缩小学生和教师概率分布之间差距的损失。 当类似 BERT 的模型对输入进行前向传递时,无论是用于掩码语言建模、标记分类、序列分类等……它都会输出 logits,然后通过 softmax 层将其转换为概率分布。

对于输入 x,教师输出:

学生输出:

请记住 softmax 及其附带的符号,我们稍后会再讨论它。 无论如何,如果我们希望 T 和 S 接近,我们可以以 T 作为目标对 S 应用交叉熵损失。 这就是我们所说的师生交叉熵损失:

3.3 师生余弦损失

余弦损失对两个 3D 向量的影响

帮助学生成为教师的第二个损失是余弦损失。 余弦损失很有趣,因为它不是试图使向量 x 等于目标 y,而是仅仅尝试将 x 与 y 对齐,而不介意它们各自的范数或空间原点。 我们使用这种损失来使教师和学生模型中的隐藏向量对齐。 使用与之前相同的符号:

实际上,余弦损失有两种版本,一种用于对齐向量,另一种用于将一个向量拉向另一个向量的相反方向。 在本文中,我们只对第一个感兴趣。

3.4 完全蒸馏损失

完全蒸馏损失是上述三种损失的组合:

4、额外细节

softmax 温度对概率分布的影响

在解释了损失之后,蒸馏程序的其余部分就非常简单了。 该模型的训练方式与其他模型非常相似,唯一的问题是你必须并行运行两个类似 BERT 的模型。 值得庆幸的是,考虑到 GPU 的健康状况和内存,教师模型不需要梯度,因为反向传播仅在学生身上完成。 当然,仍然需要像蒸馏过程一样实现损失,但我们将在以后的一篇文章中介绍它。

4.1 温度

正如所承诺的,让我们回到 III 中使用的符号。 师生交叉熵损失:

DistilBERT 使用 [7] 中的温度概念,这有助于软化 softmax。 温度是一个变量 θ ≥ 1,随着它的升高,softmax 的“置信度”会降低。 普通的softmax描述如下:

现在,让我们无用地将其重写为:

每个人都会同意这是正确的。 1实际上对应于温度θ。 普通的softmax是温度设置为1的softmax,一般温度的softmax的公式为:

随着 θ 增大,θ 上的商变为零,因此整个商变为 1/n,softmax 概率分布变为均匀分布。 这可以在上图中观察到。

在 DistilBERT 中,学生和教师的 softmax 在训练期间都以相同的温度 θ 为条件,并且在推理期间将温度设置为 1。

5、结束语

现在你已经了解了类似 BERT 模型的蒸馏如何适用于 DistilBERT,唯一要做的就是选择一个模型并对其进行蒸馏!

显然,你仍然需要实施蒸馏过程,但我们很快就会介绍如何做到这一点。


原文链接:类BERT模型蒸馏原理 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1218759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单片机语音芯片在工业控制中的应用优势

单片机语音芯片,这一智能化的代表产品,不仅在家庭和消费电子领域发挥着重要的作用,更为工业控制领域注入了新的活力。将单片机语音芯片与语音交互技术相结合,为工业设备的控制和监测提供了前所未有的解决方案。 首先,…

【Hello Go】Go语言运算符

Go语言运算符 算术运算符关系运算符逻辑运算符位运算符赋值运算符其他运算符运算符优先级 算术运算符 如果之前没有其他语言基础的小伙伴可以参考下我之前写的C语言运算符讲解 这里主要讲解下Go和C运算符的不同点 – 运算符 Go语言中只有后置 和后置– var a int 5a--fmt.P…

宏集干货 | 手把手教你通过CODESYS V3进行PLC编程(三)

来源:宏集科技 工业物联网 宏集干货 | 手把手教你通过CODESYS V3进行PLC编程(三) 教程背景 通过之前的教程,我们已经为大家演示了宏集MC-Prime控制器的连接、试运行和CODESYS的安装,并创建了一个计数器项目。在本期教…

小型内衣洗衣机什么牌子好?性价比高的迷你洗衣机推荐

现在洗内衣内裤也是一件较麻烦的事情了,在清洗过程中还要用热水杀菌,还要确保洗衣液是否有冲洗干净,还要防止细菌的滋生等等,所以入手一款小型的烘洗全套的内衣洗衣机是非常有必要的,专门的内衣洗衣机可以最大程度减少…

用护眼灯到底好不好?适合小学生用的五款护眼台灯推荐

如果不想家里的孩子年纪小小的就戴着眼镜,从小就容易近视,那么护眼灯的选择就非常重要了,但是市场上那么多品类,价格也参差不齐,到底怎么选呢?大家一定要看完本期内容。为大家推荐五款护眼台灯。 一、书客护…

几种典型的深度学习算法:(CNN、RNN、GANS、RL)

以下是几种典型的深度学习算法: 1、卷积神经网络(Convolutional Neural Network,CNN):主要用于图像和视频等视觉任务。通过使用卷积层、池化层和全连接层等不同类型的神经网络层,CNN 可以学习图像中的特征并…

Apache DolphinScheduler在通信行业的多集群统一建设与管理实践

背景介绍 为什么我们考虑构建统一的调度平台? 主要原因是:我们公司的大数据中心目前拥有七个大数据集群,这些集群分布在不同的机房,例如内蒙、南京、苏州和广州。而且,这些机房之间的网络并不互通。如果每个集群都独立…

校园跑腿小程序源码系统+多校园版+取快递+食堂超市跑腿+外卖 带完整的搭建教程

大家好啊,又到了罗峰给大家分享源码的时间啦。今天要给大家分享的是一款校园跑腿小程序源码系统。这款系统功能十分强大,开发了多校园版。众所周知,校园跑腿的发展是从外卖配送一点点演变过来的,而校园跑腿的基础性服务项目就是帮…

智慧城市安全监控的新利器

在传统的城市管理中,井盖的监控一直是一个难题,而井盖异动传感器的出现为这一问题提供了有效的解决方案。它具有体积小、重量轻、安装方便等特点,可以灵活地应用于各种类型的井盖,实现对城市基础设施的全方位监控。 智能井盖监测终…

如何创建react项目

可以直接通过react脚手架进行创建 首先确保自己是否安装了create-react-app npm install -g create-react-app 如果安装不成功有可能是有缓存,可以先清除缓存再重新安装 npm cache clean --force 安装成功后就可以使用脚手架创建自己的项目,my-react就是我的项…

求臻医学:当MRD遇到肺癌 见招拆招,斩草除根

当MRD遇到肺癌→见招拆招,斩草除根 浅谈MRD在肺癌中的应用 新辅助治疗后,可以通过MRD来辅助评估预后,一般MRD阴性与新辅助治疗后的pCR (病理完全缓解)相关,达到MRD阴性或pCR的惠者预后更好. MRD在肺癌中可潜在解决的问题点1.术…

成都瀚网科技有限公司抖音带货是否靠谱

成都瀚网科技有限公司,作为一家专业的科技公司,近年来积极参与了抖音带货的浪潮,凭借其出色的产品和服务,赢得了广大用户的信赖。 在当今的数字化时代,抖音带货已经成为了一种非常流行的购物方式。消费者可以通过抖音平…

Linux中的进程等待(超详细)

Linux中的进程等待 1. 进程等待必要性2. 进程等待的方法2.1 wait方法2.2 waitpid方法 3. 获取子进程status4. 具体代码实现 1. 进程等待必要性 我们知道,子进程退出,父进程如果不管不顾,就可能造成‘僵尸进程’的问题,进而造成内…

抖音自动评论助手,其开发流程与需要的技术和代码分享

先来看实操成果,↑↑需要的同学可看我名字↖↖↖↖↖,或评论888无偿分享 在当今这个信息爆炸的时代,我们不难发现,无论是在线上还是线下,我们都无法忽视一个重要的信息传播工具——抖音。这款短视频平台以其强大的传播…

为什么选择CodeEase?

目录 为什么选择CodeEase核心功能后端前端 框架结构总结 为什么选择CodeEase CodeEase是一个标准化的低代码平台 愿景 我们励志开发一站式服务,缩短网站开发周期,降低程序bug率,减少开发人力和成本,推出了多租户SaaS平台开发模板…

集合贴——智能客服是什么

基础课1——智能客服的定义-CSDN博客文章浏览阅读166次。智能客服是一种采用人工智能技术的客户服务方式,它通过语音识别、自然语言处理、语义理解等技术,实现了与客户的自动交互。https://blog.csdn.net/2202_75469062/article/details/134406392?spm1…

基于STM32的温室自主灌溉系统(论文+源码)

1.系统设计 本课题为基于STM32的温室自主灌溉系统,通过查阅多种文献和的设计了如图2.1所示的温室自主灌溉系统总体架构,整个系统在器件上包括了主控制器STM32F103,温度传感器DS18B20,土壤湿度传感器YL-69,光敏电阻,显示器LCD1602…

js实现tab栏切换

目录 1、排他思想实现 2、事件委托实现 1、排他思想实现 思路: 需要点击谁,就先获取谁,获得的是一个伪数组 遍历数组,并给数组里的每个元素添加点击事件,写一个active类用于显示边框样式 每一个元素对应一张图片&…

系列六、JVM的初始内存和最大内存怎么配置?

一、JVM的初始内存和最大内存怎么配置? 可以通过虚拟机的-Xms、-Xmx来配置,而且这俩配置的大小一样,避免GC争抢内存导致的不稳定,忽高忽低。 二、如何查看JVM默认的堆内存大小 /*** Author : 一叶浮萍归大海* Date: 2023/11/16 14…

码住!听我说护眼台灯这样选!

台灯的显色指数是其非常重要的指标,它可以表示灯光照射到物体身上,物体颜色的真实程度,一般用平均显色指数Ra来表示,Ra值越高,灯光显色能力越强。常见的台灯显色指数最低要求一般是在Ra80以上即可,比较好的…