2020-06-15 09:22:09

作者:amitness

编译:ronghuaiyang

正文共: 3116 字 21 图

预计阅读时间: 9 分钟

导读

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的优秀变体:ALBERT论文图解介绍相关推荐

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

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

  2. 鲸鱼优化算法(WOA)及其优秀变体(含MATLAB代码)

    先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论.我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年提出 ...

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

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

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

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

  5. ResNet及其变体概述

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

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

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

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

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

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

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

  9. DINO 论文精度,并解析其模型结构 DETR 的变体

    截止2022年7月25日,DINO是目标检测的SOTA. 本人根据源码的复现感受和DINO论文的精读心得,撰写本篇博客,希望对你有所帮助. 目录 一.摘要 二.结论 三.解析DINO模型 (1)概述D ...

最新文章

  1. 云计算赋能人工智能,未来的红利在哪?
  2. 初学java之JFrame窗口模式
  3. 遗传和基因突变对神经网络训练的好处
  4. linux shell trap捕捉信号 附信号表 SIGTERM SIGKILL
  5. LeetCode59 Spiral Matrix II
  6. 机器学习(五) 关于散点图生成
  7. 解决crond引发大量sendmail、postdrop进程问题
  8. Spark _17 _SparkShuffle、HashShuffleManager、SortShuffleManager
  9. leaflet加载离线地图教程以及下载离线地图瓦片工具
  10. C/C++语言变量声明内存分配
  11. :after伪类+content经典应用举例
  12. Mac 上无法使用netstat的-p参数
  13. centos安装SVN独立服务器
  14. [算法模板]树状数组
  15. IPD+CMMI企业产品开发系统性解决方案
  16. linux终端黑绿字配色方案注意事项
  17. 游戏服务器运维需要注意,网络游戏服务器维护时都是在做些什么?
  18. Rejected connection from xx.xx.xx.xx, address already has the configured maximum of 10 connections
  19. 简单好听的宝宝小名大全
  20. 写给三维建模入门小白的建议

热门文章

  1. 后半生,你越活越好的7个迹象
  2. ios 系统状态栏样式修改_iOS_状态栏字体颜色修改(完美解决)
  3. 软件安全课程实验2 Shellshock Attack lab
  4. 2 c++编程-核心
  5. 【MySql:当前读与快照读】
  6. 一文搞定 | Linux 网络子系统
  7. 爱快最新版3.6用docker安装Jellyfin最新教程
  8. 从雨天塞车说DevOps,兼修订三步生活法
  9. 计算机专业 中职学校顶岗实习学校总结,中职学校顶岗实习论文(2)
  10. 大数据入门看哪些书比较好