Self-Attention 为什么需要 Scaling?

考查重点:点积方差与 softmax 饱和。Q/K 各维独立近似单位方差时点积方差随 d 增长,除√d 稳定尺度,避免 softmax 过饱和导致梯度变小

本题目录

参考答案

核心回答

Scaled Dot-Product Attention在softmax前将QKᵀ除以√d_k,主要为了控制点积logits的尺度。维度增加时,未缩放点积的方差会增大,softmax更容易接近one-hot,使其Jacobian中的许多项很小,影响优化。这里d_k是每个注意力头中Q/K的维度,不是token长度,也不一定等于模型隐藏维度。

Attention(Q,K,V) = softmax(QKᵀ / √d_k)V

为什么是平方根

在常见的简化假设下,q、k的分量相互独立、均值0、方差1,且各维乘积不相关:

q·k = Σ q_i k_i
E[q·k] = 0
Var(q·k) = d_k
Var((q·k)/√d_k) = 1

除以√d_k控制的是标准差;若除以d_k,方差会变成1/d_k,维度越大反而把logits压得越小。实际模型的分量不完全满足这些假设,因此这是解释设计动机的尺度分析,不是声称每一层实测方差恒为1。

对softmax有什么影响

softmax输出p的导数为:

∂p_i/∂z_j = p_i(δ_ij - p_j)

例如d_k=64,一行未缩放logits为[8,0],softmax约为[0.999665,0.000335];除以8后是[1,0],概率约[0.731059,0.268941]。前者较大概率项的对角导数约0.000335,后者约0.196612,说明分布过尖时softmax本身对logits变化可能不敏感。

但不能据此声称“没有Scaling,整个网络梯度一定消失”。最终梯度还经过损失、缩放及Q/K投影等链路;上例只比较softmax的局部导数。

常见追问

多头为什么用头维度? 每个头独立做点积,它的求和项数就是该头d_k。比如模型隐藏维度512、8个等宽头,通常每头64,缩放因子为8,而不是√512。

减最大值能替代Scaling吗? 不能。softmax(z−max(z))与softmax(z)数学相同,只是防止指数溢出;除以√d_k会改变logits差距及概率分布。Q/K归一化、可学习温度等变体也在调整尺度,但要依具体模型设计,不能随意替换检查点的计算方式。

对应教程

参考资料

相关面经

3 篇

三一树根

机器人强化学习算法
实习
查看原面经 →
请说一下 Attention 计算里面为什么要除以 $\sqrt{d_k}$?

顺丰

大模型
实习
查看原面经 →
为什么要scaling

顺丰

大模型
查看原面经 →
为什么要scaling

收录题集

5 个来源,共6 份题集

大模型基础面试题

阿东玩 AI · AgentGuide · 1 条原题

查看题集 →

大模型基础

AMIT SHEKHAR · ai-engineering-interview-questions · 1 条原题

查看题集 →

机器学习原理

Alireza Dirafzoon · AIMLInterviews · 1 条原题

查看题集 →

NLP 模型与文本表示

Datawhale · daily-interview · 1 条原题

查看题集 →

模型架构与注意力

Firefly · llm_interview_note · 1 条原题

查看题集 →
展开剩余 1 份题集

相关题目

4 题