6

漫谈注意力机制(六):Transformer与位置信息

 2 years ago
source link: https://allenwind.github.io/blog/9582/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Mr.Feng Blog

NLP、深度学习、机器学习、Python、Go

漫谈注意力机制(六):Transformer与位置信息

Transformer中引入相对位置编码~

Google的论文Attention Is All You Need中看到一条挺“吓人”的公式,

Attention(Q,K,V)=softmax(QK⊤√dk)VAttention⁡(Q,K,V)=softmax⁡(QK⊤dk)V

通过对输入的向量序列X=[x1,…,xn]X=[x1,…,xn]​​​进行线性变换获得,即,

Q=WqXK=WkXV=WvXQ=WqXK=WkXV=WvX

由于Q,K,VQ,K,V都是来自向量序列XX,因此称这种注意力机制为Self Attention。

展开来看,其实对于位置ii,Self Attention模型的输出为,

eij=(xiWQ)(xjWK)T√dzαij=softmax(eij)zi=n∑j=1αij(xjWV)eij=(xiWQ)(xjWK)Tdzαij=softmax⁡(eij)zi=∑j=1nαij(xjWV)

这里softmax是对jj​​​​维度进行归一化。其位置信息叠加到xixi​​向量内,因此eijeij可以改写为,

eij=[(xi+pi)WQ][(xj+pj)WK]T√dzeij=[(xi+pi)WQ][(xj+pj)WK]Tdz

于是eijeij的位置信息有二元结构(i,j)(i,j)​决定,称为绝对位置编码。绝对位置编码有个致命的问题:对于超过一定长度的本文无法建模。

为解决这个问题,Google在论文Self-Attention with Relative Position Representations对Attention模型做修改,称为Relation-aware Self-Attention,它做如下修改,

eij=xiWQ(xjWK+aKij)T√dzαij=softmax(eij)zi=n∑j=1αij(xjWV+aVij)eij=xiWQ(xjWK+aijK)Tdzαij=softmax⁡(eij)zi=∑j=1nαij(xjWV+aijV)

以便引入相对位置编码,让位置信息只依赖|i−j||i−j|​,解决长文位置编码问题。引入这两个向量aKijaijK和aVijaijV(红色数学符号)是为了让Attention模型获得相对位置感知。此时还没有体会到位置的相对性,关键就是解决aKijaijK​和aVijaijV​的取值问题,论文的做法是提供PV,PKPV,PK​两个矩阵,用于位置的取值检索,有

aKij=PK[r],r=clip(i−j,pmin,pmax)aVij=PV[r],r=clip(i−j,pmin,pmax)aijK=PK[r],r=clip⁡(i−j,pmin,pmax)aijV=PV[r],r=clip⁡(i−j,pmin,pmax)

这里PK[r]PK[r]​​指矩阵PKPK​​的第rr​​行,由于r=clip(i−j,pmin,pmax)r=clip⁡(i−j,pmin,pmax)​​​,因此只要PKPK​​​矩阵的大小有限即可表达任意长度|i−j||i−j|​​的相对位置。同理,对于矩阵PVPV。

本文比较简短,介绍Google的Transformer如何引入相对位置编码。

转载请包括本文地址:https://allenwind.github.io/blog/9582
更多文章请参考:https://allenwind.github.io/blog/archives/


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK