本文最后更新于 2025-04-05T01:53:16+00:00
Transformer中的Scaled Dot-Product Attention:为何除以 dk?
本文由AI生成,CJL的主要工作是编写提示词,并检验内容正确性
在Transformer模型中,Scaled Dot-Product Attention 是一个核心机制,其计算公式为:
Attention(Q,K,V)=softmax(dkQKT)V
其中,Q 是查询向量,K 是键向量,V 是值向量,dk 是键向量的维度。公式中一个引人注目的细节是:点积 QKT 被除以 dk。为什么选择 dk 而不是其他缩放因子,比如直接除以 dk?这篇文章将从理论和实践角度分析这一设计的合理性,并深入探讨其背后的统计特性。
为什么除以 dk?
点积规模的问题
在注意力机制中,QKT 是查询和键的点积,表示两者的相似度。假设 Q 和 K 是 dk 维向量,如果每个分量的值是均值为 0、方差为 1 的随机变量,那么点积的数值会随着 dk 的增加而变大。具体来说,点积的方差与 dk 成正比(后面会证明)。当 dk 较大时(例如 64 或 512),未经缩放的 QKT 可能达到数百甚至数千。
Softmax 的敏感性
点积直接输入到 softmax 函数中,而 softmax 对输入的规模非常敏感。如果 QKT 的值过大,softmax 的输出会退化为接近“one-hot”分布(一个值接近 1,其他接近 0)。这会导致梯度变小,减慢训练过程,甚至引发数值不稳定。反过来,如果点积过小,softmax 输出会趋于均匀,削弱注意力机制区分重要性的能力。
dk 的作用
除以 dk 可以将点积的规模标准化到一个合理的范围。直观上,dk 与点积标准差的增长率匹配(后面证明),从而避免上述问题:
这种缩放方式在《Attention is All You Need》中被提出,并在实践中被广泛验证。下面我们从数学角度证明其合理性。
证明:点积的期望值和方差与 dk 的关系
定义
考虑两个 dk 维向量 Q=[q1,q2,…,qdk] 和 K=[k1,k2,…,kdk],点积为:
S=Q⋅K=∑i=1dkqiki
假设 qi 和 ki 是独立同分布的随机变量,均值为 0,方差为 σ2。我们计算 S 的期望和方差。
期望 E[S]
E[S]=E[∑i=1dkqiki]=∑i=1dkE[qiki]
由于 qi 和 ki 独立,且 E[qi]=0、E[ki]=0:
E[qiki]=E[qi]⋅E[ki]=0
E[S]=dk⋅0=0
期望值为 0,与 dk 无关。
方差 Var(S)
方差定义为:
Var(S)=E[(S−E[S])2]
由于 E[S]=0,这简化为:
Var(S)=E[S2]=E[(∑i=1dkqiki)2]
展开平方项:
S2=(∑i=1dkqiki)2=∑i=1dk∑j=1dkqikiqjkj
所以:
E[S2]=E[∑i=1dk∑j=1dkqikiqjkj]
将求和拆分为 i=j 和 i=j 两种情况:
E[S2]=∑i=1dkE[qikiqiki]+∑i=jE[qikiqjkj]
当 i=j 时:
E[qikiqiki]=E[qi2ki2]
由于 qi 和 ki 独立:
E[qi2ki2]=E[qi2]⋅Edirectory[ki2]
-
E[qi2]=Var(qi)+E[qi]2=σq2+0=σq2
-
E[ki2]=Var(ki)+E[ki]2=σk2+0=σk2
所以:
E[qi2ki2]=σq2⋅σk2
这样的项有 dk 个(因为 i 从 1 到 dk)。
当 i=j 时:
E[qikiqjkj]
因为 qi、ki、qj、kj 都是独立的(i=j 时,qi 和 qj 独立,ki 和 kj 独立,且 Q 和 K 之间独立):
E[qikiqjkj]=E[qi]⋅E[ki]⋅E[qj]⋅E[kj]=0⋅0⋅0⋅0=0
合并结果:
Var(S)=E[S2]=∑i=1dkE[qi2ki2]+∑i=j0=∑i=1dkσq2⋅σk2=dk⋅σq2⋅σk2
结论:点积的方差为:
Var(S)=dk⋅σq2⋅σk2
与 dk 的关系
Var(S)=dk⋅σq2⋅σk2=σq2⋅σk2⋅dk
这里,σq2⋅σk2 是常数(与 dk 无关),因此标准差 Var(S) 与 dk 成正比。
qi 和 ki 独立性假设的讨论
上述证明依赖于 qi 和 ki 独立的假设,这在随机初始化的情况下成立。但在训练后的Transformer中,Q=XWQ、K=XWK,其中 X 是输入嵌入,WQ 和 WK 是学到的权重。由于 Q 和 K 共享相同的输入 X,且 WQ 和 WK 通过训练优化,qi 和 ki 通常不完全独立。
不独立时的影响
-
期望:如果 qi 和 ki 存在协方差,E[S]=∑Cov(qi,ki) 可能不为 0,但具体值取决于相关性强度,不一定与 dk 成比例。
-
方差:交叉项 E[qikiqjkj] 不为 0,可能引入 dk2 级别的贡献,使 Var(S)∝dk2,标准差 ∝dk。这意味着 dk 缩放可能不足以完全标准化。
实际意义
尽管独立性不成立,dk 仍被广泛使用,可能因为:
-
训练过程使相关性局部化,dk2 项不主导方差。
-
dk 是一个经验折中,避免过度缩放(如除以 dk)的同时保持稳定性。
-
实践验证表明,这种缩放在多种 dk 下效果良好。
总结
除以 dk 是Transformer设计中的一个巧妙选择。它基于点积标准差与 dk 成比例的统计特性,解决了数值规模问题,同时保留注意力机制的表达力。虽然 qi 和 ki 的独立性在训练后不完全成立,但 dk 的实用性已在无数实验中得到证明。对于更精确的缩放,可能需要针对具体模型和数据进行分析,但当前设计无疑是一个优雅而有效的解决方案。