LESSON 3.2 · 推导 · 120 分钟

Scaled Dot-Product Attention

Q、K、V是同一批token表示经过三组可学习线性投影得到的向量。Query表示当前位置要检索什么,Key表示每个位置可被怎样匹配,Value携带真正要聚合的信息。注意力先计算QKᵀ/√dₖ得到匹配分数,加上mask后做softmax,再用这些权重对V加权求和。

DIRECT ANSWER · VERIFIED SOURCES ·

Q、K、V和缩放点积注意力到底在计算什么?

Q、K、V是同一批token表示经过三组可学习线性投影得到的向量。Query表示当前位置要检索什么,Key表示每个位置可被怎样匹配,Value携带真正要聚合的信息。注意力先计算QKᵀ/√dₖ得到匹配分数,加上mask后做softmax,再用这些权重对V加权求和。

关键结论

  • QKᵀ负责内容寻址,softmax把每一行变成和为1的权重,乘V完成信息聚合。
  • 除以√dₖ是为了控制点积方差,避免维度增大后softmax过早饱和、梯度变小。
  • 因果mask禁止当前位置读取未来token;它在softmax之前把非法位置设为负无穷。

边界与常见误解

“检索什么、提供什么”是帮助理解的心智模型,并非Q、K、V自带固定语义;它们的含义由训练任务和权重共同形成。注意力权重也不能直接等同于因果解释。

一手来源

学完你应该能够

  1. 能写出 scaled dot-product attention 公式并标注每个张量 shape。
  2. 能从点积方差随 d_k 增长,解释为什么除以 √d_k。
  3. 能说明 causal mask 为什么必须在 softmax 前加到 logits。
  4. 能用可运行断言证明行归一化、未来位置权重为零和未来 token 不影响过去输出。

核心概念

Q、K、V 的职责

同一个 token 可以投影成不同角色。Q 表示当前想读取什么,K 表示每个位置可被怎样匹配,V 是匹配后真正汇总的内容;地址和内容不能混为一谈。

Shape 台账

令 Q、K∈Rⁿˣᵈᵏ,V∈Rⁿˣᵈᵛ。QKᵀ 得到 n×n logits,逐行 softmax 后仍为 n×n,乘 V 得到 n×d_v 输出。先写 shape,再写运算。

为什么除以 √d_k

若 q_i、k_i 独立且方差约为 1,点积 Σq_ik_i 的方差随 d_k 近似线性增长。除以 √d_k 把标准差拉回常数量级,避免 softmax 过早饱和;这不只是笼统的“数值稳定”。

Mask 的位置

因果位置 j>i 的 logit 在 softmax 前替换为 −∞,指数后恰好为 0,合法位置重新归一化为 1。softmax 后再清零会破坏概率和,且容易产生信息泄漏。

稳定 softmax 与加权和

每行先减最大 logit 再取 exp,降低溢出风险;权重行和必须为 1。最终输出是所有可见 V 的加权和,不是 Q、K 或权重本身。

实践任务

实现并验证四 token 因果单头注意力

  • 为四个二维 token 写出 Q、K、V、logits、weights 和 output 的 shape。
  • 实现 attention_row:点积后除以 √d_k,把未来 logits 设为 −∞,再做稳定 softmax。
  • 逐行断言权重和为 1、未来权重为 0,并检查输出维度。
  • 只修改第 4 个 token,证明前 3 个输出完全不变;再比较有无缩放时的 softmax 熵。

进入完整互动课程