Transformer 与模型架构
面试问题 进阶 重要度 5/5 知识骨架 提取阶段

为什么点积注意力要除以根号 d_k?

从点积方差和 Softmax 饱和解释缩放因子,并说明假设与直觉边界。

发布于 2026-08-31

当前显示参考答案
本文目录

    Transformer attention head module。单个注意力头中 Q、K、V、缩放点积与 Softmax 的计算位置。

    图:单个注意力头中 Q、K、V、缩放点积与 Softmax 的计算位置。 来源:Transformer attention head module,作者 Cosmia Nebula,许可 CC BY-SA 4.0。

    考察意图

    检查候选人能否把缩放因子连接到统计尺度、Softmax 梯度和训练稳定性。

    60–90 秒口述答案

    若 Q、K 各维近似独立、均值为零且方差为一,q·k 是 d_k 项乘积之和,方差随 d_k 增长到约 d_k。维度大时分数绝对值变大,Softmax 容易进入接近 one-hot 的饱和区,非最大项梯度很小。除以 sqrt(d_k) 把方差拉回常数量级,使不同 head dimension 下的分数尺度更稳定。

    深入解释

    缩放控制的是 Softmax 前 logits 的尺度。该设计基于初始化附近的分布,只求让不同维度下的分数尺度更稳定;它不保证所有训练条件下方差严格为一。

    工程权衡

    实现中必须按单头维度 d_k 缩放,不是 hidden size。不同注意力变体可能通过归一化 Q/K 或可学习温度改变尺度控制方式。

    完整复习答案

    从张量关系开始

    若 q_i、k_i 独立且方差约 1,点积方差约 d_k;除以 sqrt(d_k) 后方差回到常数量级。

    把公式落到数量级

    缩放不改变复杂度;它把注意力分数控制在较稳定的范围,减轻大维度下的 Softmax 饱和和梯度集中,同时还要考虑归一化与低精度数值范围。

    若 d_k=64,且每维乘积近似独立、方差为 1,未缩放点积的标准差约为 8。Softmax 输入经常落入饱和区;除以 √64 后标准差约回到 1。这里是初始化附近的统计解释,不代表训练后各维仍严格独立同分布。

    这个估算给出量级。代入项目参数时需要写明忽略项,并保持单位一致。

    实现与验证

    围绕“为什么点积注意力要除以根号 d_k”,以标准注意力为基准核对前向输出和梯度,再按序列长度分别测 Prefill、Decode、峰值显存与 P95。优化结论只适用于被测模型、精度和硬件。

    追问参考

    若序列长度翻倍,时间、激活和 KV Cache 各如何变化?

    对“为什么点积注意力要除以根号 d_k”而言,序列长度翻倍时,标准注意力分数计算和矩阵中间量约增至四倍,KV Cache 随长度约增至两倍;FlashAttention 可降低中间存储,但不消除二次算术量。

    该优化改变模型函数、数值实现,还是仅改变内存调度?

    回到“为什么点积注意力要除以根号 d_k”,需要区分:判断优化层次:输出分布相同而访存改变属于实现优化;头共享、稀疏连接或位置缩放会改变模型结构或行为,需要质量回归。

    怎样判断方案已经达到上线条件?

    “为什么点积注意力要除以根号 d_k”进入发布方案前,验证至少包含数值对拍、短长序列分桶、Prefill/Decode 分测、峰值显存与目标硬件上的 P95。

    常见错误回答

    只说“防止梯度爆炸”,却不能说明点积方差怎样随维度变化;或者错误地除以 d_k。

    连续追问

    • Temperature 与这里的缩放有什么关系?
    • 如果 Q、K 已做 L2 归一化会怎样?
    • Softmax 饱和为什么影响梯度?

    项目结合

    可用随机张量比较不同 d_k 下 logits 方差与 Softmax 熵,作为可复现实验。

    来源与关联知识

    输入关键词,查找全部技术文章。

      搜索范围:正文、标题、分类和标签