分布式存储图解_BERT的youxiu变体:ALBERT论文图解介绍

28d4dc59b958040e0dc3778d78aca228.png
作者:amitness
编译:ronghuaiyang
正文共: 3116 字 21 图
预计阅读时间: 9 分钟
原文链接:
BERT的youxiu变体:ALBERT论文图解介绍​mp.weixin.qq.com
65f43d9e3d79474b96be0d290287ed5e.png

ALBERT作为BERT的一个变体,在保持性能的基础上,大大减少了模型的参数,使得实用变得更加方便,是经典的BERT变体之一。

考虑下面给出的句子。作为人类,当我们遇到“apple”这个词时,我们可以:

  • 把“apple”这个词和我们对“apple”这个水果的表征联系起来
  • 根据上下文将“apple”与水果联系在一起,而不是与公司联系在一起
  • 理解“he ate an apple
  • 在字符级,单词级和句子级理解它

d2a1704e4a03cbf95a3d2036a9212ee1.png

NLP最新发展的基本前提是赋予机器学习这些表示的能力。
2018年,谷歌发布了BERT,试图基于一些新的想法来学习这个表示:

回顾: BERT

1. 掩码语言建模

语言建模包括预测单词的上下文,作为一种学习表示的方法。传统上,这包括到当给出前面的单词时预测句子中的下一个单词。

2f9ffbf9472866873d1881c0a1b76b9e.png

相反,BERT使用了一个掩码语言模型目标,在这个模型中,我们在文档中随机地对单词进行掩码,并试图根据周围的上下文来预测它们。

de5ce5b4d3a080b7baa532421caaa0c6.png

2. 下一个句子预测

“下一个句子预测”的目的是检测两个句子是否连贯。

7f1991191fdcf12f559ef6db7e61d73d.png

为此,训练数据中的连续句被用作一个正样本。对于负样本,取一个句子,然后在另一个文档中随机抽取一个句子放在它的旁边。在这个任务中,BERT模型被训练来识别两个句子是否可以同时出现。

3. Transformer结构

为了解决上述两项任务,BERT使用了多层Transformer模块作为编码器。单词向量被传递到各个层,以捕获其含义,并为基本模型生成大小为768的向量。

77c68b6881348b7e2143c424b3a2a2f7.png

Jay Alammar有一篇非常好的文章:http://jalammar.github.io/bert/,更深入地阐述了Transformer的内部机制。

BERT的问题

BERT发布后,在排行榜上产生了许多NLP任务的最新成果。但是,模型非常大,导致了一些问题。“ALBERT”论文将这些问题分为两类:

1、内存限制和通信开销

考虑一个包含一个输入节点、两个隐藏节点和一个输出节点的简单神经网络。即使是这样一个简单的神经网络,由于每个节点的权重和偏差,也会有7个参数需要学习。

035423f926a242e1f0cea00d71dd87c3.png

BERT-large模型是一个复杂的模型,它有24个隐含层,在前馈网络和注意头中有很多节点,所以有3.4亿个参数。如果你想在BERT的基础上进行改进,你需要大量的计算资源的需求来从零开始进行训练并在其上进行迭代

a5725d0b1b93209770125268292b7eba.png

这些计算需求主要涉及gpu和TPUs,但是这些设备有内存限制。所以,模型的大小是有限制的。

分布式训练是解决这个问题的一种流行方法。我们以BERT-large上的数据并行性为例,其中训练数据被分到两台机器上。模型在两台机器上对数据块进行训练。如图所示,你可以注意到在梯度同步过程中要传输的大量参数,这会减慢训练过程。同样的瓶颈也适用于模型的并行性,即我们在不同的机器上存储模型的不同部分。

5db1998830810a4004b0ab98d3f36680.png

2、模型退化

最近在NLP研究社区的趋势是使用越来越大的模型,以获得在排行榜上的最先进的性能。ALBERT 的研究表明,这可能会导致收益退化。

在论文中,作者做了一个有趣的实验。

如果更大的模型可以带来更好的性能,为什么不将最大的BERT模型(BERT-large)的隐含层单元增加一倍,从1024个单元增加到2048个单元呢?

他们称之为“BERT-xlarge”。令人惊讶的是,无论是在语言建模任务还是在阅读理解测试(RACE)中,这个更大的模型的表现都不如BERT-large模型。

651362898b506bd4dd873442000b7e48.png

从原文给出的图中,我们可以看到性能是如何下降的。BERT-xlarge的性能比BERT-large差,尽管它更大并且有更多的参数。

b73203314d92e4d8d10ae57b32f58855.png

从BERT到ALBERT

ALBERT在BERT 的基础上提出了一些新颖的想法来解决这些问题:

1、跨层参数共享

BERT-large模型有24层,而它的基础版本有12层。随着层数的增加,参数的数量呈指数增长。

2e02d614d323c3bf67fbf5b770407496.png

为了解决这个问题,ALBERT使用了跨层参数共享的概念。为了说明这一点,让我们看一下12层的BERT-base模型的例子。我们只学习第一个块的参数,并在剩下的11个层中重用该块,而不是为12个层中每个层都学习不同的参数。

8850e399cae96f13750dccdcca06d395.png

我们可以只共享feed-forward层的参数,只共享注意力参数,也可以共享整个块的参数。论文对整个块的参数进行了共享。

与BERT-base的1.1亿个参数相比,ALBERT模型只有3100万个参数,而使用相同的层数和768个隐藏单元。当嵌入尺寸为128时,对精度的影响很小。精度的主要下降是由于feed-forward层的参数共享。共享注意力参数的影响是最小的。

478590d015d7c35494294f3be9fc0224.png

跨层参数策略对性能的影响

2、句子顺序预测 (SOP)

BERT引入了一个叫做“下一个句子预测”的二分类损失。这是专门为提高使用句子对,如“自然语言推断”的下游任务的性能而创建的。基本流程为:

  • 从训练语料库中取出两个连续的段落作为正样本
  • 从不同的文档中随机创建一对段落作为负样本

04110814aff4de8f1eee5d4bf804c1ce.png

像ROBERTA和XLNET这样的论文已经阐明了NSP的无效性,并且发现它对下游任务的影响是不可靠的。在取消NSP任务之后,多个任务的性能都得到了提高。

因此,ALBERT提出了另一个任务**“句子顺序预测”**。关键思想是:

  • 从同一个文档中取两个连续的段落作为一个正样本
  • 交换这两个段落的顺序,并使用它作为一个负样本

8309ec781bbaa18f985ed723ce25fbd7.png

这使得模型能学习到更细粒度的关于段落级的一致性的区别。

ALBERT推测NSP是无效的,因为与掩码语言建模相比,它并不是一项困难的任务。在单个任务中,它混合了主题预测和连贯性预测。主题预测部分很容易学习,因为它与掩码语言建模的损失有重叠。因此,即使NSP没有学习连贯性预测,它也会给出更高的分数。

SOP提高了下游多句编码任务(SQUAD 1.1, 2.0, MNLI, SST-2, RACE)的性能。

58ac582daa0c334e2bd91bd1ff2d0942.png

在这里我们可以看到,在SOP任务上,一个经过NSP训练的模型给出的分数只比随机基线略好一点,但是经过SOP训练的模型可以非常有效地解决NSP任务。这就证明SOP能带来更好的学习表现。

3、嵌入参数分解

在BERT中,使用的embeddings(word piece embeddings)大小被链接到transformer块的隐藏层大小。Word piece embeddings使用了大小为30,000的词汇表的独热编码表示。这些被直接投射到隐藏层的隐藏空间。

假设我们有一个大小为30K的词汇表,大小为E=768的word-piece embedding和大小为H=768的隐含层。如果我们增加了块中的隐藏单元尺寸,那么我们还需要为每个嵌入添加一个新的维度。这个问题在XLNET和ROBERTA中也很普遍。

73c1e119766314d007e78470cfd5e883.png

ALBERT通过将大的词汇表嵌入矩阵分解成两个小的矩阵来解决这个问题。这将隐藏层的大小与词汇表嵌入的大小分开。这允许我们在不显著增加词汇表嵌入的参数大小的情况下增加隐藏的大小。

6243c881966bea9768b4b00b3eb529ba.png

我们将独热编码向量投影到E=100的低维嵌入空间,然后将这个嵌入空间投影到隐含层空间H=768。

结果

  • 比BERT-large模型缩小了18x的参数
  • 训练加速1.7x
  • 在GLUE, RACE和SQUAD得到SOTA结果:
    • RACE:89.4%[提升45.3%]
    • GLUE Benchmark:89.4
    • SQUAD2.0 f1 score:92.2

总结

ALBERT标志着构建语言模型的重要一步,该模型不仅达到了SOTA,而且对现实世界的应用也是可行的。

英文原文:https://amitness.com/2020/02/albert-visual-summary/

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

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

相关文章

数据分析转软件测试,(转)性能测试用户模型(三):基础数据分析、场景数据...

作者:薛定谔的破猫基础数据分析以下图表均取自互联网,本文是在“已经获取所需数据”的前提下,讲解性能测试的一些设计思路。至于如何才能取得这些数据,将在后续的文章中说明。系统访问量分布由系统的日访问量分布图,可…

王者体验服服务器注册人数已满,王者官方大厅奖励有多难获得?服务器直接崩溃,玩家:别发红包了...

可乐要加冰,乔妹在你心,大家好我是小乔妹,每天为您分享有趣的王者资讯,感谢您的关注。王者荣耀一直以来都有许许多多的活动,有限时活动也有长久活动,但官方专属大厅奖励活动确实王者史上第一次奖励&#xf…

cmd输入pip报错_使用Pip管理Python的包

这是我的Python教程的第2篇文章第1篇文章在这里:Python安装0x01Pip介绍Pip是Python的包管理程序,负责Python的包的查找,下载,安装,卸载工作;使用Pip可以轻松的管理Python成千上万的第三包,使你在Python程序的开发如鱼得水0x02使用Pip确保已经把Python的路径添加进系统路径右键我…

jenkins部署流程图_一文教你使用 Jenkins 设计多环境、多项目持续集成环境!

自动化部署主要是为了解决项目多、环境多、持续集成慢、部署操作麻烦、手动操作易出错、自动化运维等问题。Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。目标:支持多分支、多环境、…

udp 使用connect优点_一文搞懂TCP和UDP的区别

TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol ,用户数据报协议)都属于TCP/IP协议簇。TCP/IP协议集包括了超文本传输协议(HTTP)、文本传输协议(FTP)、远程登录协议(Telnet)、internet协议(IP)、internet控制信息协议(IMCP)等&#xff0…

小森生活显示无可用服务器,《小森生活》无可用游戏服务器解决教程 无可用网关服务器怎么办...

导读小森生活无可用网关服务器是什么意思?怎么解决?小森生活无可用网关服务器这个提示在进入游戏中会出现哦,很多玩家都无法正常进入游戏怎么解决呢,现在就来告诉给大家详细解决方法吧~小森生活无可用游戏服务器...小森生活无可用…

矢量归一化_浅析矢量网络分析仪误差模型及校准

最近跟业界一位同仁讨论了矢量网络分析仪的误差模型及校准过程,简单整理了一下,分享给大家,欢迎一起讨论。矢网的误差模型确实不太好理解,一般只有研发矢网或者专攻测试技术的人员才会深入探究。使用矢网测试之前,都是…

数据库表名大小写_某教程学习笔记(一):09、MYSQL数据库漏洞

她其实并不喜欢你,只是在寂寞的时候,你刚好撞上去,刚好你对她好,刚好你能入她眼,刚好她来着不拒,这所有都是刚好。。。---- 网易云热评一、MYSQL语句创建数据库create database test;选择要操作的数据库use…

arcgis几何修复有作用吗_修复损坏的 shapefile

一、SHP文件Shapefile文件(简称SHP)作为ESRI一种经典的数据格式,被很多其他软件所支持,如CAD、MapGIS等,虽然也有一些限制(如无法进行拓扑分析、字段长度为10个字符等),但其仍然是广泛使用的空间数据格式。用得多了,有…

服务器存档修改,云服务器存档修改器

云服务器存档修改器 内容精选换一换修改云服务器信息,目前支持修改云服务器名称及描述。您可以在API Explorer中直接运行调试该接口。PUT /v2.1/{project_id}/servers/{server_id}参数说明请参见表1。参数说明参数是否必选描述project_id是项目ID。获取方法请参见获…

contains方法_【原创】Pandas数据处理系列(二):常用处理方法笔记

Pandas的魅力在于处理数据的灵活性,但是由于太灵活,会导致使用者很容易忘记各类方法。在Pandas学习这件事情上,真正体现了好记性不如烂笔头的方法特性。故特用此文章记录Pandas常用的数据处理方法,需要用的时候,打开此…

模板多个列表级联_如何使用word制作模版?word怎样使用模板?

Word模板的使用教程:使用Word预设模板首次打开Word时,显示的第一个窗口会询问您要打开的文件。有几种选择。您可以打开一个新文档,这意味着将打开一个没有文本或样式的新文件。在新的空白文档中显示的唯一样式是在空白文件模板中设置的样式。…

联想gen系列服务器,Hpe Microserver Gen10 Plus开箱

Hpe Microserver Gen10 Plus开箱2021-04-19 10:53:2325点赞69收藏83评论心水很久的gen10 plus终于到了,关注了很久终于下手了,在值得买好像都没看到gen10 plus的开箱,那我就来一个开箱吧,本来是一个gen8升级到gen10plus的过程&…

加密选项_Zoom终于为免费账户也提供了端到端通讯加密的选项

受 COVID-19 健康危机的影响,世界各地的人们的工作和日常生活都发生了极大的改变。与此同时,以 Zoom 为代表的云会议解决方案,已经成为了许多人协同工作和网络授课的首选解决方案。问题在于,免费版的 Zoom 服务迟迟未能引入端到端…

c++ map 初始化_如何调整Linux内核启动中的驱动初始化顺序?

如何调整Linux内核启动中的驱动初始化顺序?【问题】此处我要实现的是将芯片的ID用于网卡MAC地址,网卡驱动是enc28j60_init。但是,读取芯片ID的函数,在as352x_afe_init模块中,所以要先初始化as352x_afe_init。此处&…

mysql group_concat去重_mysql 数据库group_concat函数的一些用法

对于group_contact函数一般懂一点sql的人来说,并不算太陌生,它主要配合group by 使用,起着分组时,将涉及行的相应的字段串联成一个字段如下表a:我们按照type分类,并将对应的名称按逗号分隔保存为一个names字…

mysql 5.5 查询_mysql5.5数据库优化--定位慢查询

什么是慢查询mysql记录下查询超过指定时间的语句,被称为“慢查询”;启动慢查询日志1.查询是否把索引的SQL记录到慢查询日志中SHOW VARIABLES LIKE log_queries_%2.将查询到的值若为OFF,表示没有记录,就开启记录SET GLOBAL log_que…

svn mysql认证_SVN基于MySQL认证

SVN的简介和工作原理Subversion(简称svn)是近几年崛起的版本管理软件,是cvs的接班人,目前绝大多数开源软件都使用svn作为代码版本管理软件。Subversion支持linux和windows,但是普通应用在Linux上。SVN主要是通过两种方式来工作:即…

mysql 日期类型比价_MySQL 日期时间类型怎么选?

构建数据库写程序避免不了使用日期和时间,对于数据库来说,有多种日期时间字段可供选择,如 timestamp 和 datetime 以及使用 int 来存储 unix timestamp。不仅新手,包括一些有经验的程序员还是比较迷茫,究竟我该用哪种类…

怎么才能点一下excel中的超链接就显示出图片?_Excel如何批量建立超链接,搭建工作台...

本篇是“建立工作导航”第3讲如果您错过了前两篇:点墨楼:高效秘技!用EXCEL制作导航页和日志表管理日常工作​zhuanlan.zhihu.com点墨楼:批量提取文件名,快速建立EXCEL工作台文件路径​zhuanlan.zhihu.com为了提高工作效…