【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations

【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations(语言表示自监督学习的简化版)

前言

BERT 模型提出之后,在排行榜上产生了许多 NLP 任务的最新成果。但是,模型非常大,所需要的参数达到110M(Bert_base)和340M(Bert_large),导致了普通的研究人员无法利用自身条件去训练这样庞大的模型。

摘要

在通常情况下,增大模型的规模可以提高模型在自然语言下游任务的性能。但是随着GPU/TPU内存限制和训练时间的限制,在某些时候进一步增加模型变得更加困难。为了解决这个问题,作者提出了两种减少参数的技术来降低内存消耗和提高Bert的训练速度。通过实验证明,相比于Bert,Albert具有更好的可伸缩性,还使用了一种专注于建模句子间连贯性的自监督损失,并表明它始终有助于多句输入的下游任务。模型在GLUE、RACE和SQuAD基准测试上得到了最新的结果,同时与BERT-large相比具有更少的参数。

一、介绍

全网络预训练为语言表征学习带来了一系列的突破,许多重要的NLP任务,包括那些训练数据有限的任务,都从这些预先训练的模型中受益匪浅。这些突破的一个最引人注目的迹象是,在一项为中国初中和高中英语考试设计的阅读理解任务中,机器的表现发生了变化。RACE测验:论文最初描述了任务,并制定了建模挑战报告,然后最先进的机器精度为44.1%;最新公布的结果显示,他们的模型性能为83.2%;作者在这里介绍的工作将其推高到89.4%,这是45.3%的惊人改进,主要归功于当前构建高性能预训练语言表示的能力。
这些改进的证据表明,大型网络对于实现最先进的性能至关重要。预训练大型模型并将其提炼为用于实际应用的小型模型已成为普遍的做法。 考虑到模型大小的重要性,作者提问: 拥有更好的NLP模型和拥有更大的模型一样容易吗?
回答这个问题的一个障碍是可用硬件的内存限制。鉴于目前最先进的模型通常有数亿甚至数十亿个参数,当作者试图缩放模型时,很容易遇到这些限制。在分布式训练中,训练速度也会受到很大的阻碍,因为通信开销与模型中参数的数量成正比。
针对上述问题的现有解决方案包括模型并行化和智能内存管理。这些解决方案解决了内存限制问题,但没有解决通信开销。在本文中,作者通过设计一个简化版的Bert (ALBERT)体系结构来解决上述所有问题,该体系结构的参数比传统BERT体系结构少得多。
ALBERT结合了两种参数缩减技术,解决了预训练模型缩放的主要障碍。第一种是:嵌入因式分解 通过将庞大的词汇嵌入矩阵分解为两个小矩阵,将隐含层的大小与词汇嵌入的大小分离开来,这种分离使得增加隐层大小更容易,而不会显著增加词汇表嵌入的参数大小。第二种是:跨层参数共享 这种技术可以防止参数随网络深度的增长而增长。这两种技术都显著减少了BERT的参数数量,而不会严重损害性能,从而提高了参数效率。类似于BERT-large的ALBERT配置的参数少18倍,训练速度快1.7倍。参数缩减技术还可以作为一种正则化形式,稳定训练并有助于泛化。
为了进一步提高AlBert的性能,作者还引入了一种用于句子顺序预测的自监督损失(SOP)。SOP主要关注句间连贯,旨在解决Bert中提出的下一句预测(NSP)丢失的无效问题。
由于这些设计决策,作者能够扩展到更大的ALBERT配置,这些配置的参数仍然比BERT-large少,但性能明显更好。作者在著名的GLUE、SQuAD和RACE自然语言理解基准上实现了最新的结果。具体来说,将RACE准确率提高到89.4%,GLUE基准提高到89.4,将SQuAD 2.0的F1分数提高到92.2.

二、相关工作

2.1 扩大自然语言的表示学习Scaling up representation learning for natural language

学习自然语言的表示法已被证明对广泛的自然语言处理任务是有用的,并已被广泛采用。过去两年最重要的变化之一是从训练前的单词嵌入(标准的或上下文的)转变为全网络的训练,然后进行特定于任务的微调。在这一项工作中,通常表明更大的模型尺寸可以提高性能。例如,Devlin等人(2019)表明,在三个选定的自然语言理解任务中,使用更大的隐藏大小、更多的隐藏层和更多的注意力头总是会带来更好的表现。然而,由于模型大小和计算成本问题,它们停留在1024的隐藏层大小上。
由于计算能力的限制,特别是GPU/TPU内存的限制,在大型模型上进行实验非常困难。鉴于目前最先进的模型通常有数亿甚至数十亿个参数,很容易达到内存极限。为了解决这个问题,Chen等人(2016)提出了一种称为梯度检查点的方法,以额外的向前通过为代价降低内存需求为次线性。Gomez等人(2017)提出了一种从下一层重构每一层激活的方法,这样他们就不需要存储中间激活。这两种方法都以降低速度为代价来减少内存消耗。Rafel et al.(2019)提出使用模型并行化来训练一个巨型模型。相比之下,作者的参数缩减技术减少了内存消耗并提高了训练速度。

2.2 跨层参数共享Cross-Layer Parameter Sharing

跨层共享参数的想法已经在Transformer体系结构中进行了探索,但先前的工作主要集中在对标准编码器-解码器任务的训练,而不是训练前/调优设置。与作者的观察结果不同,Dehghani等人(2018)表明,具有跨层参数共享的网络(通用转换器,UT)在语言建模和主谓一致性方面比标准转换器具有更好的性能。最近,Bai等人(2019)提出了transformer网络的深度均衡模型(DQE),并表明DQE可以达到某一层的输入嵌入和输出嵌入保持不变的平衡点。通过观察显示作者的嵌入是振荡的而不是收敛的。 Hao et al. (2019) 将参数共享transformer与标准transformer相结合,进一步增加了标准transformer的参数数量。

2.3 句子排序目标 Sentence Ordering Objectives

AlBert 使用基于预测两个连续文本片段的顺序的预训练损失。一些研究人员对训练前目标进行了实验,这些目标与语篇连贯类似。语篇中的连贯和衔接已经得到了广泛的研究,发现了许多连接相邻语段的现象。大多数在实践中被发现有效的目标是相当简单的。Skipthought和FastSent的句子嵌入是通过使用一个句子的编码来预测相邻句子中的单词来学习的。句子嵌入学习的其他目标包括预测未来的句子,而不仅仅是预测邻近的句子和预测显式话语标记。我们的损失最类似于Jernite等人(2017)的句子排序目标,即学习句子嵌入以确定两个连续句子的顺序。然而,与上述大多数工作不同的是,我们的损失是在文本片段而不是句子中定义的。Bert使用基于预测一对句子中的第二句是否已与另一个文档中的一句交换的损失。作者在实验中对比了这种损失,发现句子排序是一个更具挑战性的预训练任务,对某些下游任务更有用。与作者的工作同时,Wang等人(2019)也试图预测两个连续文本片段的顺序,但他们将其与原始的下一句预测结合在一个三分类任务中,而不是对两者进行经验比较。

三、AlBert的结构(The Elements Of AlBert)

在本节中,作者将介绍AlBert的设计决策,并与原始Bert体系结构的相应配置进行量化比较。

3.1 模型架构选择Model Architecture Choices

AlBert体系结构的主干与Bert类似,因为它使用带有GELU非线性的transformer编码器。作者遵循Bert表示法约定,将词汇表嵌入大小表示为E,将编码器层数表示为L,将隐藏大小表示为H,在Devlin等人(2019)之后,将前馈/过滤器大小设置为4H,注意头数量设置为H/64。AlBert对Bert的设计选择做出了三个主要贡献。

1.因式分解嵌入参数化: 在Bert以及后续的建模改进如XLNet和RoBERTa中,WordPiece嵌入大小E与隐含层大小H绑定,即E≡H。由于建模和实际原因,这个决策似乎不是最优的,如下所示。
从建模的角度来看,WordPiece嵌入是为了学习与上下文无关的表示,而隐藏层嵌入是为了学习与上下文相关的表示。正如关于上下文长度的实验所表明的那样,类bert表示的力量来自于使用上下文为学习这种上下文相关表示提供信号。因此,将WordPiece嵌入大小E从隐藏层大小H中分离出来,允许根据建模需求更有效地使用总模型参数,这就决定了H远大于E。
从实用的角度来看,自然语言处理通常要求词汇量V较大。如果E≡H,则增大H则嵌入矩阵的大小增大,其大小为V×E。这很容易导致一个具有数十亿个参数的模型,其中大多数参数只在训练过程中很少更新。
因此,对于AlBert,我们使用嵌入参数的因式分解,将它们分解为两个更小的矩阵。我们不直接将单热点向量投影到大小为H的隐藏空间中,而是先将它们投影到尺寸为E的低维嵌入空间中,然后再将其投影到隐藏空间中。通过使用这种分解,我们将嵌入参数从O(V × H)减少到O(V × E + E × H)。当H远大于E时,这种参数减少非常显著。选择对所有词块使用相同的E,因为与全词嵌入相比,它们在文档中更均匀地分布,而对不同的词具有不同的嵌入大小是很重要的。

2.跨层参数共享: 对于AlBert,作者提出跨层参数共享作为提高参数效率的一种方法。共享参数的方式有多种,例如跨层只共享前馈网络(FFN)参数,或者只共享注意力参数。AlBert的默认选择是跨层共享所有参数。所有的实验都使用这个默认选择,除非另有说明。作者将这个设计决策与第4.5节实验中的其他策略进行比较。
Dehghani等人(2018)(通用transformer,UT)和Bai等人(2019)(深度均衡模型,DQE)为transformer网络探索了类似的策略。与作者的观察结果不同,Dehghani等人(2018)表明UT的性能优于vanilla Transformer。
Bai等人,(2019)表明,当某一层的输入和输出嵌入保持不变时,它们的 DQEs 达到了一个平衡点。作者对L2距离和余弦相似度的测量表明作者的嵌入是振荡的而不是收敛的。
【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations_第1张图片
图1显示了每一层输入和输出嵌入的L2距离和余弦相似度,使用BERT-large和AlBert-large配置(见表1)。观察到AlBert从一层到另一层的过渡要比BERT平滑得多。这些结果表明,权重共享对稳定网络参数有一定的作用。尽管与BERT相比,这两个指标都有所下降,但即使在24层之后,它们也不会收敛到0。这表明AlBert参数的解空间与DQE发现的解空间有很大的不同。

3.句子间连贯损失: 除了掩盖语言模型(MLM)损失,BERT还使用了一种称为下句预测(NSP)的额外损失。NSP是一种用于预测原文中两个片段是否连续出现的二元分类损失,具体表现为:从训练语料库中提取连续的片段生成正例;通过配对来自不同文档的片段来创建反例;正例和负例的抽样概率相等。NSP目标旨在提高下游任务(如自然语言推理)的性能,这些任务需要对句子对之间的关系进行推理。然而,随后的研究(Yang等人,2019;Liu等人,2019)发现NSP的影响不可靠,并决定消除它,这一决定得到了跨多个任务的下游任务性能改善的支持。
我们推测,与MLM相比,NSP作为一项任务缺乏难度是其无效的主要原因。按照规定,NSP将主题预测和连贯预测合并在一个任务中。然而,与连贯预测相比,主题预测更容易学习,而且与使用MLM损失学习到的内容重叠更多。

作者认为句间建模是语言理解的一个重要方面,但作者提出了主要基于连贯的损失。也就是说,对于AlBert,使用了一个句子顺序预测(SOP)损失,它避免了主题预测,而是专注于建模句间连贯。我们认为句间建模是语言理解的一个重要方面,但我们提出了主要基于连贯的损失。也就是说,对于ALBERT,我们使用了一个句子顺序预测(SOP)损失,它避免了主题预测,而是专注于建模句间连贯。SOP丢失使用与BERT(来自同一文档的两个连续段)相同的技术作为正例,使用相同的两个连续段作为负例,但交换了它们的顺序。这迫使模型学习语篇层面连贯特性的细粒度差异。正如我们在第4.6节中所展示的,结果表明NSP根本无法解决SOP任务(即,它最终学习更容易的主题预测信号,并在SOP任务上以随机基线水平执行),而SOP可以在合理程度上解决NSP任务,这可能是基于分析错位的相干线索。因此,ALBERT模型持续地提高了多句编码任务的下游任务性能。

3.2 模型设置

【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations_第2张图片
在表1中展示了具有可比超参数设置的BERT和ALBERT模型之间的差异。由于上面讨论的设计选择,ALBERT模型的参数尺寸比相应的BERT模型小得多。
例如,ALBERT-large比BERT-large少了大约18倍的参数,18M比334M。H = 2048的ALBERT-xlarge配置只有60M参数,H = 4096的ALBERT-xxlarge配置有233M参数,即约占BERTlarge参数的70%。注意,对于ALBERT-xxlarge,我们主要展示12层网络上的结果,因为24层网络(具有相同的配置)获得类似的结果,但计算成本更高。
这种参数效率的提高是ALBERT设计选择的最重要的优势。在量化这种优势之前,需要更详细地介绍我们的实验设置。

四、实验结果

4.1 实验设置

为了使比较尽可能有意义,作者在使用BookCorpus和英文维基百科进行训练前基线模型时遵循BERT 设置。这两个语料库包含约16GB的未压缩文本。将输入格式化为“[CLS] x1 [SEP] x2 [SEP]”,其中x1 = x1,1, x1,2··和x2 = x1,1, x1,2···是两个段。作者总是将最大输入长度限制为512,随机生成小于512的输入序列,概率为10%。与BERT一样,使用的词汇量为30000,使用SentencePiece标记化,如XLNet。
使用n-gram掩码为MLM目标生成掩码输入,每个n-gram掩码的长度随机选择。长度n的概率由
在这里插入图片描述
将n-gram(即n)的最大长度设置为3(即MLM目标可以由最多3-gram的完整单词组成,如“White House correspondents”)。
所有模型更新都使用批量大小为4096和学习率为0.00176的LAMB优化器。除非另有说明,否则将对所有模型进行12.5万步的训练。培训在Cloud TPU V3上完成。根据模型的大小,用于训练的tpu的数量从64到512不等。本节中描述的实验设置用于作者的所有版本的BERT和ALBERT模型,除非另有说明。

4.2 评价基准

4.2.1 内在标准
为了监视训练进度,我们使用与第4.1节相同的过程,基于来自SQuAD和RACE的开发集创建一个开发集。我们报告了传销和句子分类任务的准确性。注意,我们只使用这个集合来检查模型是如何收敛的;它还没有被用于影响任何下游评估的性能的方式,例如通过模型选择。
4.2.2 下游的评价
继Y ang等人(2019)和Liu等人(2019)之后,我们在三个流行的基准上评估了我们的模型:通用语言理解评估(GLUE)基准(Wang等人,2018),斯坦福问答数据集(SQuAD;Rajpurkar等,2016;以及来自考试的阅读理解(RACE)数据集(Lai et al., 2017)。为了完整起见,我们在附录A.3中提供了这些基准测试的描述。如(Liu et al., 2019)所示,我们在开发集上执行早期停止,在开发集上我们展示所有比较,但基于任务排行榜的最终比较除外,我们也展示测试集结果。对于在开发集上有很大差异的GLUE数据集,我们展示中位数超过5次运行。

4.3 AlBert和Bert的整体比较

现在,我们准备量化第三节中描述的设计选择的影响,特别是围绕参数效率的选择。参数效率的提高展示了ALBERT设计选择的最重要优势,如表2所示:在只有大约70%的BERT-large参数的情况下,ALBERT-xxlarge比BERT-large取得了显著的改进,这是通过几个代表性下游任务的开发集得分的差异来衡量的:SQuAD v1.1(+1.9%)、SQuAD v2.0(+3.1%)、MNLI(+1.4%)、SST-2(+2.2%)和RACE(+8.4%)。
另一个有趣的观察结果是在相同的训练配置(相同的tpu数量)下,训练时的数据吞吐量速度。由于较少的通信和较少的计算,ALBERT模型与相应的BERT模型相比具有更高的数据吞吐量。如果我们使用BERT-large作为基线,我们可以观察到ALBERT-large在遍历数据时大约快1.7倍,而ALBERT-xxlarge因为更大的结构而慢3倍。
接下来,我们进行相容实验,量化每个ALBERT设计选择的个人贡献。

4.4 带有参数的因式分解

表3展示了使用基于albert的配置设置(参见表1),使用相同的代表性下游任务集,更改词汇表嵌入大小E的效果。在非共享条件下(bert样式),更大的嵌入尺寸提供更好的性能,但不是很多。
【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations_第3张图片
表2:在BookCorpus和Wikipedia上预训练125k步的模型的开发集结果。
在这里和其他地方,Avg列是通过其左侧下游任务得分的平均值计算出来的(每个小队的F1和EM两个数字首先是平均值)。在全共享条件下(albert-style),大小为128的嵌入似乎是最好的。基于这些结果,我们在未来的所有设置中使用嵌入大小E = 128,作为进一步缩放的必要步骤。
【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations_第4张图片

4.5 跨层参数共享

表4展示了各种跨层参数共享策略的实验,使用基于Albert的配置(表1)和两种嵌入大小(E = 768和E = 128)。我们比较了全共享策略(ALBERT-style)、非共享策略(BERT-style)和中间策略,其中仅共享注意力参数(但不共享FNN参数)或仅共享FFN参数(但不共享注意力参数)。
在这两种情况下,全共享策略都会损害性能,但E = 128(平均1.5)比E = 768(平均-2.5)更轻。此外,大部分性能下降似乎来自于共享ffn层参数,而共享注意参数在E = 128时没有下降(平均为+0.1),当E = 768时略有下降(平均为-0.7)。还有其他跨层共享参数的策略。例如,我们可以将L层划分为N个大小为M的组,每个大小为M的组共享参数。总的来说,我们的实验结果表明,group size M越小,我们得到的性能越好。然而,群体规模M的减小也显著增加了整体参数的数量。我们选择全共享策略作为默认选择。
【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations_第5张图片

4.6 句子顺序预测(sop)

直接比较了三种附加句间损失的实验条件:none (XLNet-和roberta-style)、NSP (bert-style)和SOP (Albert-style),使用Albert-base配置。表5显示了内在(MLM、NSP和SOP任务的准确性)和下游任务的结果。
【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations_第6张图片
内在任务的结果表明,NSP损失对SOP任务没有带来辨别能力(52.0%的准确率,类似于“None”条件下的随机猜测性能)。这允许我们得出结论,NSP最终只建模主题转移。相比之下,SOP损失确实相对较好地解决了NSP任务(准确率为78.9%),而SOP任务甚至更好(准确率为86.5%)。

更重要的是,SOP损失似乎持续地提高了多句编码任务的下游任务性能(around +1% for SQuAD1.1, +2% for SQuAD2.0, +1.7% for
RACE)平均分数提高约+1%。

4.7 训练相同的时间

表2中的加速结果表明,与Albert-xxlarge相比,BERT-large的数据吞吐量大约高3.17倍。由于较长的训练通常会带来更好的性能,我们执行了一个比较,而不是控制数据吞吐量(训练步骤的数量),我们控制实际的训练时间(即,让模型训练相同的小时数)。在表6中,我们比较了一个BERT-large模型经过400k训练步数(经过34小时训练)后的性能,大致相当于训练一个Albert-xxlarge模型经过125k训练步数(经过32小时训练)所需要的时间。
【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations_第7张图片
经过大致相同时间的训练后,Albert-xxlarge明显优于BERT-large:在Avg上优于+1.5%,在RACE上差异高达+5.2%。

4.8 额外的训练数据和信息丢失效应

到目前为止所做的实验只使用了Wikipedia和BOOKCORPUS数据集,在本节中,我们展示了XLNet 使用的附加数据的影响测量结果。
图2a绘制了dev set MLM 精度在两种情况下的图,一种是没有附加数据,另一种是有附加数据,后一种情况有显著提高。我们还观察到表7中下游任务的性能改进,但SQuAD基准测试除外(它们是基于维基百科的,因此会受到域外训练材料的负面影响)。
【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations_第8张图片
我们还注意到,即使在训练了1M步后,我们最大的模型仍然不能与它们的训练数据过拟合。因此,我们决定删除dropout以进一步增加我们的模型容量。
【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations_第9张图片
图2b中的图显示,去除dropout显著提高了MLM的精度。在1M训练步长左右对ALBERT-xxlarge的中间评估(表8)也证实了去除dropout有助于下游任务。有经验证据(Szegedy等人,2017)和理论证据(Li等人,2019)表明,卷积神经网络的批处理归一化和dropout的组合可能会产生有害的结果。据我们所知,我们是第一个证明dropout会损害基于transformer的大型模型的性能的人。然而,ALBERT的底层网络结构是transformer的一个特例,需要进一步的实验来确定这种现象是否会出现在其他基于transformer的体系结构中。
【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations_第10张图片

4.9 目前最先进的nlu任务

我们在本节中展示的结果使用了Devlin等人(2019)使用的训练数据,以及Liu等人(2019)和Y ang等人(2019)使用的附加数据。我们展示了在两种设置下进行微调的最先进的结果:单模型和整体。在这两种情况下,我们只进行单任务微调。继Liu等人(2019)之后,在开发集上,我们展示了五次运行的中值结果。
【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations_第11张图片
单模型ALBERT配置包含了所讨论的最佳性能设置:一个ALBERT-xxlarge配置(表1)使用了MLM和SOP损失的组合,并且没有dropout。
对最终集成模型有贡献的检查点是根据开发集的性能选择的;根据任务的不同,为这个选择考虑的检查点数量从6到17个不等。对于GLUE(表9)和RACE(表10)基准测试,我们对集成模型的模型预测取平均值,其中候选模型使用12层和24层体系结构从不同的训练步骤中进行微调。对于SQuAD(表10),我们对具有多个概率的跨度的预测得分取平均值;我们还对“无法回答的”决定的得分取平均值。
单模型和集成结果都表明,ALBERT在所有三个基准测试中都显著提高了最先进的水平,达到了89.4的GLUE分数,92.2的SQuAD 2.0测试F1分数和89.4的RACE测试精度。后者似乎是一个特别强劲的进步,比BERT上升了17.4%的绝对分数(Devlin等人,2019;Clark等人,2019),比XLNet +7.6% (Yang等人,2019),比RoBERTa +6.2% (Liu等人,2019),比DCMI+ 5.3% (DCMI+是专门为阅读理解任务设计的多个模型的集合。我们的单一模型达到了86.5%的精度,这仍然比最先进的集成模型好2.4%。
【论文阅读】AlBert: A Lite Bert For Self-Supervised Learning Of Language Representations_第12张图片

五、讨论

虽然ALBERT-xxlarge的参数比BERT-large少,而且得到的结果明显更好,但由于它的结构更大,计算成本更高。因此,一个重要的下一步是通过稀疏注意力(Child et al., 2019)和块注意力(Shen et al., 2018)等方法加快ALBERT的训练和推理速度。正交研究线可以提供额外的表示能力,包括硬示例挖掘(Mikolov等人,2013年)和更有效的语言建模训练(Yang等人,2019年)。此外,尽管我们有令人信服的证据表明,句子顺序预测是一项更持久有效的学习任务,可以带来更好的语言表示,但我们假设,可能还有更多的维度尚未被当前的自监督训练损失所捕获,可以为结果表示创造额外的表示能力。

你可能感兴趣的:(论文笔记,论文阅读,bert,深度学习)