关于公式中的i进行了说明
正文:采用正余弦函数,是根据归纳偏置和经验做出的选择
重点:
位置编码的需求:1. 需要体现同一个单词在不同位置的区别;
2. 需要体现一定的先后次序关,并且一定范围内的编码差异不应该依赖于文本长度,具有一定不变性。
1.对长为T的文本,可以编码为
p
o
s
=
0
,
1
,
.
.
.
,
T
−
1
pos=0,1,...,T-1
pos=0,1,...,T−12.对1方法进行归一化
P
E
=
p
o
s
T
−
1
PE = \frac{pos}{T-1}
PE=T−1pos3.有界的周期性函数。上两种过于强调单调函数,转为周期性的sin/cos更好的利用了归纳偏置,一定范围内的相对次序。
P
E
(
p
o
s
)
=
s
i
n
(
p
o
s
α
)
PE(pos) = sin(\frac{pos}{\alpha })
PE(pos)=sin(αpos)4.方法3太过单调,只在[-1,1]之间变换。因此,放到
d
m
o
d
e
l
d_{model}
dmodel维度上更好。
P
E
(
p
o
s
,
2
i
)
=
sin
(
p
o
s
1000
0
2
i
/
d
m
o
d
e
l
)
PE(pos,2i) = \sin(\frac{pos}{10000^{2i/d_{model}}})
PE(pos,2i)=sin(100002i/dmodelpos)
P
E
(
p
o
s
,
2
i
+
1
)
=
cos
(
p
o
s
1000
0
2
i
/
d
m
o
d
e
l
)
PE(pos,2i+1) = \cos(\frac{pos}{10000^{2i/d_{model}}})
PE(pos,2i+1)=cos(100002i/dmodelpos)
k从0到d/2。每个k对应两个i,比如k=0的话,i=0,1.k=1的话,i=1,2.由(2)得知,频率为
w
t
w_{t}
wt,则波长从2
π
\pi
π到10000*2
π
\pi
π。
下面举一个简单的例子。给定一个长度为
L
L
L的输入序列
w
=
(
w
0
,
⋯
,
w
L
−
1
)
w = (w_{0},\cdots,w_{L-1})
w=(w0,⋯,wL−1),词
w
t
w_{t}
wt及其对应的词向量
e
w
t
e_{w_{t} }
ewt,其中,
t
∈
[
0
,
L
−
1
]
t\in [0,L-1]
t∈[0,L−1]。假设
d
W
E
=
4
d_{WE}=4
dWE=4,那么
d
P
E
=
4
d_{PE}=4
dPE=4,
k
∈
[
0
,
1
]
k\in [0,1]
k∈[0,1]。根据公式(1)计算
w
t
w_{t}
wt对应的位置向量:
这里
d
P
E
=
4
d_{PE}=4
dPE=4就是
d
m
o
d
e
l
=
4
d_{model}=4
dmodel=4,所以有四个值。
参考:
【1】https://www.zhihu.com/question/347678607/answer/864217252
【2】https://zhuanlan.zhihu.com/p/106644634
deformable_detr代码阅读一位置编码position encoding
最新推荐文章于 2024-07-02 18:19:18 发布