注意力机制中的缩放问题及其解决方法
在讨论加性注意力(Additive Attention)和点积注意力(Dot-product Attention)时,研究表明,对于较小的 d k d_k dk值,两种机制的性能相近。然而,当 d k d_k dk值较大时,加性注意力在没有缩放的情况下表现优于点积注意力。下面详细解释这一现象及其解决方法。
1. 问题描述
1.1 注意力机制的定义
-
加性注意力:通过前馈神经网络计算相似度。
e i j = v ⊤ tanh ( W q Q i + W k K j ) e_{ij} = \text{v}^\top \tanh(\text{W}_q Q_i + \text{W}_k K_j) eij=v⊤tanh(WqQi+WkKj) -
点积注意力:通过查询和键的点积计算相似度。
e i j = Q i ⋅ K j ⊤ e_{ij} = Q_i \cdot K_j^\top eij=Qi⋅Kj⊤
1.2 现象描述
对于较大的 d k d_k dk值,点积注意力的点积结果会变得非常大,这会导致softmax函数进入梯度极小的区域,使得梯度消失问题变得严重,从而影响训练效果。
2. 缩放点积注意力的解决方法
为了解决上述问题,点积注意力引入了缩放因子 1 d k \frac{1}{\sqrt{d_k}} dk1,使得点积结果在softmax之前缩小,从而避免梯度消失问题。
2.1 缩放后的点积注意力公式
缩放后的点积注意力计算相似度的方法如下:
e
i
j
=
Q
i
⋅
K
j
⊤
d
k
e_{ij} = \frac{Q_i \cdot K_j^\top}{\sqrt{d_k}}
eij=dkQi⋅Kj⊤
3. 数学推导与数据示例
3.1 数学推导
在不进行缩放时,点积结果 Q i ⋅ K j ⊤ Q_i \cdot K_j^\top Qi⋅Kj⊤的期望值和方差随着 d k d_k dk的增大而增大,导致softmax函数的输入值范围扩大。
假设
Q
Q
Q和
K
K
K中的元素服从标准正态分布
N
(
0
,
1
)
\mathcal{N}(0, 1)
N(0,1),则:
E
[
Q
i
⋅
K
j
⊤
]
=
0
\mathbb{E}[Q_i \cdot K_j^\top] = 0
E[Qi⋅Kj⊤]=0
Var
(
Q
i
⋅
K
j
⊤
)
=
d
k
\text{Var}(Q_i \cdot K_j^\top) = d_k
Var(Qi⋅Kj⊤)=dk
当 d k d_k dk增大时, Q i ⋅ K j ⊤ Q_i \cdot K_j^\top Qi⋅Kj⊤的值变得很大,使得softmax函数的输入值变得极大或极小,导致梯度消失。
通过引入缩放因子 1 d k \frac{1}{\sqrt{d_k}} dk1,我们将方差缩小为1,从而使得softmax函数的输入值在一个合理范围内,避免梯度消失。
3.2 数据示例
假设我们有以下数据:
- 查询 Q Q Q: [ 1 0 0 1 ] \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} [1001]
- 键 K K K: [ 1 2 3 4 ] \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} [1324]
- 值 V V V: [ 5 6 7 8 ] \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} [5768]
假设 d k = 2 d_k = 2 dk=2,计算未缩放和缩放的点积注意力。
未缩放的点积注意力
-
计算相似度:
对于 Q 1 Q_1 Q1和 K 1 K_1 K1:
e 11 = 1 ⋅ 1 + 0 ⋅ 2 = 1 e_{11} = 1 \cdot 1 + 0 \cdot 2 = 1 e11=1⋅1+0⋅2=1对于 Q 1 Q_1 Q1和 K 2 K_2 K2:
e 12 = 1 ⋅ 3 + 0 ⋅ 4 = 3 e_{12} = 1 \cdot 3 + 0 \cdot 4 = 3 e12=1⋅3+0⋅4=3 -
计算注意力权重:
α 11 = exp ( 1 ) exp ( 1 ) + exp ( 3 ) ≈ 0.1192 \alpha_{11} = \frac{\exp(1)}{\exp(1) + \exp(3)} \approx 0.1192 α11=exp(1)+exp(3)exp(1)≈0.1192
α 12 = exp ( 3 ) exp ( 1 ) + exp ( 3 ) ≈ 0.8808 \alpha_{12} = \frac{\exp(3)}{\exp(1) + \exp(3)} \approx 0.8808 α12=exp(1)+exp(3)exp(3)≈0.8808 -
加权求和:
Attention ( Q 1 , K , V ) = 0.1192 [ 5 6 ] + 0.8808 [ 7 8 ] ≈ [ 6.7624 7.7624 ] \text{Attention}(Q_1, K, V) = 0.1192 \begin{bmatrix} 5 & 6 \end{bmatrix} + 0.8808 \begin{bmatrix} 7 & 8 \end{bmatrix} \approx \begin{bmatrix} 6.7624 & 7.7624 \end{bmatrix} Attention(Q1,K,V)=0.1192[56]+0.8808[78]≈[6.76247.7624]
缩放的点积注意力
-
计算相似度:
对于 Q 1 Q_1 Q1和 K 1 K_1 K1:
e 11 = 1 2 e_{11} = \frac{1}{\sqrt{2}} e11=21对于 Q 1 Q_1 Q1和 K 2 K_2 K2:
e 12 = 3 2 e_{12} = \frac{3}{\sqrt{2}} e12=23 -
计算注意力权重:
α 11 = exp ( 1 2 ) exp ( 1 2 ) + exp ( 3 2 ) ≈ 0.1192 \alpha_{11} = \frac{\exp(\frac{1}{\sqrt{2}})}{\exp(\frac{1}{\sqrt{2}}) + \exp(\frac{3}{\sqrt{2}})} \approx 0.1192 α11=exp(21)+exp(23)exp(21)≈0.1192
α 12 = exp ( 3 2 ) exp ( 1 2 ) + exp ( 3 2 ) ≈ 0.8808 \alpha_{12} = \frac{\exp(\frac{3}{\sqrt{2}})}{\exp(\frac{1}{\sqrt{2}}) + \exp(\frac{3}{\sqrt{2}})} \approx 0.8808 α12=exp(21)+exp(23)exp(23)≈0.8808 -
加权求和:
Attention ( Q 1 , K , V ) = 0.1192 [ 5 6 ] + 0.8808 [ 7 8 ] ≈ [ 6.7624 7.7624 ] \text{Attention}(Q_1, K, V) = 0.1192 \begin{bmatrix} 5 & 6 \end{bmatrix} + 0.8808 \begin{bmatrix} 7 & 8 \end{bmatrix} \approx \begin{bmatrix} 6.7624 & 7.7624 \end{bmatrix} Attention(Q1,K,V)=0.1192[56]+0.8808[78]≈[6.76247.7624]
结论
通过引入缩放因子 1 d k \frac{1}{\sqrt{d_k}} dk1,点积注意力避免了在 d k d_k dk较大时softmax函数进入梯度极小区域的问题,从而提高了模型的稳定性和训练效果。具体数据示例展示了缩放前后的差异,验证了缩放点积注意力的有效性。