自注意力中随着根号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时代的禅悟集:人机智能,反照诸我
大数据·人工智能·深度学习·机器学习·生活
IpdataCloud11 分钟前
AI智能体调用工具怎么核验来源IP?归属地、网络类型与代理风险识别(含Python代码)
数据库·python·tcp/ip
2601_9669496534 分钟前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
蒸鱼Yuzheng39 分钟前
Python 游戏测试开发怎么准备:日志解析、接口校验、并发与可维护性
自动化测试·python·测试开发·面试题·游戏测试
Ivanqhz1 小时前
BM1688 双核架构
python·深度学习·神经网络·cnn·mlir
Java后端的Ai之路1 小时前
Python进阶探索17 - Python中的深拷贝与浅拷贝
人工智能·python·ai·浅拷贝·深拷贝
知识分享小能手2 小时前
深度学习学习教程,从入门到精通,深度生成模型 —— 知识点详解与代码实现(20)
人工智能·深度学习·学习
西柚研究生1234562 小时前
论文分析17:YOLOv11_UAVNet:无人机航拍图像专用目标检测算法
人工智能·python·深度学习·算法·目标检测
沧海一笑-dj3 小时前
【Python】Python学习笔记-初识 Python
python·python安装·python解释器
打工仔折腾 AI3 小时前
FastAPI 从本机到生产服务器:Nginx+Gunicorn+Uvicorn 完整部署实录
人工智能·后端·python·nginx·fastapi·gunicorn