直接上干货!!!
在注意力中我们经常看到以下公式:
s
c
o
r
e
a
t
t
e
n
=
s
o
f
t
m
a
x
(
Q
K
T
d
k
)
score_{atten}=softmax(\frac{QK^T}{\sqrt{d_k}})
scoreatten=softmax(dkQKT)
为什么就要除以
d
k
d_{k}
dk呢?要除的话为什么要除以它而不是其他数呢?
这是因为存在以下推导:
(
Q
K
T
)
m
n
=
∑
i
d
k
q
m
i
k
i
n
(QK^T)_{mn}=\sum_i^{d_k}q_{mi}k_{in}
(QKT)mn=i∑dkqmikin
其中m、n表示两个矩阵相乘的第m行第n列的元素,
q
m
i
、
k
i
n
q_{mi}、k_{in}
qmi、kin都是期望为0、方差为1的分布且认为独立,所以
q
m
i
k
i
n
q_{mi}k_{in}
qmikin的期望仍为0,方差为1,但是进行了
d
k
d_k
dk个求和后,方差变成了
d
k
d_k
dk(
D
(
X
1
+
X
2
+
.
.
.
+
X
n
)
=
n
D
(
X
1
)
D(X_1+X_2+...+X_n)=nD(X_1)
D(X1+X2+...+Xn)=nD(X1),其中
X
1
到
X
n
X_1到X_n
X1到Xn遵循同一个分布且独立),这样,就会导致方差变大,而且又经过了
s
o
f
t
m
a
x
softmax
softmax(其中的指数函数具有拉大两数差距的效果),导致注意力分数大部分集中到了最高概率的那一个,其他注意力分数接近于零,传过来的梯度接近于零,无法实现有效更新,所以对其除以
d
k
\sqrt{d_k}
dk(
D
(
a
X
)
=
a
2
D
(
X
)
D(aX)=a^2D(X)
D(aX)=a2D(X)),将方差重新归为1,使其方差分布不受维度影响。
注意力中的尺度放缩详解
最新推荐文章于 2023-04-19 01:35:24 发布