赞
踩
题目:
DeBERTa: Decoding-enhanced BERT with Disentangled Attention
机构:
微软研究院
作者:
Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen
论文地址:
https://arxiv.org/abs/2006.03654
论文代码:
https://github.com/microsoft/DeBERTa
Q: 文章要解决的问题是什么?
A: 改善 BERT 和 RoBERTa预训练效率,并提升下游指标
Q: 文章如何解决问题?
A: 提出DeBERTa(Decoding-enhanced BERT with disentangled attention)模型,该模型有2个技术创新点:
(1)注意力解耦机制(disentangled attention mechanism)。每个word的 embedding 由 content embedding 和 和 position embedding 组成。注意,不是BERT那种 content embedding 和 position embedding 直接向量相加。 word之间的注意力权重用word的content和相对位置的解耦矩阵表示。
(2)用增强 mask decoder替换原始输出的 softmax层,以预测模型预训练时候被 mask 掉的token。如此解决BERT的预训练和微调阶段的不一致问题。
Q:最终效果如何?
A:DeBERTa比RoBERTa和BERT更高效,在多数NLP任务上也获取更好的结果。DeBERTa仅用一半预训练数据即可在众多NLP任务中超越RoBERTa-Large。具体表现在:在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%)。数字太多,记不住?没关系,让我们一起瞻仰下最新(2021年1月15号)15亿参数量的DeBERTa模型在SuperGLUE上夺冠的高光时刻吧~
DeBERTa的关键是2点:
用2个向量分别表示content 和 position,即word本身的文本内容和位置。word之间的注意力权重则使用word内容之间和位置之间的解耦矩阵。这是因为word之间的注意力不仅取决于其文本内容,还依赖于两者的相对位置。比如,对于单词"deep" 和 单词"learning",当二者一起出现时,则它们之间的关系依赖性要比在不同的句子中出现时强得多。
给定一个文本序列,对于第i个token分别用 H i H_i Hi和 P i ∣ j P_{i|j} Pi∣j表示文本向量和相对 j j j位置的位置向量。那么token i , j i,j i,j之间的cross attention score可以分解成4个部分:
A
i
,
j
=
{
H
i
,
P
i
∣
j
}
×
{
H
j
,
P
j
∣
i
}
⊤
=
H
i
H
j
⊤
+
H
i
P
j
∣
i
⊤
+
P
i
∣
j
H
j
⊤
+
P
i
∣
j
P
j
∣
i
⊤
Ai,j={Hi,Pi∣j}×{Hj,Pj∣i}⊤=HiH⊤j+HiP⊤j∣i+Pi∣jH⊤j+Pi∣jP⊤j∣i
token i , j i,j i,j之间的注意力权重可以由内容和位置之间的解耦矩阵组成,解耦的最终结果是4种注意力机制:
由于token之间注意力权重与token本身的内容和token之间的相对位置有关,那么建模过程content-to-position和position-to-content这两项都不能丢掉。另外,由于使用的是相对位置编码,position-to-position这一项并不能提供更多额外的信息,所以实现过程将这一项丢掉。
以单个head为例,标准的自注意力如下表示:
Q
=
H
W
q
,
K
=
H
W
k
,
V
=
H
W
v
,
A
=
Q
K
⊤
d
H
o
=
softmax
(
A
)
V
Q=HWq,K=HWk,V=HWv,A=QK⊤√dHo=softmax(A)V
其中 H ∈ R N × d \boldsymbol{H} \in R^{N \times d} H∈RN×d表示输入的隐向量, H o ∈ R N × d \boldsymbol{H_o} \in R^{N \times d} Ho∈RN×d表示自注意力的输出, W q , W k , W v ∈ R d × d \boldsymbol{W}_{\boldsymbol{q}}, \boldsymbol{W}_{\boldsymbol{k}}, \boldsymbol{W}_{\boldsymbol{v}} \in R^{d \times {d}} Wq,Wk,Wv∈Rd×d表示对应的投射矩阵, A ∈ R N × N \boldsymbol{A} \in R^{N \times N} A∈RN×N是注意力矩阵,N是输入序列长度,d是隐状态的维度。
当最大相对位置为 k k k,那么 token i i i、 j j j之间的相对位置,或者说从 i i i到 j j j的的相对位置 δ ( i , j ) \delta(i, j) δ(i,j)定义如下:
δ
(
i
,
j
)
=
{
0
for
i
−
j
⩽
−
k
2
k
−
1
for
i
−
j
⩾
k
i
−
j
+
k
others
\delta(i, j)=\left\{0 for i−j⩽−k2k−1 for i−j⩾ki−j+k others
带有相位位置的解耦自注意力如下公式所示:
Q c = H W q , c , K c = H W k , c , V c = H W v , c , Q r = P W q , r , K r = P W k , r Q_{c}=H W_{q, c}, K_{c}=H W_{k, c}, V_{c}=H W_{v, c}, Q_{r}=P W_{q, r}, K_{r}=P W_{k, r} Qc=HWq,c,Kc=HWk,c,Vc=HWv,c,Qr=PWq,r,Kr=PWk,r
H o = softmax ( A ~ 3 d ) V c \boldsymbol{H}_{\boldsymbol{o}}=\operatorname{softmax}\left(\frac{\tilde{\boldsymbol{A}}}{\sqrt{3 d}}\right) \boldsymbol{V}_{\boldsymbol{c}} Ho=softmax(3d A~)Vc
其中 Q c Q_c Qc、 K c K_c Kc和 V c V_c Vc分别是使用投影矩阵 W q , c W_{q,c} Wq,c , W k , c W_{k,c} Wk,c, W v , c ∈ R d × d W_{v,c} \in R^{d\times d} Wv,c∈Rd×d生成的投影内容向量; P ∈ R 2 k × d P\in R^{2k \times d} P∈R2k×d表示跨所有层共享的相对位置嵌入向量(即在正向传播期间保持不变); Q r Q_r Qr和 K r K_r Kr分别是使用投影矩阵 W q , r , W k , r ∈ R d × d W_{q,r},W_{k,r} \in R^{d \times d} Wq,r,Wk,r∈Rd×d生成的投影相对位置向量。
A ~ i , j \tilde{A}_{i, j} A~i,j是注意力矩阵 A ~ \tilde{A} A~中的元素,表示token i到 token j之间的注意力, Q i c Q_{i}^c Qic表示 Q c Q_{c} Qc的第 i i i行, K j c K_{j}^c Kjc表示 K c K_{c} Kc的第 j j j行。 K δ ( i , j ) r \boldsymbol{K}_{\delta(i, j)}^{r} Kδ(i,j)r表示 K r K_{r} Kr的第 δ ( i , j ) \delta(i, j) δ(i,j)行, Q δ ( i , j ) r \boldsymbol{Q}_{\delta(i, j)}^{r} Qδ(i,j)r表示 Q r Q_{r} Qr第 δ ( j , i ) \delta(j,i) δ(j,i)行。需要注意的是,这里使用 δ ( j , i ) \delta(j, i) δ(j,i)行,而不是 δ ( i , j ) \delta(i,j) δ(i,j)行。这是因为给定位置 i i i,position-to-content计算的是key中j位置的内容相对于query中i位置的注意力权值,因此相对距离为: δ ( j , i ) \delta(j, i) δ(j,i)。position-to-content项的计算为: K j c Q δ ( j , i ) r \boldsymbol{K}_{j}^{c} \boldsymbol{Q}_{\delta(j, i)}^{r} KjcQδ(j,i)r。content-to-position项的计算类似。最后, A ~ \tilde{A} A~还除以一个缩放系数 3 \sqrt3 3 ,以稳定模型的训练过程。
众所周知,原始的BERT存在预训练和微调不一致问题。预训练阶段,隐层最终的输出输入到softmax预测被mask掉的token,而微调阶段则是将隐层最终输出输入到特定任务的decoder。这个decoder根据具体任务不同可能是一个或多个特定的decoder,如果输出是概率,那么还需要加上一个softmax层。为消除这种不一致性,DeBERTa将MLM与其他下游任务同等对待,并将原始BERT中输出层的softmax替换为增强后的mask decoder(EMD),EMD包含一个或多个Transformer层和一个softmax输出层。至此,结合了BERT和EMD的DeBERTa成为了一个encoder-decoder模型。
在设计DeBERTa的时候需要注意以下几点:
实验过程的baseline是12层的BERT。DeBERTa的encoder由11层 Transformer组成,decoder由2层参数共享的Transformer和一个Softmax输出层组成。因此,DeBERTa与BERT-base的参数量近似。在对DeBERTa模型进行预训练后,对11层encoder和1层decoder进行叠加,以恢复出标准的BERT-base结构进行微调。
此外,文章还做了一个看似微小但重要的改进。在encoder输出向量输入EMD进行 MLM 预训练时,原始的BERT并没有用 [MASK] token替换掉所有被mask掉的token,而是10%保持不变。因为在下游任务的输入中从来没有出现过 [MASK] token,这一设计的初衷是为了缓解预训练和微调之间的不一致性。但是这种方法导致了信息泄漏,即预测以token本身为条件的mask token。DeBERTa在将这些被mask但未改变的token(即那10%被泄露信息的token)输入decoder进行预测之前,将它们encoder输出向量替换为相应的绝对位置嵌入向量。
DeBARTa-Large版和其他先进模型在GLUE上的对比结果如 Table 1所示:
DeBERTa的参数量是390M,其他先进模型的差不多是350M。RoBERTa 和 XLNet 的训练数据是160G,而 DeBERTa的训练数据是78G。RoBERTa 和 XLNet训练了500K个step,一个step有8K个样本,整体上超过40亿次的训练样本。而DeBERTa只有100万个step的训练,每一step只有2k个样本,整体有20亿次的训练样本,这只有RoBERTa 或 XLNet 的一半。所以,DeBERTa整体比较高效。从Table 1的结果可以看出,在所有任务中DeBERTa始终优于BERT和RoBERTa。同时在八项任务中有六项DeBERTa优于XLNet。特别是MRPC(超过XLNet有1.7个百分点,高出RoBERTa 1.6个百分点)、RTE(超过XLNet 2.2%,超过RoBERTa 1.5%)和 CoLA(超过XLNet 0.5%,超过RoBERTa 1.5%)的提升效果非常显著。
另外,由于MNLI常用作一项评测预训练进展的指示性任务,所以也使用该数据集评测DeBERTa。实验结果表明DeBERTa在MNLI上显著优于所有同参数量的模型,并刷新了记录。文章还使用额外的一些基准评估DeBERTa:
为了进行公平的比较,将 Megatron分为三种不同的尺寸:Megatron 336M、Megatron 1.3B 和 Megatron 3.9B,它们使用与 RoBERTa相同的数据集进行训练。值得注意的是,Megatron 336M 模型参数量与上述其他模型近似。各个模型的对比结果如 Table 2 所示:
从Table 2 中可以看出,与之前各种先进模型(BERT、RoBERTa、XLNet和Megatron336M)相比,DeBERTa 在这7项任务中发挥稳定,一如既往地优秀!以RACE为例,DeBERTa的性能显著优于之前的冠军模型XLNet,高出1.4%(86.8% vs 85.4%)。纵使Megatron1.3B的参数量是DeBERTa的3倍大,DeBERTa在四个基准任务中的三个仍然可以超过Megatron1.3B。
综上,在不同的下游任务中DeBERTa所展现得优异性能始终稳如狗。
DeBERTa base版和其他同参数量级先进模型的对比结果如Table 3所示。在三项评测任务中,DeBERTa的表现都优于RoBERTa和XLNet,且相比于Large版的超越幅度更大。例如,在MNLI-in-domain 设置(MNLI-m)中,DeBERTa-base 比 RoBERTa-base高出 1.2%(88.8% vs 87.6%),比 XLNet-base高出2%(88.8% vs 86.8%)。
为量化不同部分在 DeBERTa 中的贡献程度,文章进行了消融研究。文章设计了三种DeBERTa变体:
与此同时,从头开始训练 RoBERTa baseline模型,记为重新训练的RoBERTa-ReImp。DeBERTa在4个基准任务上的消融研究结果如 Table 4所示。
从实验结果可以得出以下结论:
为进一步了解DeBERTa和RoBERTa之间的性能差异的原因,在Figure 1展示了两者最后一层自注意力层的注意力模式。同时也将DeBERTa的三种变体纳入一起比较。
从实验结果发现2点不同:
RoBERTa有明显的对角线,表示token attend到自己的注意力。但是,DeBERTa没有这种明显的对角线。这是因为DeBERTa使用了EMD,使得被mask掉(广义上的mask操作)但是保持不变的那部分token用其对应的位置embedding来替代。通过观察DeBERTa-EMD的注意力模式得到证实,可以看出DeBERTa-EMD的对角线效应比原来的DeBERTa更亮。
RoBERTa的注意力模式中有垂直条带,这主要是由高频出现的功能性词汇如“a”、“the”或标点符号等造成的。而在DeBERTa中垂直条带只出现在第一列,其对应的是[CLS] 这个特殊token。因为[CLS] token的向量经常被用作下游任务中整个输入序列的上下文表征,所以可以合理推测一个良好的预训练模型,其对应的[CLS] token 就应该是要更亮的。此外,垂直条带效应在三种DeBERTa变种也很明显。
为研究模型预训练的收敛性,绘制了预训练step数和微调后下游任务的性能的关系图,如Figure 2所示。对于RoBERTa-ReImp base模型和DeBERTa base模型,每100K个预训练step dump 一个检查点,然后在两个下游任务(MNLI和SQuAD v2.0)上微调检查点,并分别报告准确性和F1分数。复制原始RoBERTa base 模型和XLNet base模型的最终模型性能作为参考,将它们绘制为平面点线。结果表明,在预训练的训练过程中,DeBERTa的表现一直优于RoBERTa-ReImp,并且收敛速度更快。
文章提出了两种改进BERT预训练的方法:第一种是注意解耦机制,该机制将一个单词的表征由单词的内容和位置编码组成,并使用解耦矩阵计算单词之间在内容和相对位置上的注意力权重;第二种是引入一个增强的掩码解码器(EMD),它取代原有输出的Softmax来预测用于MLM预训练的被mask掉的token。使用这两种技术,新的预训练语言模型DeBERTa在许多下游NLP任务上的表现都优于RoBERTa和BERT。DeBERTa这项工作展示了探索自注意的词表征解耦以及使用任务特定解码器改进预训练语言模型的潜力。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。