自注意力中随着根号dk的增大,qk点积的方差为什么也会增大

在标准的 Scaled Dot-Product Attention 中,QQQ(Query)和 KKK(Key)矩阵的维度通常设定为 dkd_kdk。当 dkd_kdk 增大时,Q⋅KTQ \cdot K^TQ⋅KT 点积结果的方差确实会随之增大。其根本原因在于独立随机变量求和的统计学性质

以下是详细的数学推导和原理解析:

1. 点积的数学本质

假设 QQQ 和 KKK 是维度为 dkd_kdk 的向量,它们的点积可以表示为:

DotProduct(Q,K)=∑i=1dkqiki \text{DotProduct}(Q, K) = \sum_{i=1}^{d_k} q_i k_i DotProduct(Q,K)=i=1∑dkqiki

其中,qiq_iqi 和 kik_iki 分别是 QQQ 和 KKK 在第 iii 个维度上的标量值。

2. 方差增大的统计学原因

在深度学习中,我们通常假设模型的权重和激活值在初始化或经过归一化后,均值为 000,且各个维度之间是相互独立的。

根据概率论中独立随机变量求和的方差性质 :如果 XXX 和 YYY 是相互独立的随机变量,那么它们乘积的期望 EXY=EXEYEXY = EXEYEXY=EXEY

对于点积中的每一项 qikiq_i k_iqiki,假设 qiq_iqi 和 kik_iki 的均值都为 000,方差都为 σ2\sigma^2σ2:

  • 单项乘积的方差:Var(qiki)=Eqi2ki2−(Eqiki)2=Eqi2Eki2−0=σ2⋅σ2=σ4\text{Var}(q_i k_i) = Eq_i\^2 k_i\^2 - (Eq_i k_i)^2 = Eq_i\^2Ek_i\^2 - 0 = \sigma^2 \cdot \sigma^2 = \sigma^4Var(qiki)=Eqi2ki2−(Eqiki)2=Eqi2Eki2−0=σ2⋅σ2=σ4

因为点积是 dkd_kdk 个这样相互独立的项相加,根据方差的加法公式(独立变量和的方差等于方差的和):

Var(∑i=1dkqiki)=∑i=1dkVar(qiki)=dk⋅σ4 \text{Var}\left(\sum_{i=1}^{d_k} q_i k_i\right) = \sum_{i=1}^{d_k} \text{Var}(q_i k_i) = d_k \cdot \sigma^4 Var(i=1∑dkqiki)=i=1∑dkVar(qiki)=dk⋅σ4

结论 :从公式可以看出,点积的方差与维度 dkd_kdk 呈严格的线性正比关系 。当 dkd_kdk 变大时,参与求和的独立随机变量增多,累加后的整体方差自然就会线性增大。

3. 方差增大带来的负面影响

在 Transformer 中,点积的结果会被送入 Softmax 函数进行归一化:

Attention(Q,K,V)=softmax(QKTdk)V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V Attention(Q,K,V)=softmax(dk QKT)V

如果不除以 dk\sqrt{d_k}dk ,当 dkd_kdk 很大时,点积结果的方差会非常大。这意味着 Softmax 函数的输入值会分布在非常宽广的区间内(出现很多绝对值很大的正数或负数)。

这会导致 Softmax 函数的输出进入梯度极小区域(饱和区) :输出概率分布变得极其尖锐(One-hot 化),导致反向传播时梯度趋近于 000,引发梯度消失问题,使模型难以训练。

4. 为什么是除以 dk\sqrt{d_k}dk ?

正是为了解决上述方差增大的问题,原始论文《Attention Is All You Need》引入了缩放因子 dk\sqrt{d_k}dk 。

我们在点积结果上除以 dk\sqrt{d_k}dk ,相当于对方差进行了如下缩放:

Var(∑qikidk)=1dk⋅Var(∑qiki)=1dk⋅(dk⋅σ4)=σ4 \text{Var}\left(\frac{\sum q_i k_i}{\sqrt{d_k}}\right) = \frac{1}{d_k} \cdot \text{Var}\left(\sum q_i k_i\right) = \frac{1}{d_k} \cdot (d_k \cdot \sigma^4) = \sigma^4 Var(dk ∑qiki)=dk1⋅Var(∑qiki)=dk1⋅(dk⋅σ4)=σ4

通过除以 dk\sqrt{d_k}dk ,无论 dkd_kdk 如何增大,缩放后的点积结果的方差都被强制稳定在了一个常数级别(σ4\sigma^4σ4),从而保证了 Softmax 函数始终处于梯度健康的区域,确保了模型训练的稳定。

相关推荐
今天AI了吗6 分钟前
Python 基础语法从入门到使用详解
开发语言·人工智能·python
苏灿烤鱼13 分钟前
从微信公众号内容到视频号视频:自动化视频生成的技术实现
人工智能·python·ffmpeg
金銀銅鐵1 小时前
[Python] 借助 Pillow 和 NumPy 生成与斐波那契数列有关的图案
python·数学
雪之下雪乃的代码日记1 小时前
Python快速入门(Java开发者版)
java·开发语言·笔记·python
gb42152871 小时前
python中pypdf库和langchain-unstructured库在解析pdf文件的时候的区别?
python·langchain·pdf
weixin199701080161 小时前
☁️《抖店API基础¥0.018/百次·增值¥0.05/百次:云内云外价差架构实战》(附Python源码)
开发语言·python·架构
0566462 小时前
Python数据结构——循环队列
python·学习
萌动的小火苗2 小时前
1、python基础面试题
java·开发语言·python
sunywz3 小时前
【从零搭建物联网智能充电桩系统】2、自定义二进制协议:设备为什么不用 JSON?
python·物联网·json
小叮当爱咖啡3 小时前
Day3.参数+Prompt三板斧
开发语言·python·prompt