(BERT蒸馏)TinyBERT: Distilling BERT for Natural Language Understanding

文章链接:https://arxiv.org/abs/1909.10351

背景

在自然语言处理(NLP)领域,预训练语言模型(如BERT)通过大规模的数据训练,已在多种NLP任务中取得了卓越的性能。尽管BERT模型在语言理解和生成任务中表现出色,其庞大的模型尺寸和高昂的计算成本限制了其在资源受限环境下的应用。

挑战

BERT等大型模型的计算成本高,不适合在移动设备或低资源环境中部署。因此,急需一种能将大型模型的能力转移到更小、更高效模型上的技术,这种技术被称为“知识蒸馏”。知识蒸馏的挑战在于如何在减小模型尺寸的同时,尽可能保留原模型的性能。

方法

TinyBERT学习框架

TinyBERT通过以下步骤实现BERT的知识蒸馏:

1. Transformer蒸馏方法:针对Transformer基础的模型设计了一种新的知识蒸馏方法,旨在将大型BERT模型中编码的丰富知识有效转移到小型TinyBERT模型。

2. 两阶段学习框架:TinyBERT采用了一种新颖的两阶段学习框架,包括预训练阶段和具体任务学习阶段的蒸馏,确保TinyBERT模型不仅能捕获通用领域知识,还能捕获特定任务知识。

3. 数据增强和多样性:为了进一步提高TinyBERT在特定任务上的性能,引入数据增强技术,通过扩展训练样本来增加模型的泛化能力。

损失计算

Transformer层中注意力矩阵和隐藏状态蒸馏示意图

其中Zs和Zt分别是学生和教师模型的逻辑输出,CE 代表交叉熵损失函数,t是一个软化温度参数,用于调整软标签的分布,使得学生模型可以从教师模型的预测中学习更多信息。

通过上述损失函数的组合,TinyBERT不仅学习了教师模型的最终输出,还学习了教师模型处理信息的内在方式,包括注意力机制和隐藏层的表示。这些损失函数的综合使用,确保了学生模型TinyBERT在显著减少模型大小和计算成本的同时,能够尽可能地保留教师模型BERT的性能。

W_hW_e矩阵说明:

目的:

尺寸转换:由于TinyBERT模型的隐藏层尺寸通常小于BERT模型的隐藏层尺寸,因此需要W_hW_e矩阵将学生模型的输出转换为与教师模型相同维度的空间,以便进行有效的比较。

信息转换:这个矩阵不仅仅是简单地改变尺寸,它还能帮助学生模型学习如何将其较小的、压缩的表示形式映射到一个更丰富的表示空间,这是教师模型所使用的。

获取方式(以W_h为例):

通过训练过程中的反向传播得到的,具体步骤如下:

初始化:W_h矩阵在训练前随机初始化

损失函数:通过定义一个损失函数来量化学生模型转换后的输出与教师模型输出之间的差异。常用的损失函数包括均方误差(MSE)。

反向传播更新:在训练过程中,使用梯度下降方法(或其他优化算法)根据损失函数的结果来调整W_h矩阵的值,以最小化学生和教师模型输出之间的差异。

训练过程:在Transformer层蒸馏的上下文中,每当输入一个训练样本,学生模型(TinyBERT)和教师模型(BERT)都会计算各自的隐藏状态。然后,使用W_h矩阵将TinyBERT的隐藏状态转换到与BERT相同的维度,接着计算和反向传播这两者之间的差异,不断更新W_h矩阵以及其他相关的模型参数。通过这样的过程,W_h矩阵最终能够有效地帮助TinyBERT模仿BERT的行为和输出,尽管TinyBERT的模型尺寸更小,参数更少。这种方法是蒸馏技术中减小模型尺寸同时保持性能的关键步骤之一。

数据增强

输入x:一个单词序列(句子或文本片段)

参数:

P_t:阈值概率,决定是否对单词进行替换的门槛。

N_a:每个样本生成的增强样本数量。

K:候选集大小,即为每个单词生成的可能替换词的数量。

输出D:增强后的数据集

算法过程:

1.初始化计数器n为0,并创建空的增强数据集列表D’。

2.当n小于需要生成的样本数量N_a时,执行循环

3.将输入序列x赋值给X_m,以开始对其进行增强。

4.遍历序列x中的每个单词x[i]:

如果x[i]是一个单片词(即不可分割的词),就执行两步操作,第一步是将X_m[i]替换为特殊标记[MASK],第二步是使用BERT模型找出当X_m[i]是[MASK]时,K个最有可能的单词,然后把这个集合赋值给集合C

反之如果x[i]不是一个单片词,使用GloVe模型找出与x[i]最相似的K个单词,并赋值给集合C

5.从[0,1]中均匀采样一个概率值p,如果p≤P_t,就在集合C中随机选择一个单词替换X_m[i]

6.替换操作完成后,继续遍历X_m中的下一个单词

7.当所有单词都遍历完,将增强后的序列X_m添加到D中

8.增加计数器n 的值

9.如果n<N_a,则重复上述操作

10.当所有增强样本都生成后就返回增强后的数据集D

总的来说,这个算法通过在原始文本序列中替换一些单词,来生成新的文本样本。这些替换基于BERT或GloVe模型的输出,取决于待替换的词是否是单片词。通过这种方式,它创造出与原始样本在语义上保持一致,但在表述上有所变化的新样本。这有助于学生模型在训练过程中获得更广泛的语言表达能力,以及更好的泛化性能。

结果

TinyBERT在GLUE基准测试中表现出色,与教师模型BERT相比,TinyBERT在模型大小和推理速度上均有显著改进,同时保持了相近的性能。例如,TinyBERT在模型大小上缩小了7.5倍,在推理速度上提高了9.4倍,而在性能上能达到教师模型的96.8%。

总结

TinyBERT的成功证明了通过精心设计的知识蒸馏方法和两阶段学习框架,可以有效地将大型模型的能力转移到更小、更高效的模型上,从而在保持性能的同时显著减少计算资源的需求。这为在资源受限的环境下部署高性能NLP模型提供了可能。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL-DML数据操纵语言(Oracle)

文章目录 DML数据操纵语言常见的字段属性字符型字段属性char(n)varchar2(n)/varchar(n) 数值型字段属性number([p],[s]int 日期型字段属性DATEtimestamp 如何查看字段属性增加数据INSERT快捷插入 删除数据DELETE修改数据UPDATE DML数据操纵语言 定义 是针对数据做处理&#xf…

探索数据结构:BF与KMP的灵活应用

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 什么是字符串匹配算法 字符串匹配是计算机科学中的一个基础概念&…

MBR30100PT-ASEMI肖特基二极管MBR30100PT

编辑&#xff1a;ll MBR30100PT-ASEMI肖特基二极管MBR30100PT 型号&#xff1a;MBR30100PT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-247 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;30A 最大循环峰值反向电压&#xff08;VRRM&#xff09;&#xff1a;10…

办公网数据防泄密解决方案丨深度解析

企业数据已成为其最宝贵的资产之一。 然而&#xff0c;办公自动化的推进和网络技术的普及&#xff0c;导致数据泄露的风险也日益加剧。 为了有效应对这一挑战&#xff0c;越来越多的企业开始寻求专业的数据防泄密解决方案。 其中&#xff0c;域智盾软件以其卓越的性能和全面的…

保护C#代码的艺术:深入浅出代码混淆技术

摘要 在C#开发中&#xff0c;代码的保护是一个不可忽视的问题。本文深入探讨了几种常用的C#代码混淆工具&#xff0c;帮助开发者理解如何有效地保护代码不被反编译。同时&#xff0c;本文也对混淆技术的优缺点进行了分析&#xff0c;并提供了一些实际使用的建议。 引言 C#是…

Python简化远程部署和系统管理的工具库之fabric使用详解

概要 Python Fabric库是一个用于简化远程部署和系统管理的工具库。它提供了一组简洁而强大的函数和工具,可以帮助开发者轻松地在多台远程主机上执行命令、上传文件、下载文件等操作,从而实现自动化部署和管理。 安装 要使用Python Fabric库,首先需要安装Fabric模块。可以通…

IDM2024破解版 IDM软件破解注册序列号 idm教程 idm序列激活永久授权 Internet Download Manager网络下载加速神器

你是不是感觉下载东西资源的时候&#xff0c;下载的非常慢&#xff0c;即便是五十兆的光纤依旧慢、是不是想下载网页上的视频但不知如何进行下载……这些问题是否一直在困扰着您&#xff0c;今日小编特意我大家带来了这款IDM 2024破解版。 众所周知&#xff0c;IDM是一款功能强…

内网穿透工具及技术总结

攻击主机在内网&#xff0c;控制其他网段内网的主机&#xff0c;理论上是不可行的&#xff08;攻击机和目标机都在内网 连接就是从内网到内网&#xff09; 绕过内网协议实现上线(穿透)&#xff0c;按照我的理解就是穿透技术解决的问题就是解决内网到内网、外网到内网的通信问题…

centos7下升级openssh9.6版本以上远程连接报ssh服务器不能连接错误

解决方法&#xff1a; 1、在sshd_config文件添加如下配置 vim /etc/ssh/sshd_config UsePAM yes 2、如果/etc/pam.d/sshd不存在&#xff0c;添加如下配置 vim /etc/pam.d/sshd #%PAM-1.0 auth required pam_sepermit.so auth substack password-auth a…

一文读懂大模型剪枝:轻量级AI如何领跑未来科技

大模型剪枝概述 近年来&#xff0c;Transformer和MOE架构的崛起&#xff0c;推动了深度学习模型参数规模的飙升&#xff0c;轻松突破上万亿。面对模型日益庞大的挑战&#xff0c;大模型压缩技术应运而生。该技术旨在降低模型部署成本&#xff0c;提升推理性能。主要压缩方法包括…

Python-VBA函数之旅-eval函数

目录 一、eval函数的常见应用场景&#xff1a; 二、eval函数安全使用注意事项&#xff1a; 三、eval函数与exec函数对比分析&#xff1a; 1、eval函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、相关文章&#xff1a; 个人主页&#xff1a;ht…

00_Qt概述以及如何创建一个QT新项目

Qt概述 1.Qt概述1.1 什么是Qt1.2 Qt的发展史1.3 支持的平台1.4 Qt版本1.5 Qt的下载与安装1.6 Qt的优点 2.QT新项目创建3.pro文件4.主函数5.代码命名规范和快捷键 1.Qt概述 1.1 什么是Qt Qt是一个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供建立艺术级图形界面…