跳转至

注意力为什么除以 \(\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 → 梯度传不回去 → 梯度消失、注意力前的参数学不动。

具体三步:

  1. \(\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\),维度越大反而越小)。
  2. 饱和:打分散布大 → 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]\)(饱和)。
  3. 导数趋 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 饱和→梯度消失同理)。