Self-Attention with Relative Position Representations
Comments: NAACL 2018
Subjects: Computation and Language (cs.CL)
Cite as: arXiv:1803.02155 [cs.CL]
(or arXiv:1803.02155v2 [cs.CL] for this version)
https://doi.org/10.48550/arXiv.1803.02155
1. Introduction
Transformer的核心结构Self-Attention机制由于其无法对输入token的相对位置或绝对位置信息进行建模,因此,目前主流的方案都是在输入token之外再额外加上一个Positional Encoding来引入位置信息。本文则是从Self-Attention机制内部出发,通过在计算过程中引入token之间的相对位置关系向量,打破了Self-Attention机制的Permutation-Invariant特性,从而更高效地完成了位置信息的编码,性能得到了提升。
2. Background
本文扩展自注意力以考虑输入元素之间的成对关系,从这个意义上讲,就是将输入建模为标记的(labeled),有向的( directed),完全连接的图( fully-connected graph)。在正式进入讲解之前,我们需要回顾一下self-attention。假设我们从多头注意力机制中的一个头输出后的序列是
x
=
(
x
1
,
.
.
.
,
x
n
)
x=(x_1,...,x_n)
x=(x1,...,xn),其中
x
i
∈
R
d
x
x_i∈\mathbb{R}^{d_x}
xi∈Rdx,通过 attention 计算出一个新的序列
z
=
(
z
1
,
…
,
z
n
)
z=(z_1,…,z_n)
z=(z1,…,zn),其中
z
i
∈
R
d
z
z_i∈\mathbb{R}^{d_z}
zi∈Rdz。线性变换的输入元素的加权和计算公式如下:
其中,权重系数
a
i
j
a_{ij}
aij 是通过 softmax 计算的:
使用兼容函数计算
e
i
j
e_{ij}
eij,该函数比较两个输入元素(其中,使用Scaled dot product作为兼容函数计算是很高效的):
W
Q
,
W
K
,
W
V
∈
R
d
x
×
d
z
W^Q,W^K,W^V∈\mathbb{R}^{d_x×d_z}
WQ,WK,WV∈Rdx×dz 是参数矩阵。
3. Proposed Architecture
3.1 Relation-aware Self-Attention
沿用上面的 x x x 的表示,将输入元素之间的edge表示为 a i j V , a i j K ∈ R d a a_{ij}^V,a_{ij}^K∈\mathbb{R}^{d_a} aijV,aijK∈Rda ,学习两个不同的 edge 表示的出发点是 a i j V , a i j K a_{ij}^V,a_{ij}^K aijV,aijK 适用于如下两个等式,这些表示可以在关注头之间共享, d a = d z d_a=d_z da=dz。
通过引入边的特征表示,原始的Self-Attention机制修改为以下计算方式:
即对于各个Value和Key来说,都会引入一个相互的位置关系表示,从而打破了Self-Attention的Permutation-Invariant。
3.2 Relative Position Representation
考虑到计算量、内存消耗以及远距离的精确位置信息效用足等因素,本文对最远的Relative Position Distance限制为 k k k。
Relative Position Representation 的目标是给出
a
i
,
j
V
,
a
i
,
j
K
a_{i,j}^V,a_{i,j}^K
ai,jV,ai,jK 的计算方式。假设如果序列中两个元素的距离超过
k
k
k,则这两元素之间的位置信息就没有意义了。剪裁最大距离还使模型能够泛化训练期间看不到的序列长度,因此,考虑
2
k
+
1
2k+1
2k+1 个唯一的edge标签。
以下图为例,图中假设
2
<
=
k
<
=
n
−
4
2 <= k <= n − 4
2<=k<=n−4,
当 i = 2 , j = 1 i=2,j=1 i=2,j=1 时, c l i p ( − 1 , k ) = m a x ( − k , m i n ( k , − 1 ) ) = − 1 clip(-1,k)=max(-k,min(k,-1))=-1 clip(−1,k)=max(−k,min(k,−1))=−1, a 2 , 1 K = w c l i p ( − 1 , k ) K = w − 1 K a_{2,1}^K=w_{clip(-1,k)}^K=w_{-1}^K a2,1K=wclip(−1,k)K=w−1K, 同理得 a 2 , 1 V = w − 1 V a_{2,1}^V=w_{-1}^V a2,1V=w−1V
当
i
=
4
,
j
=
n
i=4,j=n
i=4,j=n 时,
c
l
i
p
(
n
−
4
,
k
)
=
m
a
x
(
−
k
,
m
i
n
(
k
,
n
−
4
)
)
=
k
clip(n-4,k)=max(-k,min(k,n-4))=k
clip(n−4,k)=max(−k,min(k,n−4))=k,
a
4
,
n
K
=
w
c
l
i
p
(
n
−
4
,
k
)
K
=
w
k
K
a_{4,n}^K=w_{clip(n-4,k)}^K=w_{k}^K
a4,nK=wclip(n−4,k)K=wkK,同理得
a
4
,
n
V
=
w
k
V
a_{4,n}^V=w_{k}^V
a4,nV=wkV
在这种设定下,
a
i
,
j
V
,
a
i
,
j
K
a_{i,j}^V,a_{i,j}^K
ai,jV,ai,jK 应该只与相对位置有关,而与
x
i
,
j
,
x
i
,
j
x_{i,j},x_{i,j}
xi,j,xi,j 没有关系。作者直接将
a
i
,
j
V
,
a
i
,
j
K
a_{i,j}^V,a_{i,j}^K
ai,jV,ai,jK 定义为可训练的向量,本质上是训练
w
K
=
(
w
−
k
K
,
.
.
.
,
w
k
K
)
w^K=(w_{-k}^K,...,w_k^K)
wK=(w−kK,...,wkK) 和
w
V
=
(
w
−
k
V
,
.
.
.
,
w
k
V
)
w^V=(w_{-k}^V,...,w_k^V)
wV=(w−kV,...,wkV),
w
i
K
,
w
i
V
∈
R
d
a
w_i^K,w_i^V∈\mathbb{R}^{d_a}
wiK,wiV∈Rda。
3.3 Efficient Implementation
把等式(4)拆分开如下:
然后我们就可以通过矩阵并行计算批量进入的数据了。
4 Experiments
实验结果:
5 Conclusions
本文主要是从Self-Attention机制本身出发,在计算过程中引入了相对位置信息,从而打破了Self-Attention的Permutation-Invariant特性,提升了各个word之间关系构建能力。