Transformer 注意力缩放机制

为什么 Attention 公式中需要除以 √dk?不缩放会怎样?

🌡 Softmax 温度效应演示
原始注意力分数 (raw scores)
键向量维度 dk 64
1 64 128 256 384 512
❌ 未缩放的 Softmax
✅ 缩放后的 Softmax
最大注意力权重
--
未缩放
缩放: --
信息熵 (分布均匀度)
--
未缩放
缩放: --
梯度量级
--
未缩放
缩放: --
📉 梯度消失可视化
未缩放梯度
缩放后梯度
当前 dk 位置
💡 核心直觉

当 dk 很大时,Query 和 Key 的点积 q · k 的数值会变得很大, 导致 Softmax 函数进入饱和区域,输出接近 one-hot 分布, 进而造成梯度消失,模型难以学习。

数学直觉:如果 q 和 k 的各分量独立、均值为 0、方差为 1, 则点积 q · k = ∑ qiki 的方差为 dk。 因此除以 √dk 可将方差归一化为 1,保持梯度健康。

Attention(Q, K, V) = softmax( QKT / √dk ) · V
Var(q · k) = dk   ⇒   Var(q · k / √dk) = 1