自注意力中随着根号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 函数始终处于梯度健康的区域,确保了模型训练的稳定。

相关推荐
东莞市云毅网络有限公司8 小时前
AI 引用句逐条回指原文:让回答可回溯的校验实现
python·数据清洗·rag·企业知识库·文档解析
极客 - L U9 小时前
神经网络 - 激活函数、损失函数、优化器
人工智能·深度学习·神经网络
数字融合10 小时前
透明化视频三维矿山井下照明重建技术
人工智能·python·数码相机
yi01110 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
Marst Code11 小时前
上位机开发日记 · 第 2 篇 · 架构先行:六层分层与边界
python
李日华大战鸡红12 小时前
FOC状态空间方程模型推导(学习记录)
python·学习·线性代数
小蒋观天下13 小时前
专项方案:大场景港口AI安防、多干扰环境下的算法调优与落地实操
人工智能·深度学习·算法·安全·机器学习·计算机视觉·ai大模型
外收内放14 小时前
Python基础语法练习题(57-58)
开发语言·python
朝朝辞暮i14 小时前
VLA 系统学习第 3 课:从一次机器人示范,到真正送进神经网络的 Batch
人工智能·python·深度学习·神经网络·vla
小鹿的周先生15 小时前
第11章-Structured-Output
开发语言·人工智能·python