✨ 复制成功!

以文会友,打造好学人设!

📋 已复制到剪贴板:

Attention 中的缩放因子 1/√d_k 是干什么的?不加会怎样?

创建时间:2026-09-16 更新时间:2026-09-16 阅读次数:1485 次 分类:模型架构与Transformer

1、先看 Attention 公式和缩放因子的位置

标准 Scaled Dot-Product Attention:

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

其中:

  • Q、K、V 形状 (n, d_k)
  • QK^T 形状 (n, n),是注意力分数(logits)
  • 缩放因子 1/√d_k 作用在 softmax 之前
  • d_k 是每个头的维度

关键点:缩放因子作用在 softmax 的输入上,控制 logits 的尺度。

2、缩放因子是干什么的

(1)控制 logits 的方差,防止 softmax 饱和

先看 QK^T 里每个元素的来源:

score_ij = q_i · k_j = Σ_{l=1}^{d_k} q_il · k_jl

假设:

  • q 和 k 的各分量独立同分布
  • 均值 0,方差 1

那么点积 q · k 是 d_k 个乘积之和:

  • 均值:0
  • 方差:d_k

也就是说,d_k 越大,点积的方差越大,logits 的绝对值越大。

而 softmax 对输入尺度非常敏感:

  • 输入值很大 → softmax 输出接近 one-hot,最大项接近 1,其他接近 0
  • 输入值很小 → softmax 输出接近均匀分布

如果不缩放,d_k 大时 logits 方差大,softmax 会进入饱和区:

  • 输出接近 one-hot
  • 梯度接近 0
  • 训练困难,梯度消失

除以 √d_k 后:

  • 点积方差从 d_k 变成 d_k / d_k = 1
  • logits 尺度稳定,softmax 不饱和
  • 梯度健康,训练稳定

(2)保持 softmax 输出的合理分布

  • 不缩放:分布太尖锐,模型只关注一个 token,忽略其他。
  • 缩放后:分布更平滑,模型能综合多个 token 的信息。
  • 这对多头注意力尤其重要,因为每个头维度 d_k = d_model / h。

(3)稳定训练

  • logits 尺度稳定 → 梯度稳定 → 训练稳定。
  • 原始论文明确说,缩放是为了防止 d_k 大时点积过大导致 softmax 梯度消失。

3、不加会怎样

(1)softmax 饱和,梯度消失

  • d_k 大 → 点积方差大 → logits 绝对值大。
  • softmax 输出接近 one-hot。
  • 反向传播时,softmax 的雅可比矩阵接近 0。
  • 梯度消失,参数几乎不更新。
  • 训练变慢甚至不收敛。

(2)注意力过于尖锐

  • 模型只关注少数 token,忽略其他。
  • 注意力分布失去多样性。
  • 多头注意力的优势被削弱。

(3)对初始化敏感

  • 如果初始化稍大,logits 更大,饱和更严重。
  • 训练不稳定,容易发散。

(4)d_k 越大问题越严重

  • d_k = 64 时,方差 64,标准差 8,已经不小。
  • d_k = 128 时,标准差约 11。
  • 不缩放的话,logits 很容易到 ±几十,softmax 严重饱和。
  • 所以缩放因子对大 d_k 尤其必要。

(5)实验验证

原始论文和后续研究都验证:

  • 不加缩放,训练明显变差。
  • 加缩放后,训练稳定,效果更好。
  • 这也是为什么它叫 Scaled Dot-Product Attention。

4、为什么是 √d_k 而不是 d_k

  • 点积方差是 d_k,标准差是 √d_k。
  • 要归一化到方差 1,应该除以标准差 √d_k。
  • 除以 d_k 会让方差变成 1/d_k,太小,softmax 太平滑。
  • 所以除以 √d_k 是数学上正确的选择。

5、和温度参数的关系(补充)

  • softmax 温度:softmax(logits / T)
  • Attention 缩放:softmax(logits / √d_k)
  • 两者本质一样:都是控制 softmax 输入的尺度。
  • T 大 → 分布平滑;T 小 → 分布尖锐。
  • 1/√d_k 相当于固定温度 T = √d_k。

区别:温度是推理时可调的超参,缩放因子是训练时固定的。

6、一句话总结

缩放因子 1/√d_k 控制 Attention logits 的方差,防止 d_k 大时点积过大导致 softmax 饱和、梯度消失。不加会让 softmax 输出接近 one-hot,梯度接近 0,训练困难。除以 √d_k 是因为点积标准差是 √d_k,归一化到方差 1。它本质上等价于固定温度 T = √d_k。

7、这道面试题的质量点评

优点

  • 经典核心题:缩放因子是 Transformer 最基础的设计之一。
  • 层层递进:从“干什么”到“不加会怎样”,逻辑自然。
  • 区分度好:
    • 初级:能说“防止 softmax 饱和”。
    • 中级:能说点积方差、梯度消失。
    • 高级:能说为什么是 √d_k、和温度的关系、对大 d_k 的影响。
  • 有追问空间:可以追问温度、初始化、多头维度。

缺点

  • 偏基础:对资深候选人可能太简单。
  • 容易背结论:标准答案就是“防止 softmax 饱和”,可能只答一句。
  • 缺少场景:没问“你实际训练时遇到过梯度问题吗?”
  • 没覆盖温度:这是很好的延伸点,题目本身没提,需要追问。

总体评价

质量:中上。 适合作为 Transformer 基础题或开场题,能区分“背过公式”和“理解 softmax 尺度”的人。单靠这一题区分度有限,最好追问:

  • “为什么是 √d_k 不是 d_k?”
  • “它和 softmax 温度有什么关系?”
  • “如果不缩放,初始化要怎么调?”
  • “多头里每个头的 d_k 更小,缩放还重要吗?”

8、怎么回答才是最好的

回答原则

  • 先给核心结论:控制 logits 尺度,防止 softmax 饱和。
  • 讲方差推导:点积方差是 d_k,标准差是 √d_k。
  • 说清后果:不加会 one-hot、梯度消失、训练困难。
  • 主动提温度:本质是固定温度。
  • 结合实践:说“我们训练时初始化配合缩放”。

推荐回答结构

“缩放因子 1/√d_k 作用在 softmax 之前,控制 Attention logits 的尺度。”

“Q 和 K 点积是 d_k 个乘积之和,假设各分量方差 1,点积方差就是 d_k,标准差是 √d_k。d_k 越大,logits 绝对值越大。”

“softmax 对输入尺度很敏感。logits 太大会进入饱和区,输出接近 one-hot,梯度接近 0,训练困难。除以 √d_k 后,方差归一化到 1,softmax 不饱和,梯度健康。”

“不加的话,d_k 大时 softmax 输出太尖锐,梯度消失,训练变慢甚至不收敛。所以原始论文叫 Scaled Dot-Product Attention。”

“为什么是 √d_k 而不是 d_k?因为点积标准差是 √d_k,除以它才能归一化到方差 1。除以 d_k 会让方差太小,softmax 太平滑。”

“它和温度参数本质一样,都是控制 softmax 输入尺度。1/√d_k 相当于固定温度 T = √d_k。区别是温度推理时可调,缩放因子训练时固定。”

加分点

  • 提到 点积方差 d_k、标准差 √d_k。
  • 提到 softmax 饱和、梯度消失、one-hot。
  • 提到 为什么是 √d_k 不是 d_k。
  • 提到 温度参数、固定温度 T = √d_k。

结合真实训练经验。

减分点

  • 只说“防止 softmax 饱和”,不解释。
  • 说“除以 d_k 也行”。
  • 不知道和温度的关系。
  • 把缩放因子说成“归一化 Q 和 K”。

📌 面试天下网:一款服务于上班族的口袋书,让大家在地铁里/公交上可以学习大模型技术!
📌 网站公告:【悬赏 200 元/篇】寻找“大模型面试战场”的一手回忆录
📌 网站公告:【大模型/Agent面试陪练1V1指导】正式启动......

评论专区

评论加载中...