DeBERTa
Posted Facico
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DeBERTa相关的知识,希望对你有一定的参考价值。
DeBERTa
[DeBERTa: Decoding-enhanced BERT with Disentangled Attention](https://arxiv.org/abs/2006.03654)
code:https://github.com/microsoft/DeBERTa
他这论文改过一次,和ICLR2021的不一样
- GPT2差不多的参数,15亿参数。。。
key
-
Disentangled Attention(分散注意力)
- 架构和bert类似,主要区别是Attention分数计算额外增加了位置信息
- BERT:每个输入层token由一个向量表示,向量是单词内容和位置的总和
- DeBERTa:每个token使用两个向量表示, 然后attention weights由disentangled matrix基于内容和相对位置来计算
- 相对位置影响attention,比如deep和learning,在近的时候和远的时候就应该不一样。
- bert中的相对位置只是用了《attention is all you need》中的position embedding,可参见Position信息的处理
- 架构和bert类似,主要区别是Attention分数计算额外增加了位置信息
-
Enhanced Mask Decoder
- 用EMD代替原BERT的Softmax层预测遮盖的Token
- 分散注意力机制只考虑了内容和相对位置,并没有考虑绝对位置,但绝对位置也很重要
- 比如““a new store opened beside the new mall”中的store和mall,他们局部上下文相似,,但在句子中扮演着不同的角色,这种角色的不同很大程度上决定于绝对位置
- 因此在decoder的softmax之前将单词的绝对位置嵌入
-
Virtual Adversarial Training
- 提出了新的虚拟对抗训练模式,来针对PLMs(预训练模型Pre-trained Language Models)在NLP下游任务的fine-tune。
Disentangled Attention
-
对于序列中的位置i,我们使用两个向量来表示它 H i 和 P i ∣ j \\H_i\\和\\P_i|j\\ Hi和Pi∣j分别表示内容表示和对于j的相对位置表示。
-
则i,j之间的attention score:
-
A i , j = H i , P i ∣ j × H j , P j ∣ i T = H i H j T + H i P j ∣ i T + P i ∣ j H j T + P i ∣ j P j ∣ i T ( 2 ) A_i,j=\\H_i,P_i|j\\\\times\\H_j,P_j|i\\^T\\\\ =H_iH_j^T+H_iP_j|i^T+P_i|jH_j^T+P_i|jP_j|i^T\\qquad (2) Ai,j=Hi,Pi∣j×Hj,Pj∣iT=HiHjT+HiPj∣iT+Pi∣jHjT+Pi∣jPj∣iT(2)
-
即,注意力权重由<内容,内容>,<内容,位置>,<位置,内容>,<位置,位置>组合成
-
因为这里用的是相对位置embedding,所以<位置,位置>的作用不大,将其在(2)式中移除
-
使用attention的QKV模式表示
以单头为例
-
标准的self-attention如下
- Q = H W q , K = H W k , V = H W v , A = Q K T d H o = s o f t m a x ( A ) V H ∈ R R × d : input hidden vectors H o ∈ R R × d : output of self-attention W q , W k , W v ∈ R d × d : 投 影 矩 阵 A ∈ R R × R : attention matrix N , d : 序 列 长 度 , hidden states 维 数 Q=HW_q,K=HW_k,V=HW_v,A=\\fracQK^T\\sqrtd\\\\ H_o=softmax(A)V\\\\ H\\in R^R\\times d:\\textinput hidden vectors\\\\ H_o\\in R^R\\times d:\\textoutput of self-attention\\\\ W_q,W_k,W_v\\in R^d\\times d:投影矩阵\\\\ A\\in R^R\\times R:\\textattention matrix\\\\ N,d:序列长度,\\texthidden states维数 Q=HWq,K=HWk,V=HWv,A=dQKTHo=softmax(A)VH∈RR×d:input hidden vectorsHo∈RR×d:output of self-attentionWq,Wk,Wv∈Rd×d:投影矩阵A∈RR×R:attention matrixN,d:序列长度,hidden states维数
-
定义k为最大相对距离, σ ( i , j ) ∈ [ 0 , 2 k ) \\sigma(i,j)\\in [0,2k) σ(i,j)∈[0,2k)为token i到token j的相对距离,文章默认k=512
-
σ ( i , j ) = 0 i − j ≤ − k 2 k − 1 i − j ≥ k i − j + k o t h e r s \\sigma(i,j)= \\left\\ \\beginaligned 0&&i-j\\leq -k\\\\ 2k-1&& i-j\\geq k\\\\ i-j+k&& others \\endaligned \\right. σ(i,j)=⎩⎪⎨⎪⎧02k−1i−j+ki−j≤−ki−j≥kothers
-
即全部编码到[0,2k-1],自己为k
-
-
所以,具有相对位置偏差的disentangled self-attention
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 A ~ i , j = Q i c K j c ⊤ ⏟ ( a ) content-to-content + Q i c K δ ( i , j ) r ⊤ ⏟ ( b ) content-to-position + K j c Q δ ( j , i ) r ⊤ ⏟ ( c ) position-to-content H o = softmax ( A ~ 3 d ) V c P ∈ R 2 k × d : 表 示 所 有 层 之 间 共 享 的 相 对 位 置 e m b e d d i n g Q r , K r : 相 对 位 置 向 量 映 射 后 的 矩 阵 K j c : K c 的 第 j 行 K δ ( i , j ) r : K r 的 第 δ ( i , j ) 行 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\\\\ \\tildeA_i, j= \\underbraceQ_i^c K_j^c \\top_(\\mathrma) \\text content-to-content + \\underbraceQ_i^c K_\\delta(i, j)^r\\top_(\\mathrmb) \\text content-to-position + \\underbraceK_j^c Q_\\delta(j, i)^r\\top_(\\mathrmc) \\text position-to-content \\\\ \\boldsymbolH_o=\\operatornamesoftmax\\left(\\frac\\tilde\\boldsymbolA\\sqrt3 d\\right) \\boldsymbolV_c\\\\ P\\in R^2k\\times d:表示所有层之间共享的相对位置embedding\\\\ Q_r,K_r:相对位置向量映射后的矩阵\\\\ K_j^c:K_c的第j行\\\\ K_\\delta(i, j)^r:K_r的第\\delta(i, j)行 Qc以上是关于DeBERTa的主要内容,如果未能解决你的问题,请参考以下文章