作者:amitness
编译:ronghuaiyang
正文共: 3116 字 21 图
预计阅读时间: 9 分钟
原文链接:

BERT的youxiu变体:ALBERT论文图解介绍​mp.weixin.qq.com

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

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

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

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

回顾: BERT

1. 掩码语言建模

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

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

2. 下一个句子预测

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

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

3. Transformer结构

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

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

BERT的问题

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

1、内存限制和通信开销

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

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

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

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

2、模型退化

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

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

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

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

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

从BERT到ALBERT

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

1、跨层参数共享

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

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

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

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

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

2、句子顺序预测 (SOP)

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

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

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

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

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

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

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

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

在这里我们可以看到,在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中也很普遍。

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

我们将独热编码向量投影到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/

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

  1. 完全图解RNN、RNN变体、Seq2Seq、Attention机制

    完全图解RNN.RNN变体.Seq2Seq.Attention机制 本文作者:思颖 2017-09-01 18:16 导语:帮助初学者开启全新视角 雷锋网(公众号:雷锋网) AI科技评论按:本文作者何 ...

  2. BERT的优秀变体:ALBERT论文图解介绍

    2020-06-15 09:22:09 作者:amitness 编译:ronghuaiyang 正文共: 3116 字 21 图 预计阅读时间: 9 分钟 导读 ALBERT作为BERT的一个变体,在 ...

  3. RNN-GRU-LSTM变体详解

    首先介绍一下 encoder-decoder 框架 中文叫做编码-解码器,它一个最抽象的模式可以用下图来展现出来: 这个框架模式可以看做是RNN的一个变种:N vs M,叫做Encoder-Decod ...

  4. Transformer又出新变体∞-former:无限长期记忆,任意长度上下文

    点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 来自:机器之心 任意长度的上下文都能 hold 住?这里有一个名为∞-former 的 ...

  5. 基于深度学习的目标检测综述(单阶段、多阶段、FPN变体、旋转目标检测等)

    随着深度学习的发展,基于深度学习的目标检测方法因其优异的性能已经得到广泛的使用.目前经典的目标检测方法主要包括单阶段(YOLO.SSD.RetinaNet,还有基于关键点的检测方法等)和多阶段方法(F ...

  6. ResNet及其变体概述

    利用ResNet强大的表征能力,不仅是图像分类,而且很多其他计算机视觉应用(比如物体检测和面部识别)的性能都得到了极大的提升. 自从ResNet在2015年震惊学术界产业界后,许多研究界的专家人员就开 ...

  7. (转) 干货 | 图解LSTM神经网络架构及其11种变体(附论文)

    干货 | 图解LSTM神经网络架构及其11种变体(附论文) 2016-10-02 机器之心 选自FastML 作者:Zygmunt Z. 机器之心编译  参与:老红.李亚洲 就像雨季后非洲大草原许多野 ...

  8. 图解LSTM神经网络架构及其11种变体(附论文)

    来源:机器之心 英文原文:Deep learning architecture diagrams 参与:老红.李亚洲 原文链接:图解LSTM神经网络架构及其11种变体(附论文) 本文经机器之心(微信公 ...

  9. 变体类的使用 package record case【转载】

    **************理论区 start********************* DELPHI中记录的存储方式       在DELPHI中,我们用record关键字来表明一个记录,有时候,我 ...

最新文章

  1. 超级详细的 Python 数据分析指南
  2. 4.性能下降原因和常见的Join查询
  3. Mac 下安装 Python-OpenCV Python-OpenCV 处理图像(一):基本操作
  4. 一次发现underscore源码bug的经历以及对学术界『拿来主义』的思考
  5. ACM - 欧拉函数(内容)
  6. 表达、思考和解决问题的逻辑(金字塔原理-高质量读书笔记)
  7. 人工智能必备数学知识· 学习笔记 ·002【马尓可夫链,马尓可夫链奖励过程,马尔可夫决策过程】
  8. Query 中使用 text() 或者 html() 函数可bai以获取font or td 的内容:
  9. 电脑硬盘右击计算机就卡死,Win10电脑使用过程中莫名其妙卡死的的三种解决方法...
  10. 三菱5uplc伺服电机指令_实例 | PLC触摸屏控制伺服电机程序设计
  11. sql分组排序取top n
  12. 四川小学计算机的组成是几年级学,小学三年级计算机教案
  13. 六月集训(第21天) —— 堆(优先队列)
  14. ASP.NET MVC3 查询解决方案
  15. Task2 数据分析
  16. DS1302的使用方式 及 51单片机连接DS1302的驱动程序
  17. 【MATLAB教程案例12】基于GA遗传优化算法的函数极值计算matlab仿真及其他应用
  18. LeetCode HOT 100 --- 2021/7/30
  19. MacBook 使用小鱼投屏无画面
  20. 数据库中minus的用法

热门文章

  1. MySQL流浪记(二)—— MySQL介绍及其特性
  2. scrapy-redis 使 redis 不止保存 url(例如:json)
  3. CompletableFuture详解~thenApply
  4. Java并发编程实战~Happens-Before 规则
  5. php点击链接代码,php 获取超链接中文本的代码
  6. java框架谁搭建_从零开始搭建一个开发框架(Java + Hibernate + Spring + Oracle)
  7. LwIP应用开发笔记之二:LwIP无操作系统UDP服务器
  8. linux将访问日志切成每天,最简单自动切割 nginx 访问日志示例
  9. java遍历删除原理,Java 垃圾回收机制实现原理
  10. mysql连网安装和断网安装的区别_linux连网和jdk环境配置以及mysql安装