注意力为什么除以 \(\sqrt d\):尺度变换避免梯度消失¶
- 章节:第26章 · 序列到序列与 Transformer(注意力机制 / 简答·填空)
疑问¶
乘法注意力为什么要除以 \(\sqrt d\)?为什么这样能"避免梯度消失"?
正确答案¶
公式(PPT slide_046,填空)¶
注意力:\(v=\sum_{i=1}^n\alpha(q,k_i)\,v_i\),\(\ \sum_i\alpha(q,k_i)=1\)。
乘法注意力相似度(式 26.11 / 26.12):
\[e(q,k_i)=q^{\mathsf T}k_i\qquad\Longrightarrow\qquad e(q,k_i)=\frac{q^{\mathsf T}k_i}{\sqrt d}\]
其中 \(d\) 是 \(q,k_i\) 的维度。
PPT 结论(会考,简答就写这句)¶
除以 \(\sqrt d\) 是尺度变换,保证相似度取值在一定范围内,避免学习时发生梯度消失。
💡 为什么能避免梯度消失(理解补充,课本外)¶
链条:不除 \(\sqrt d\) → 打分整体拉大、彼此差距更大 → softmax 饱和(接近 one-hot) → 饱和处 softmax 导数 ≈ 0 → 梯度传不回去 → 梯度消失、注意力前的参数学不动。
具体三步:
- \(\sqrt d\) 的来历:\(q^{\mathsf T}k=\sum_i q_ik_i\) 是 \(d\) 项之和,每项方差 1 → 和的方差 \(=d\) → 标准差 \(=\sqrt d\)。\(d=512\) 时打分动辄几十量级。除以 \(\sqrt d\) 把标准差压回 1;除以 \(d\) 会过头(缩成 \(1/\sqrt d\),维度越大反而越小)。
- 饱和:打分散布大 → softmax 输出接近 one-hot(最大那项 \(\approx1\)、其余 \(\approx0\))。例:\(\text{softmax}([2,1,0])\approx[0.67,0.24,0.09]\)(平滑);\(\text{softmax}([40,20,5])\approx[1,\sim0,\sim0]\)(饱和)。
- 导数趋 0:softmax 梯度含 \(p_i(1-p_i)\)、\(p_ip_j\) 这类项;当输出接近 one-hot(\(p\to1\) 或 \(0\))时这些项全趋 0 → 反向传播乘上 \(\approx0\) 的导数 → 梯度消失。
类比:和 sigmoid 饱和(输入过大 → 导数趋 0 → 梯度消失)是同一个道理;除 \(\sqrt d\) 就是把输入压回"不饱和区"。
易错点 / 为什么错¶
- 不是"数字大 → softmax 没区分度",恰恰相反:是过度区分、饱和成 one-hot,太尖锐才导致导数 ≈ 0。"没区分度"是另一个极端(打分都差不多 → 接近均匀),不是这里的问题。
- softmax 只看打分之间的差距,不看绝对大小(\([100,100,100]\) 仍是均匀)。根因是不同 key 的打分散布随 \(\sqrt d\) 变大,除 \(\sqrt d\) 把散布压回来。
- 是除以 \(\sqrt d\) 不是 \(d\)。
出处¶
老师 PPT slide_046:乘法注意力式 26.11/26.12、"尺度变换保证相似度取值范围、避免梯度消失"。√d 方差推导与 softmax 饱和机制为课本外标准补充(正确、理解用);考试简答写 PPT 结论即可,机制能讲出来是加分。相关:[[反向传播-接力棒与内积外积]](sigmoid 饱和→梯度消失同理)。