近年来,BERT已经成为许多自然语言处理任务中的第一工具。它处理、理解信息和构建高精度的词嵌入的出色能力达到了最先进的性能。
众所周知,BERT是基于来自Transformer架构的注意力机制的。注意力是现在大多数大语言模型的关键组成部分。
然而,在机器学习领域,新的想法和方法不断涌现。在2021年,出现了一种最具创新性的技术,它引入了一种增强的注意力版本,称为“解耦注意力”。这个概念的实现催生了DeBERTa——一种结合了解耦注意力的模型。尽管DeBERTa只引入了一对新的架构原则,但与其他大型模型相比,它在顶级NLP基准上的改进是显著的。
在这篇文章中,我们将参考原始的DeBERTa论文,涵盖所有理解它如何工作的必要细节。
1、解耦注意力
在原始的Transformer块中,每个令牌都由一个单独的向量表示,该向量以元素方式嵌入和的形式包含了令牌内容和位置的信息。这种方法的缺点是可能会丢失信息:模型可能无法区分是一个词本身还是它的位置给予了某个嵌入向量分量更多的重要性。
DeBERTa提出了一种新颖的机制,其中相同的信息存储在两个不同的向量中。此外,注意力计算的算法也被修改,以显式地考虑令牌的内容和位置之间的关系。例如,“研究”和“论文”这两个词在彼此附近出现时,相互依赖性要比在不同的文本部分出现时大得多。这个例子清楚地证明了为什么有必要考虑内容到位置的关系。
引入解耦注意力需要修改注意力分数的计算。事实证明,这个过程非常简单。计算两个嵌入之间的交叉注意力分数,每个嵌入都由两个向量组成,可以很容易地分解为它们的子向量之间的四个成对乘法的和:
这种方法可以用矩阵形式推广。从图中,我们可以观察到四种不同类型的矩阵(向量),每种矩阵代表了内容和位置信息的某种组合:
可以看出,位置-位置矩阵没有存储任何有价值的信息,因为它没有任何关于单词内容的细节。这就是为什么在解耦注意力中,这一项被舍弃的原因。
对于剩下的三项,最终的输出注意力矩阵的计算方式与原始的Transformer类似。
尽管计算过程看起来相似,但有两个细微之处需要考虑。
从上图中,我们可以注意到,用于查询内容Qc和键位置Krᵀ矩阵以及键内容Kc和查询位置Qrᵀ矩阵之间的乘法的乘号*与正常的矩阵乘法符号x不同。实际上,这并不是偶然的,因为在DeBERTa中,提到的矩阵对是以稍微不同的方式相乘的,以考虑到单词的相对位置。
k可以被看作是一个控制索引i和j之间最大可能相对距离的超参数。在DeBERTa中,k被设为512。为了更好地理解这个公式,让我们绘制一个热图,可视化不同索引i和j的相对距离(k = 6)。
例如,如果k = 6,i = 15,j = 13,那么i和j之间的相对距离δ等于8。为了得到索引i = 15和j = 13的内容-位置得分,在查询内容Qc和键位置Kr矩阵的乘法中,Qc的第15行应该与Krᵀ的第8列相乘。
然而,对于位置-内容得分,算法的工作方式有些不同:相对距离不是δ(i, j),而是在矩阵乘法中使用δ(j, i)的值。正如论文的作者解释的:“这是因为对于给定的位置i,位置-内容计算了键内容在j处相对于查询位置在i处的注意力权重,因此相对距离是δ(j, i)”。
δ(i, j) ≠ δ(j, i),即δ不是一个对称函数,意味着i和j之间的距离与j和i之间的距离不同。
在应用softmax变换之前,注意力得分被一个常数√(3d)除以,以便更稳定的训练。这个缩放因子与原始Transformer中使用的不同(√d)。这个√3倍的差异是由于DeBERTa注意力机制中3个矩阵的求和导致的更大的幅度(而不是Transformer中的单个矩阵)。
2、增强的掩码解码器
解耦注意力只考虑了内容和相对位置。然而,没有考虑到绝对位置的信息,而这可能实际上在最终的预测中起着重要的作用。DeBERTa论文的作者给出了一个具体的例子:一个句子“a new store opened beside the new mall”,其中“store”和“mall”这两个单词被掩码,用于预测。虽然被掩码的单词有着相似的含义和局部上下文(形容词“new”),但它们有着不同的语言环境,这一点没有被解耦注意力捕捉到。在一种语言中,可能有许多类似的情况,这就是为什么将绝对位置纳入模型中是至关重要的。
在BERT中,绝对位置是在输入嵌入中考虑的。说到DeBERTa,它在所有的Transformer层之后,但在应用softmax层之前,加入了绝对位置。在实验中显示,捕捉所有Transformer层中的相对位置,然后再引入绝对位置,可以提高模型的性能。根据研究人员的说法,反过来做可能会阻碍模型学习足够的相对位置信息。
架构
根据论文,增强的掩码解码器(EMD)有两个输入块:
一般来说,一个模型中可以有多个n个EMD块。如果是这样,它们是按照以下规则构建的:
每个EMD层的输出是下一个EMD层的输入I; 最后一个EMD层的输出被送入语言模型头部。 在DeBERTa的情况下,EMD层的数量被设为n = 2,其中位置嵌入被用作第一个EMD层的I。
另一个在NLP中经常使用的技术是在不同的层之间共享权重,目的是降低模型的复杂度(例如ALBERT)。这个想法也被实现在DeBERTa的EMD块中。
当I = H且n = 1时,EMD就等同于BERT的解码器层。
DeBERTa的设置
消融实验
实验表明,DeBERTa中引入的所有组件(位置-内容注意力,内容-位置注意力和增强的掩码解码器)都提高了性能。去掉任何一个都会导致指标下降。
尺度不变的微调
此外,作者提出了一种新的对抗算法,称为“尺度不变的微调”,以提高模型的泛化能力。这个想法是在输入序列中加入小的扰动,使模型对对抗样本更具韧性。在DeBERTa中,扰动是应用在归一化的输入词嵌入上。这种技术对于更大的微调过的DeBERTa模型效果更好。
DeBERTa的变体
DeBERTa的论文提出了三种模型。它们之间的比较如下图所示。
数据
对于预训练,DeBERTa的基础和大型版本使用了以下数据集的组合:
经过数据去重后,最终的数据集大小减少到78 GB。对于DeBERTa 1.5B,作者使用了两倍多的数据(160 GB),并且有着令人印象深刻的128K的词汇量。
作为对比,其他大型模型,如RoBERTa,XLNet和ELECTRA,都是在160 GB的数据上进行预训练的。与此同时,DeBERTa在各种NLP任务上显示出了与这些模型相当或更好的性能。
在训练方面,DeBERTa预训练了一百万步,每步有2K个样本。
我们已经走过了DeBERTa架构的主要方面。通过拥有解耦注意力和增强的掩码编码算法,DeBERTa已经成为许多数据科学家在NLP流水线中的极受欢迎的选择,也是许多Kaggle竞赛中的获胜因素。关于DeBERTa的另一个令人惊讶的事实是,它是第一个在SuperGLUE基准测试上超越人类的NLP模型之一。这一单一的证据就足以说明DeBERTa将在LLM的历史中保持很长时间。