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信息的处理
  • 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\\ HiPij分别表示内容表示和对于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,Pij×Hj,PjiT=HiHjT+HiPjiT+PijHjT+PijPjiT(2)

    • 即,注意力权重由<内容,内容>,<内容,位置>,<位置,内容>,<位置,位置>组合成

    • 因为这里用的是相对位置embedding,所以<位置,位置>的作用不大,将其在(2)式中移除

使用attention的QKV模式表示

可参见Attention机制学习

以单头为例

  • 标准的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=d QKTHo=softmax(A)VHRR×dinput hidden vectorsHoRR×doutput of self-attentionWq,Wk,WvRd×dARR×Rattention matrixNdhidden 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)=02k1ij+kijkijkothers

    • 即全部编码到[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的主要内容,如果未能解决你的问题,请参考以下文章

    如何从拥抱脸使用 deberta 模型并使用 .compile() 和 . summary() 用它

    数字条纹投影技术基础3条纹分析技术的理论基础

    数字条纹投影技术基础3条纹分析技术的理论基础

    css [条纹]更改条纹表单的样式。

    Unity 模型出现 条纹,闪烁的原因

    background的水平条纹和斜向条纹