DeBERTa刷新了GLUE的榜首,本文解读一下DeBERTa在BERT上有哪些改造
DeBERTa对BERT的改造主要在三点
motivation
BERT加入位置信息的方法是在输入embedding中加入postion embedding, pos embedding与char embedding和segment embedding混在一起,这种早期就合并了位置信息在计算self-attention时,表达能力受限,维护信息非常被弱化了
BERT embedding
本文的motivation就是将pos信息拆分出来,单独编码后去content 和自己求attention,增加计算 “位置-内容” 和 “内容-位置” 注意力的分散Disentangled Attention
Disentangled Attention计算方法
分散注意力机制首先在input中分离相对位置embedding,在原始char embedding+segment embedding经过编码成
后,与相对位置
计算attention,
即
是内容编码,
是
相对
的位置编码, attention的计算中,融合了位置-位置,内容-内容,位置-内容,内容-位置
相对位置的计算
限制了相对距离,相距大于一个阈值时距离就无效了,此时距离设定为一个常数,距离在有效范围内时,用参数用
控制
强行叫做解码器
用 EMD( enhanced mask decoder) 来代替原 BERT 的 SoftMax 层预测遮盖的 Token。因为我们在精调时一般会在 BERT 的输出后接一个特定任务的 Decoder,但是在预训练时却并没有这个 Decoder;所以本文在预训练时用一个两层的 Transformer decoder 和一个 SoftMax 作为 Decoder。其实就是给后层的Transformer encoder换了个名字,千万别以为是用到了Transformer 的 Decoder端
绝对位置embedding
在decoder前有一个骚操作是在这里加入了一层绝对位置embedding来弥补一下只有相对位置的损失,比如“超市旁新开了一个商场”,当mask的词是“超市”,“商场”,时,只有相对位置时没法区分这两个词的信息,因此decoder中加入一层
DeBERTa large目前是GLUE的榜首,在大部分任务上整体效果相比还是有一丢丢提升
附上原文与源码,顺便吐槽一下原文的图画的太烂了
原文:
https://arxiv.org/abs/2006.03654
源码:
https://github.com/microsoft/DeBERTa/tree/master/DeBERTa/deberta