在自然语言处理领域,预训练语言模型在多项NLP任务都获得了不错的提升。从ELMo、GPT、BERT到XLNet、RoBERTa,预训练语言模型在GLUE、SQuAQ和RACE三个榜单频频刷新纪录。最近,微软提出了一种新的预训练语言模型“DeBERTa”。它从两方面改进BERT和RoBEARTa,实验表明,DeBERTa在许多下游NLP任务上表现都优于RoBERTa和BERT。本文是AI前线第109篇论文导读,我们将对这项研究工作进行详细解读。
Transformer已经成为神经语言建模中最有效的神经网络结构。与按顺序处理文本的递归神经网络(RNNs)不同,Transformers应用自关注并行地计算输入文本中的每个单词的注意力权重,该权重衡量每个单词对另一个单词的影响,从而能够实现比RNNs更好的并行大规模模型训练。自2018年以来,我们看到了一组基于Transformer的大规模预训练语言模型(PLMs)的兴起,如GPT、BERT、RoBERTa、XLNet、UniLM、ELECTRA、T5、ALUM、StructBERT和ERINE。这些PLMs使用特定于任务的标签进行了微调,并在许多下游自然语言处理(NLP)任务中实现了新的突破。
本文提出了一种新的基于Transformer的神经语言模型DeBERTa(Decoding enhanced BERT with discentanged attention),它被证明比RoBERTa和BERT作为PLM更有效,并且经过微调后,在一系列NLP任务中取得了更好的效果。
DeBERTa对BERT模型做了两个修改:
我们将通过一个综合的实证研究表明,这两种技术大大提高了训练前的效率和下游任务的执行。与RoBERTa Large相比,使用一半训练数据训练的DeBERTa模型在一系列NLP任务中的表现都比较好,在MNLI上提高了+0.9%(90.2% vs 91.1%),在SQuAD v2.0上提高了+2.3%(88.4% vs 90.7%),在RACE提高了+3.6%(83.2% vs 86.8%)。
对于序列中位置i处的令牌,我们使用两个向量{H i}和{P i | j }来表示,这两个向量分别表示在j的位置,令牌的内容和其的相对位置。令牌i和j之间交叉注意力得分的计算可以分解为四个部分,如下所示
也就是说,一个词对的注意力权重可以计算为四个注意力得分的总和,使用在其内容和位置上的分散矩阵作为内容到内容、内容到位置、位置到内容和位置到位置。
现有的相对位置编码方法[19,21]在计算注意力权重时使用单独的嵌入矩阵来计算相对位置偏差。这相当于仅使用(2)中的内容对内容和内容对位置项计算注意力权重。我们认为,词对的注意力权重不仅取决于词对的内容,而且取决于词对的相对位置,因此词对的位置对内容项也很重要,只有同时使用内容对位置和位置对内容项才能完全建模。由于我们使用了相对位置嵌入,因此位置到位置项不提供太多附加信息,并且在我们的实现中从(2)中移除。
以单头注意为例,标准的自我注意力可以表述为:
其中,H ∈ R Nxd表示输入隐藏向量,Ho ∈ R Nxd 表示自我注意的输出,Wq,Wk,Wv ∈R d x d表示投影矩阵,A ∈ R NxN表示注意力矩阵,N表示输入序列的长度,d表示隐藏状态的维数。
k表示为最大相对距离,δ (i,j )∈ [0,2k ) 作为从令牌 i 到令牌 j的相对距离,定义为:
我们可以将具有相对位置偏差的分散自注意力表示为(4),其中Qc、Kc和Vc分别是使用投影矩阵Wq,c ,Wk,c,Wv,c ∈ R dxd生成的投影内容向量,P ∈ R 2k xd表示跨所有层共享的相对位置嵌入向量(即在正向传播期间保持不变),Qr和Kr分别是使用投影矩阵Wq,r,Wk,r ∈ R d x d生成的投影相对位置向量。
A^i,j是注意矩阵A^的元素,表示从令牌i到令牌j的注意力得分。Qci是Qc的第i行。Kcj是Kc的第j行。Krδ(i,j)是关于相对距离δ(i,j)的Kr的第i行的δ(i,j)。Qrδ(j,i)是关于相对距离δ(j,i)的Qr的第i行δ(j,i)。注意,这里我们使用δ(j,i)而不是δ(i,j)。这是因为对于给定的位置i,位置到内容计算j处的关键内容相对于i处的查询位置的注意力权重,因此相对距离是δ(j,i)。位置到内容项计算为K(c j) Qrδ(j,i) (T)。内容到位置的项以类似的方式计算。
最后,对于稳定模型训练(尤其是对于大型PLMs)而言,应用一个比例因子1/√(3d)在A^上非常重要。
对于长度N的输入序列,需要O(N^2d)的空间复杂度来存储每个令牌的相对位置嵌入。然而,以内容到位置为例,我们注意到由于δ(i,j) ∈[0,2k) 以及所有可能的相对位置的嵌入始终是Kr ∈ R 2k x d的子集,因此我们可以在所有查询的注意力计算中重用Kr。
在实验中,我们将训练前的最大相对距离k设置为512。算法1可以有效地计算出分散的注意力权重。根据(3)设δ为相对位置矩阵,即δ[i,j]=δ(i,j)。我们没有为每个查询分配不同的相对位置嵌入矩阵,而是将每个查询向量Qc[i,:]乘以K T r ∈ R d x2k,如第3行5所示。然后,我们使用相对位置矩阵δ作为索引来提取注意力权重,如第6-10行所示。为了计算内容注意得分的位置,我们通过将每个键向量Kc[j,:]乘以Q T r来计算A^p->c[:,j],即注意矩阵A^p->c的列向量,如第11行13所示。最后,我们通过相对位置矩阵δ作为索引提取相应的注意力得分,如第14行和第18行所示。这样,我们不需要分配内存来存储每个查询的相对位置嵌入,从而将空间复杂度降低到O(kd)(用于存储Kr和Qr)。
在标准的BERT预训练期间,我们通过词汇表将与掩码令牌对应的最终隐藏向量输送给输出Softmax层。在微调过程中,我们将BERT输出输入到一个特定于任务的解码器中,该解码器具有一个或多个特定任务的解码层,如果输出是概率,则再加上一个Softmax层。为了减少预训练和微调之间的不匹配,我们将MLM和其他下游任务一样对待,并用包含一个或多个Transformer层和一个Softmax输出层的增强型掩码解码器(EMD)替换BERT的输出Softmax。这使得结合BERT和EMD进行预训练的DeBERTa成为一个编码器-解码器模型。
为满足多个需求,我们设计了用于预训练的DeBERTa模型体系结构。首先,编码器应该比解码器深得多,因为前者用于微调。其次,编解码模型的参数个数需要与BERT的参数个数相似,使得预训练耗费与BERT相同。第三,DeBERTa的预训练编码器应该类似于BERT,这样它们在下游任务上的微调成本和性能是可比较的。
以12层BERT基模型为基线进行比较。实验中使用的预训练DeBERTa结构由11层Transformer组成的编码器,2层Transformer共享参数的解码器和一个Softmax输出层组成。因此,该模型具有与BERT-base相似的自由参数。在对DeBERTa模型进行预训练后,我们对11层编码器和1层解码器进行叠加,以恢复标准的BERT基结构进行微调。
此外,在将编码器输出向量输入EMD进行MLM预训练时,我们对其进行了一个虽小但重要的修改。BERT的作者建议不要用[MASK]令牌替换所有掩码令牌,保持10%不变。尽管这是为了缓解微调和预训练之间的不匹配,因为在下游任务的输入中从来没有出现过[MASK],但是该方法遭受信息泄漏的影响,即预测以令牌本身为条件的掩码令牌。为了解决这个问题,我们在将这些被掩码但未改变的令牌输入解码器进行预测之前,将它们的编码器输出向量替换为相应的绝对位置嵌入向量。
这一节将对DeBERTa在各种NLP任务上的表现进行评估。
根据之前关于BERT、RoBERTa和XLNet的论文,我们使用大型和基模型来报告结果。
我们按照BERT的设置预训练我们的大型模型,不过我们使用的是BPE词汇表。对于训练数据,我们使用Wikipedia(English Wikipedia dump;12GB)、BookCorpus(6GB)、OPENWEBTEXT(public Reddit content;38GB)和STORIES(CommonCrawl的子集;31GB)。重复数据消除后的总数据大小约为78GB。我们使用6台DGX-2机器和96个V100 GPU来训练模型。单个模型训练,batch size 设置为2K,1M的steps,大约需要20天的时间。
我们在表1中总结了8个GLUE任务的结果,其中比较了DeBERTa和以前的模型(参数约为350M)的BERT、RoBERTa和XLNet。注意,RoBERTa和XLNet使用160G训练数据,而DeBERTa使用78G训练数据。RoBERTa和XLNet被训练了500K步,一步8K个样本,超过训练样本40亿次。我们对DeBERTa进行100万步的训练,每一步有2千个样本。这相当于其训练样本的20亿次pass,约占RoBERTa或XLNet的一半。
表1显示,与BERT和RoBERTa相比,DeBERTa在所有任务中始终表现得更好。同时,DeBERTa在八项任务中有六项优于XLNet。特别是,MRPC(1.7%超过XLNet,1.6%超过RoBERTa)、RTE(2.2%超过XLNet,1.5%超过RoBERTa)和CoLA(0.5%超过XLNet,1.5%超过RoBERTa)的改进非常显著。
注意,MNLI经常被用作一项指示性任务,以监测预训练的进度。DeBERTa在MNLI上的表现明显优于所有现有相同参数量的模型,并打破了一个新的state-of-the-art(SOTA)。
我们根据额外的基准来评估DeBERTa:(1)问答:SQuAD v1.1、SQuAD v2.0、RACE、ReCoRD和SWAG;(2)自然语言推理:MNLI;(3)NER:CoNLL-2003。为了进行比较,我们还将Megatron分为三种不同的模型尺寸:Megatron 336M、Megatron 1.3B和Megatron 3.9B,它们使用与RoBERTa相同的数据集进行训练。请注意,Megatron336M的模型大小与上述其他模型相似。
我们将结果总结在表2中。与之前的SOTA模型(包括BERT、RoBERTa、XLNet和Megatron336M)相比,DeBERTa在这7项任务中的表现始终更优。以RACE为例,DeBERTa的性能明显优于之前的SOTA XLNet,提高了1.4%(86.8% vs 85.4%)。尽管Megatron1.3B是DeBERTa的3倍大,但我们观察到,DeBERTa在四个基准中的三个方面仍然可以超过Megatron1.3B。结果表明,在不同的下游任务中,DeBERTa算法都具有较好的性能。我们相信,DeBERTa在更大的模型尺寸下可以表现得更好,未来我们将继续这个方向的研究工作。
Base模型预训练的设置与大型模型的设置类似。Base模型结构遵循BERT的Base模型结构,即L=12,H=768,A=12。我们使用带有64个V100 GPU的4个DGX-2来训练Base模型,batch size 为2048,step为1M,训练Base模型大约需要10天。我们使用相同的78G文本数据训练DeBERTa,并将其与使用160G文本数据训练的RoBERTa和XLNet进行比较。
我们将结果总结在表3中。在这三项任务中,DeBERTa的表现超越了RoBERTa和XLNet,在大型机型上的改进要比后者更多。例如,在MNLI-in-domain设置(MNLI-m)中,DeBERTa base比RoBERTa base获得1.2%(88.8% vs 87.6%),比XLNetbase获得2%(88.8% vs 86.8%)。
在这一节中,我们首先提出了一个消融研究,以量化不同要素在DeBERTa中的相对贡献。接下来,对DeBERTa和RoBERTa在注意力模式上的差异展开说明。最后,我们研究了模型训练效率的收敛性。我们使用基模型设置运行分析实验,其中Wikipedia+图书语料库数据用于模型预训练,并且模型可以在带有16 V-100 GPU的DGX-2机器上在7天内进行1 M步 batch size 为256的预训练。
为了验证我们的实验设置,我们从头开始训练RoBERTa基模型。我们称之为重新训练的RoBERTa RoBERTa-ReImp base。为了研究DeBERTa中不同成分的相对贡献,我们设计了三种变体:
表4总结了四个基准数据集的结果。
首先,比较RoBERTa和RoBERTa-ReImp,我们发现它们在所有四个基准数据集上的性能表现相似。因此,我们可以确信的将RoBERTa-ReImp作为比较的坚实基线。其次,我们看到删除DeBERTa中的任何一个组件都会导致所有基准测试的性能下降。例如,去除EMD(-EMD)在SQuAD v2.0上 分别导致1.4%(71.7% vs 70.3%)、0.3%(92.1% vs 91.8%)、1.2%(82.5% vs 81.3%)、0.2%(86.3% vs 86.1%)和0.1%(86.2% vs 86.1%)的损失。类似地,删除内容到位置或位置到内容都会导致所有基准的一致性能下降。正如预期的那样,删除两个组件会导致性能更严重的恶化。
为了理解为什么DeBERTa的表现不同于RoBERTa,我们在图1的最后一个自我注意力层中展示了他们的注意力模式,在这里我们还描述了三个DeBERTa变体的注意力模式以进行比较。
比较RoBERTa和DeBERTa,我们发现两个明显的差异。
首先,RoBERTa有一个清晰的对角线效应,让令牌关注自己,这在DeBERTa是没有观察到的。这可以归因于EMD的使用,在EMD中,被屏蔽但未更改的令牌的向量被其位置嵌入替换。这似乎可以通过检测DeBERTa-EMD的注意力模式来验证,其中对角线效应比原始DeBERTa要亮。第二,RoBERTa注意力模式中存在垂直条带,主要是由高频的functional令牌(如“a”、“the”或标点符号)引起的。
对于DeBERTa,条带出现在第一列中,表示[CLS]标记。我们推测,对于一个好的预训练模型来说,对[CLS]标记的重点关注是可取的,因为该标记的向量通常用作下游任务中整个输入序列的上下文表示。我们还观察到,垂直条带效应在三个DeBERTa变体的模式中相当明显。
为了研究模型预训练的收敛性,我们将微调后的下游任务的性能绘制为预训练步骤数的函数。如图2所示,对于RoBERTa-ReImp base模型和DeBERTa base模型,我们每100K个预训练步骤 dump 一个检查点,然后在两个下游任务(MNLI和SQuAD v2.0)上微调检查点,并分别报告准确性和F1分数。
作为参考,我们复制了原始RoBERTa基模型[5]和XLNet基模型[6]的最终模型性能,并将它们绘制为平面点线。结果表明,在预训练的训练过程中,DeBERTa的表现一直优于RoBERTa-ReImp,并且收敛速度更快。
本文提出了两种改进BERT预训练的方法:第一种方法是分散注意机制,该机制使用两个向量分别对每个单词的内容和位置进行编码来表示每个单词,并使用分散矩阵计算单词之间在内容和相对位置上的注意力权重;第二个方法是一个增强的掩码解码器,它取代了输出的Softmax层来预测用于MLM预训练的掩码令牌。使用这两种技术,新的预训练语言模型DeBERTa在许多下游NLP任务上表现都优于RoBERTa和BERT。
这项工作展示了探索自我注意的分散词表示的潜力,以及使用任务特定解码器改进语言模型预训练的潜力。
论文原文链接:
领取专属 10元无门槛券
私享最新 技术干货