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自带固定语义;它们的含义由训练任务和权重共同形成。注意力权重也不能直接等同于因果解释。
一手来源
学完你应该能够
- 能写出 scaled dot-product attention 公式并标注每个张量 shape。
- 能从点积方差随 d_k 增长,解释为什么除以 √d_k。
- 能说明 causal mask 为什么必须在 softmax 前加到 logits。
- 能用可运行断言证明行归一化、未来位置权重为零和未来 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 熵。