赞
踩
各种transformer都含有一项关键的技术——位置编码(position encoding),它可以提升模型对位置信息的感知能力,弥补了Self Attention机制中位置信息的缺失;
绝对位置编码直接将位置的信息加入到现有的特征中。带有绝对位置编码的Self Attention 计算公式如式1所示:
a
t
t
=
(
X
i
+
p
i
)
T
W
q
T
W
k
(
X
j
+
p
j
)
(1)
att = (X_i+p_i)^TW_q^TW_k(X_j +p_j)\tag1
att=(Xi+pi)TWqTWk(Xj+pj)(1)
其中
X
i
,
X
j
X_i, X_j
Xi,Xj 表示序列中
i
,
j
i,j
i,j 两点的特征向量,
W
q
W_q
Wq 表示 query 矩阵,
W
k
W_k
Wk 表示 key 矩阵,
p
i
,
p
j
p_i, p_j
pi,pj 表示
i
,
j
i, j
i,j 两点的绝对位置编码信息;
将式1展开得:
X
i
T
W
q
T
W
k
X
j
+
p
i
T
W
q
T
W
k
X
j
+
X
i
T
W
q
T
W
k
p
j
+
p
i
T
W
q
T
W
k
p
j
(2)
X_i^TW_q^TW_kX_j + p_i^TW_q^TW_kX_j + X_i^TW_q^TW_kp_j + p_i^TW_q^TW_kp_j \tag2
XiTWqTWkXj+piTWqTWkXj+XiTWqTWkpj+piTWqTWkpj(2)
从式2中可以观察到,第1项是与位置无关的信息,第2、3项只与一个位置相关,第4项是与两个位置都相关的信息,目标是使得注意力机制中包含两个位置之间的相对位置信息,也就是让第满足式3:
p
i
T
W
q
T
W
k
p
j
=
g
(
i
−
j
)
(4)
p_i^TW_q^TW_kp_j = g(i-j)\tag4
piTWqTWkpj=g(i−j)(4)
其中
g
(
i
−
j
)
g(i-j)
g(i−j) 是一个只与两者相对位置相关的函数;
W
q
T
、
W
k
W_q^T、W_k
WqT、Wk 是可学习的参数,不妨将问题简化为如何构造函数
g
′
(
i
−
j
)
=
p
i
T
p
j
g^\prime(i-j) = p_i^Tp_j
g′(i−j)=piTpj ,也就是
g
g
g 只与相对位置有关,而与
i
、
j
i、j
i、j 具体的数值无关;由初等数学三角函数可知:
c
o
s
(
θ
−
φ
)
=
cos
θ
cos
φ
+
sin
θ
sin
φ
(5)
cos(\theta-\varphi) = \cos \theta \cos \varphi+\sin \theta \sin \varphi\tag5
cos(θ−φ)=cosθcosφ+sinθsinφ(5)
不妨令:
p
i
=
(
c
o
s
θ
i
s
i
n
θ
i
)
p
j
=
(
c
o
s
θ
j
s
i
n
θ
j
)
p_i = \binom{cos \theta_i}{sin\theta_i}\\ \ \\p_j = \binom{cos \theta_j}{sin\theta_j}
pi=(sinθicosθi) pj=(sinθjcosθj)
就有:
c
o
s
(
θ
i
−
θ
j
)
=
(
c
o
s
θ
i
,
s
i
n
θ
i
)
(
c
o
s
θ
j
s
i
n
θ
j
)
(6)
cos(\theta_i-\theta_j) = (cos \theta_i, \ sin\theta_i)\binom{cos \theta_j}{sin\theta_j}\tag6
cos(θi−θj)=(cosθi, sinθi)(sinθjcosθj)(6)
若想让
c
o
s
(
θ
i
−
θ
j
)
cos(\theta_i-\theta_j)
cos(θi−θj) 只与
i
−
j
i-j
i−j 有关,则只需有
θ
k
=
k
θ
0
\theta_k=k\theta_0
θk=kθ0,则有
c
o
s
(
θ
i
−
θ
j
)
=
c
o
s
[
(
i
−
j
)
θ
0
]
(7)
cos(\theta_i-\theta_j) = cos[(i-j)\theta_0]\tag7
cos(θi−θj)=cos[(i−j)θ0](7)
所以transformer论文中使用cos与sin函数来对位置编码,是有一定的意义的;
P
E
(
p
o
s
,
2
i
)
=
sin
(
p
o
s
/
1000
0
2
i
/
d
model
)
P
E
(
pos
,
2
i
+
1
)
=
cos
(
p
o
s
/
1000
0
2
i
/
d
model
)
(8)
PE(pos,2i)=sin(pos/100002i/dmodel )PE(pos ,2i+1)=cos(pos/100002i/dmodel )\tag8
PE(pos,2i)PE(pos ,2i+1)=sin(pos/100002i/dmodel )=cos(pos/100002i/dmodel )(8)
其中 pos 为序列中(句子)的位置,
d
m
o
d
e
l
d_{model}
dmodel 为位置信息编码的特征向量的长度,i 表示位置信息编码特征向量的第 i 个元素 ,编码向量中的奇数位用cos来编码,偶数位用sin来编码;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。