缩放与 softmax 饱和
注意力打分是 d_k 个乘积项加出来的:维度越高,分数方差越大,softmax 一过就「一家独大」——top-1 拿走几乎全部权重,其他 key 的梯度近乎断流。除以 √d_k 把方差钉回 1,权重重新铺开。拧 d_k、切缩放开关,看直方图摊开又收拢、权重条形从独热铺平——softmax(QKᵀ/√d_k)V 里那个 √d_k,从此有手感。
纯前端算真实数学:Var(q·k) = d_k、softmax(QKᵀ/√d_k),与知识库《Attention 与 Transformer》实测口径对账(d_k=64 方差 63.9 → 1.00;饱和数字 0.84 / 0.94 → 0.25 为 16-key 平均,本工具条形为 10-key 单次抽样、结论同向);随机点积固定种子可复现,零 API、零延迟。
softmax 权重分布(1 个查询 × 10 个 key)
竖线 = 均匀基线 10%同一批 key(种子 42 固定),只随 d_k 与缩放开关变:不缩放时 d_k 大,top-1 一个 key 吃掉几乎全部权重——这就是 softmax 饱和;切到 ÷√d_k,所有条形回到基线附近。
点积打分分布(2000 个随机 q·k)
横轴固定 · 看展宽不看形状横轴固定:拧大 d_k,点积整体摊开(方差 ≈ d_k,琥珀虚线 ±1σ=√d_k 往外跑);切 ÷√d_k,摊开的分布被拉回 ±1σ=1 的窄柱——这就是「把打分方差钉在与维度无关的水位」。种子 42 固定,每一步都可复现。
等比档位 4 ~ 512;文章口径 64 / 128 / 512 都在档上
标准做法是除:softmax(QKᵀ/√d_k)V;关掉看裸点积的后果
Attention(Q, K, V) = softmax(QKT / √d_k) V
一家独大:不缩放时点积方差已到 67.3(贴合理论值 d_k=64,文章 d_k=64 实测 63.9)。分数差被维度系统性放大,softmax 再指数放大——top-1 一个 key 就拿走 99.4% 的权重,熵只剩 0.06 bit(均匀上限 3.32)。文章同法实测(序列长 16 平均):64 维最大权重 0.84、512 维 0.94——注意力近乎退化成只看一个人,其他候选拿不到训练信号。