MobileBERT: a Compact Task-Agnostic BERT for Resource-Limited Devices(2020-4-6)

news/2024/5/17 17:36:38/文章来源:https://blog.csdn.net/weixin_49346755/article/details/127314280

模型介绍

近年来,自然语言处理(NLP)通过使用具有数亿个参数的巨大预训练模型取得了巨大的成功。然而,这些模型受到沉重的模型尺寸和高延迟的影响,因此无法部署到资源有限的移动设备上。因此这里提出了MobileBERT来压缩和加速流行的BERT模型。与原始的BERT一样,MobileBERT是任务不可知论的,也就是说,它可以通过简单的微调通用地应用于各种下游NLP任务。

基本上,MobileBERT是BERT⁡LARGE⁡\operatorname{BERT}_{\operatorname{LARGE}}BERTLARGE的精简版,同时配备了瓶颈结构和精心设计的在自注意和前馈网络之间的平衡。为了训练MobileBERT,首先训练了一个专门设计的教师模型,一个包含反转瓶颈的BERT⁡LARGE⁡\operatorname{BERT}_{\operatorname{LARGE}}BERTLARGE模型。然后,将这个老师的知识转移到MobileBERT。实证研究表明,MobileBERT比BERT⁡BASE⁡\operatorname{BERT}_{\operatorname{BASE}}BERTBASE小4.3倍,快5.5倍,同时在知名基准测试中取得了具有竞争力的结果。

模型结构

MobileBERT被设计成与BERT⁡LARGE⁡\operatorname{BERT}_{\operatorname{LARGE}}BERTLARGE一样深,而每一层都通过采用瓶颈结构和平衡自关注和前馈网络而变得更窄。为了训练一个又深又瘦的模型MobileBERT,首先训练一个专门设计的教师模型,它是一种结合了反瓶颈(Inverted-Bottleneck)的BERT⁡LARGE⁡\operatorname{BERT}_{\operatorname{LARGE}}BERTLARGE模型(IB-BERT)。然后,将知识从IB-BERT转移到MobileBERT。

在这里插入图片描述

上图中,(a) 为BERT,(b)为反向瓶颈 BERT (IB-BERT),( c)为MobileBERT。在 (b) 和 ( c) 中,红线表示块间流动,蓝线表示块内流动。MobileBERT是通过层层模仿 IB-BERT 来训练的。

模型改进

Bottleneck and Inverted-Bottleneck

在这里插入图片描述

MobileBERT 模型的深度和 BERT⁡LARGE⁡\operatorname{BERT}_{\operatorname{LARGE}}BERTLARGE 一样,但是每个 block 都更小。如上表所示,每一个 block 的隐藏层维度为128。另一方面,为每个block引入两个线性变换,以将其输入和输出维度调整为512。把这样的结构称为瓶颈(Bottleneck)。

训练这样一个又深又薄的网络是一项挑战。为了克服训练问题,首先构建一个教师网络并对其进行训练直到收敛,然后将知识从这个教师网络转移到MobileBERT。实验发现这比直接从零开始训练MobileBERT要好得多。事实上,教师网络就是BERT⁡LARGE⁡\operatorname{BERT}_{\operatorname{LARGE}}BERTLARGE,只是用反向瓶颈结构进行了增强,以调整其特征映射大小为512。在接下来的内容中,将教师网络称为IB-BERT⁡LARGE⁡\operatorname{IB-BERT}_{\operatorname{LARGE}}IB-BERTLARGE。注意,IB-BERT和MobileBERT的特征映射大小相同,都是512。因此,可以直接比较IB-BERT和MobileBERT的分层输出差异。在知识转移策略中需要这样的直接比较。

值得指出的是,同时引入瓶颈结构和反向瓶颈结构的结果是相当灵活的体系结构设计。可以只使用MobileBERT的瓶颈(相应地,教师变成了BERT⁡LARGE⁡\operatorname{BERT}_{\operatorname{LARGE}}BERTLARGE,或者只使用IB-BERT的反向瓶颈(那么MobileBERT中就没有瓶颈了)来对齐他们的特征映射。当使用这两种方法时,可以允许IB-BERT⁡LARGE⁡\operatorname{IB-BERT}_{\operatorname{LARGE}}IB-BERTLARGE在保持MobileBERT足够紧凑的同时保持BERT⁡LARGE⁡\operatorname{BERT}_{\operatorname{LARGE}}BERTLARGE的性能。

Stacked Feed-Forward Networks

MobileBERT的瓶颈结构带来的一个问题是多头注意(MHA)模块和前馈网络(FFN)模块之间的平衡被打破。MHA 和 FFN 在 Transformer 体系结构中扮演着不同的角色:前者允许模型联合处理来自不同子空间的信息,而后者增加了模型的非线性。在原始BERT中,MHA和FFN中的参数数之比始终为1:2。但在瓶颈结构中,MHA的输入来自更宽的特征映射(块间大小),而FFN的输入来自更窄的瓶颈(块内大小)。这导致MobileBERT中的MHA模块相对而言包含更多的参数。

为了解决这个问题,应该在MobileBERT中使用堆叠前馈网络来重新平衡MHA和FFN之间的相对大小。每个MobileBERT层包含一个MHA和几个堆叠的FFN,在MobileBERT中,每个MHA之后使用4个堆叠FFN。

Operational Optimizations

通过模型延迟分析,发现层归一化和gelu激活函数占总延迟的比例相当大。因此,建议用MobileBERT中的新操作替换它们。

Remove layer normalization:将n通道(维)隐藏状态h的层归一化替换为元素的线性变换。

NoNorm⁡(h)=γ∘h+β\operatorname{NoNorm}(h)=\gamma \circ h+\betaNoNorm(h)=γh+β

其中,γ,β∈Rn\gamma,\beta\in R^nγ,βRn∘\circ 表示Hadamard积。注意NoNorm与LayerNorm具有不同的属性,即使在测试模式下也是如此,因为原始的层归一化并不是对一批向量的线性操作。

Use relu activation:用更简单的relu激活函数来代替gelu激活函数。

Embedding Factorization

BERT模型中的嵌入表占模型大小的相当大的比例。为了压缩嵌入层,将MobileBERT中的嵌入维数减少到128。然后,对原始词嵌入应用内核大小为3的一维卷积,以生成512维的输出。

Training Objectives

建议使用以下两个知识转移目标:特征图转移(feature map transfer) 和注意力转移(attention transfer)。对第 ℓ\ell 层的最终分层知识转移损失 LKTℓL^{\ell}_{KT}LKT 是以下两个目标的线性组合:

1、Feature Map Transfer (FMT)

由于BERT中的每一层仅仅将前一层的输出作为输入,因此在分层知识转移中,最重要的是每一层的特征映射应该尽可能接近老师的特征映射。具体而言,使用MobileBERT学生和IB-BERT老师的特征图之间的均方误差作为知识转移目标:

在这里插入图片描述

其中,ℓ\ell 为层索引,TTT 为序列的长度,NNN 为特征映射大小。在实践中发现将该损失项分解为归一化特征图差异和特征图统计差异有助于稳定训练。

2、Attention Transfer (AT)

注意机制极大地提高了NLP的性能,成为Transformer和BERT的最重要的 block。鉴于此,使用来自优化良好的老师的 self-attention 映射来帮助训练MobileBERT增强特征映射。具体的,通过最小化MobileBERT 学生和 IB-BERT 教师的self-attention 每一头的分布之间的KL散度:

在这里插入图片描述

其中,AAA 为注意力的头数。

3、Pre-training Distillation (PD)

在对MobileBERT进行预训练时,除了分层的知识转移,还可以使用知识蒸馏损失。使用原始的屏蔽语言建模(MLM)损失、下句预测(NSP)损失和新的 MLM 知识蒸馏(KD)损失的线性组合作为训练前的蒸馏损失:

在这里插入图片描述

其中,α\alphaα 是一个在(0,1)之间的超参数。

Training Strategies

根据上述目标,在培训中可以有各种组合策略。这里讨论了三种策略。

在这里插入图片描述
上图中,(a)为 auxiliary knowledge transfer (AKT),(b)为 joint knowledge transfer (JKT),(c)为 progressive knowledge transfer (PKT)。颜色较浅的 block 表示这个阶段被冻结了。

1、Auxiliary Knowledge Transfer

在该策略中,将中间知识转移作为知识蒸馏的辅助任务。然后使用单一损失,它是来自所有层的知识转移损失和训练前蒸馏损失的线性组合。

2、Joint Knowledge Transfer

然而,IB-BERT老师的中间知识(即注意力映射和特征映射)可能不是 MobileBERT 学生的最佳解决方案。因此,应该将这两个损失项分离,首先用所有分层的知识转移损失联合训练MobileBERT,然后通过预训练蒸馏进一步训练。

3、Progressive Knowledge Transfer

一个可能会关心的点是如果MobileBERT不能完美地模仿IB-BERT老师,来自下层的错误可能会影响高层的知识转移。因此,在知识转移中逐步训练每一层。将渐进式知识转移分为 L 个阶段,其中 L 为层数。

对于联合知识转移和渐进式知识转移,在分层知识转移阶段,最开始的嵌入层和最后的分类器不存在知识转移。它们从IB-BERT老师复制到MobileBERT学生。此外,对于渐进式知识转移,当训练第 ℓ\ell 层时,将所有可训练的参数冻结在下面的层中。在实践中,我们可以通过以下方法来软化训练过程。当训练一个层时,以较小的学习率进一步调整较低的层,而不是完全冻结它们。

模型参考

论文地址:https://arxiv.org/abs/2004.02984

代码地址:https://github.com/tensorflow/models/tree/master/official/nlp/projects/mobilebert

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

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

相关文章

微信小程序中引导用户关注公众号实现方案详细说明

前言 之前讲过如何利用公众号针对指定用户完成业务操作之后实时发送消息.就好比在线医院公众号中看病挂号,挂号预约成功之后微信列表中会新增一条关注的公众号预约成功消息.具体实现步骤可以看下文章如何实现:手把手教你微信公众号如何给指定用户发送消息…

瑞吉外卖06-分页查询

瑞吉外卖06-分页查询 需求分析 问题描述 解决方案 对于createTime、updateTime字段 对于createUser、updateUser字段 代码实现 知识点分析 ThreadLocal 本次功能代码实现(免费) 瑞吉外卖06-分页查询 需求分析 问题描述 前面我们已经完成了…

嵌入式分享合集76

一、推挽、开漏、OC、OD 与推挽输出相对的是开漏输出,而开漏输出分为OC、OD两种,下文分别详细介绍。 推挽输出 推挽输出(Push-Pull Output)是由两个MOS或者三极管受到互补控制信号的控制,两个管子始终处在一个导通另一…

解决github分支提交冲突

一、背景 github上fork了base仓库 648540858/wvp-GB28181-pro 到自己仓库,并进行了个性化更改。base仓进行了代码更新,此时我和base仓有了冲突如何解决? 思路:自己仓库的代码合并到主仓是Pull Requests,两个不同仓库or…

PDF怎么转图片?建议收藏这些方法

PDF是我们在传输文件的时候,经常会使用到的一种格式。它可以帮助我们在不同的设备上,打开文件并且不会影响到文件内容的文字结构。而jpg是一种常见的图片格式,有时我们可能会遇到PDF转jpg的情况,那你们知道PDF转jpg怎么转吗&#…

git push 所有分支到新仓库地址

例:从gitee上拉取test-code代码,到自己新仓库地址,test-code仓库有master和test两个分支;具体命令和结果如下 xxxxxxxxopen02:~/src/code/tmp$ git clone gitgitee.com:striver-wy/test-code.git //从gitee下载代码 Cloning into test-code..…

CVPR2022-Rethinking Efficient Lane Detection via Curve Modeling

概述 总结分析了当前(图像)车道线检测的三类方法,为了解决现有多项式曲线方法的优化困难,提出了使用参数贝塞尔曲线拟合车道线的方案。此外还提出了基于变形卷积的特征翻转融合,以利用驾驶场景中车道的对称特性。 Pape…

Mysql基于binlog日志恢复数据

Mysql基于binlog日志恢复数据 1.Linux安装mysql https://blog.csdn.net/qq_44981526/article/details/126717005 可能遇到的问题 1.net-tools未安装,执行yum install net-tools 2.远程连接工具连接不上mysql grant all privileges on *.* to root% identified…

R语言caret机器学习(四):数据拆分

【R语言数据科学】 🌸个人主页:JOJO数据科学📝个人介绍:统计学top3高校统计学硕士在读💌如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏、👍订阅专栏✨本文收录于【R语言数据科学】本系列主要介绍R语言在数据科学领域的应用包括: R语言编程基础、R语言可视化、R…

垃圾分类查询管理系统

垃圾分类查询管理系统1.介绍1.1 功能点2.软件架构3.安装启动4.运行截图参考网站:https://lajifenleiapp.com/ 1.介绍 垃圾分类查询管理系统,对不懂的垃圾进行查询进行分类并可以预约上门回收垃圾。 让用户自己分类垃圾, 按国家标准自己分类&…

【最详细最全】Github的jenkins的自动化部署

1>创建项目 2>General 设置 3>配置源码管理 1>勾选Git选项之后,就会出现相关的填写项,根据下图的指引来填写就行了 填写项目的 git 地址, eg: GitHub - Leader755/leader755.github.io: github 博客(hexo一键搭建博…

(附源码)计算机毕业设计SSM基于Java的图书馆座位预约系统

(附源码)计算机毕业设计SSM基于Java的图书馆座位预约系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 …

Torch网络结构/训练过程可视化

一、网络结构的可视化 我们训练神经网络时,除了随着step或者epoch观察损失函数的走势,从而建立对目前网络优化的基本认知外,也可以通过一些额外的可视化库来可视化我们的神经网络结构图。这将更加地高效地向读者展现目前的网络结构。 为了可…

ARM接口技术:汇编语言实现1~100的累加,1+2+3+4+...+99+100=?还有汇编语言程序的编译和运行步骤

进入正题: 在终端输入:vi sum.S,建立文件 1、编写代码:定义两个变量,r0、r1 .global _start _start:mov r0,#1mov r1,#0 sum:add r1,r0add r0,#1cmp r0,#100bgt endb sumend:mov r2,r1nopnopnop2、编译建立一个makefi…

客流管控系统可以协助博物馆进行人数管理

进入21世纪,我国的博物馆建设迎来了新的高潮,无论是数量,还是规模,都前所未有。目前,全国的博物馆总数已经达到5 000多座,为了管控博物馆的人数,很多博物馆都安装了客流管控系统。客流管控系统可…

Android 开发学习(一)

文章目录1. Android 安装2. 创建第一个Android项目3. 什么是Gradle?4. 运行第一个Android程序5. Android架构 介绍6. 控件 之 textView(文本)6.1 textView 基础语法6.2 带阴影的textView6.3 跑马灯效果的 textView7. 控件 之 Butto(按钮)7.1 Button 的 基本属性 和 …

电源纹波,有这样几种测试方法,值得收藏

【嵌入式学习资料】V/ X 公/众/号 https://pan.baidu.com/s/1K8_EKVtOaN42IvuFSj8vJA tiquma:6666 纹波测试在电源质量检测中十分重要,虽然看似简单,但却包含诸多细节。这些细节在您测试的时候是否面面俱到?我们又如何把一项简单…

上海雷卯推出SOD123HE封装肖特基,帮工程师解决发热问题

为何肖特基二极管会发热? 肖特基二极管在工作时发热量不可小视,发热量大小与实际工作电流大小有关,与肖特基二极管实际压降大小有关。这是可以通过测量和计算得到,很方便。 方法是:测得二极管两端实际压降假如为0.5V…

浅谈C语言文件操作以及对先前通讯录的简单改造

文章目录前言1.为什么要使用文件以及文件简单介绍文件的简单介绍2.文件的相关操作1.文件的打开和关闭2.文件的顺序读写文件的顺序写文件的顺序读总结3.文件的随机读写4.文本文件和二进制文件介绍以及文件的读取结束的判定3.文件缓冲区4.对先前通讯录的改造5总结前言 之前简单的…

一家公司需要多少名产品经理?从这三个角度评估

扩张你的产品团队前应当考虑的一件事情是,当前阶段问题的根源是否真的在于人手不足——毕竟只有在适当的发展时机扩张团队,才能起到良好的作用。 当你开始考虑是否要扩张产品团队时,你就会面临所谓的“高质量问题”。 对更多产品管理资源的需…