赞
踩
目录
2.1. 解耦注意机制(Disentangled attention)
2.2. 增强的掩码解码器(Enhanced mask decoder)
DeBerta (Decoding-enhanced BERT with disentangled attention), 该架构利用两种新技术改进了BERT和RoBERTa模型:结果显示比Xlnet,BERT与RoBERTa都强。
并且首次在SuperGLUE排行榜上超过了人类。
例如,“deep”和“learning”这两个词i挨着相邻出现时,它们之间的依赖性和影响性要比它们出现在不同的句子中时或不相邻是强得多。
所以为了解决这个问题。可以引入相对位置信息
每个词分别用两个向量表示,分别对其内容和位置进行编码,单词之间的注意权值分别用其内容和相对位置的解耦矩阵计算。
{H_i}和{P_i|j},分别表示内容编码、与相对位置编码。
一个词对的注意力权重可以计算为四个注意力得分的总和,使用在其内容和位置上的分散矩阵作为内容到内容、内容到位置、位置到内容和位置到位置。
Bert只考虑了内容与内容。 在DDeBerta 中,位置到位置并没有提供太多额外的信息,在我们的实现中从上等式中删除了。
原self-attention计算如下:
token i与j相对位置计算如下:
其中k表示最大相对距离;
解耦矩阵计算细节。
是相对距离的K值与Q值
整体算法流程如下图:
例子:“a new store opened beside the new mall”,如果要预测“store”和“mall”这两个词。虽然这两个词的语境相似,但它们在句子中的句法作用不同。
这里的主语是“store”而不是“mall”。所以为了解决这个问题。DeBERTa在softmax层之前加入了单词的绝对位置嵌入。这里与Bert不同。Bert是输入的时候就加了绝对位置嵌入向量
抗训练方法用于微调,以提高模型的泛化能力。
对抗性训练是一种改进模型泛化性的正则化方法。它通过改进模型对对抗性实例的健壮性来实现这一点,对抗性实例是通过对输入进行微小扰动来创建的。该模型是正则化的,因此当给定一个特定于任务的示例时,该模型产生的输出分布与该示例的对抗扰动产生的输出分布相同。
对于自然语言处理任务,扰动被应用于词嵌入而不是原始词序列。然而,不同的词和模型,嵌入向量的取值范围(规范)是不同的。在具有数十亿参数的大模型中,方差会变大,从而导致对抗性训练的不稳定性。
受层归一化的启发,我们提出SiFT(Scale-invariant-Fine-Tuning)算法,通过将扰动应用于归一化的词嵌入来提高训练的稳定性。具体来说,在我们的实验中,当对DeBERTa的下游NLP任务进行微调时,SiFT首先将单词嵌入向量归一化为随机向量,然后对归一化嵌入向量进行扰动。我们发现,归一化极大地提高了微调模型的性能。这种改进在较大的DeBERTa模型中更为突出。
预训练数据集大小
可以看出最少的是Bert, 其次就是DeBERTA了,XLNet最多
在Large models 结果
在Base Models的结果
图片来自microsoft 官网。 可以清楚的看到Enhanced Mask Decoder 与 Disentangled attention(Relative Position Embedding)
build_relative_position 方法在da_util.py返回一个相对位置矩阵。
如果query_size =4 和key_size= 4时,返回的shape 是(1,4,4)
矩阵大致如下:
0 | -1 | -2 | -3 |
1 | 0 | -1 | -2 |
2 | 1 | 0 | -1 |
3 | 2 | 1 | 0 |
Disentangled attention 代码实现
相对位置的计算 代码
c2p_pos = torch.clamp(relative_pos + att_span, 0, att_span*2-1)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。