← 返回题目列表

自注意力机制中的 Q、K、V 分别是什么?如何计算?

高频 中等 第 3 / 25 题 更新于 2026/09/18
Self-AttentionQKV注意力机制

简化版

Q、K、V 都由输入经过不同线性变换得到:Q 表示“我要找什么”,K 表示“我能被怎样匹配”,V 表示“真正要汇总的内容”。模型用 QKᵀ/√d_k 计算相关性,经 softmax 得到权重,再对 V 加权求和。

详细版

设输入为 X,计算过程为:

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

具体分四步:

  1. 每个位置的 Q 与所有位置的 K 做点积,得到相关性分数;
  2. 除以 √d_k,防止高维点积过大导致 softmax 饱和;
  3. 对每行做 softmax,得到和为 1 的注意力权重;
  4. 用权重对所有 V 加权求和,形成融合上下文后的表示。

Self-Attention 的 Q、K、V 来自同一序列;Cross-Attention 中,Q 来自当前序列,K、V 来自另一序列。多头注意力则并行执行多组 QKV 投影,让不同头学习不同关系。

完整版教学

一、用检索理解 Q、K、V

注意力可以看成一次可学习的检索。Q 是查询条件,K 是候选信息的索引,V 是候选信息本身。Q 和 K 负责判断“该关注谁”,真正被取回并混合的是 V。

例如“银行旁边有一棵树,它很高”中,“它”的 Q 会倾向匹配“树”的 K,于是“树”对应的 V 以较大权重进入“它”的新表示。匹配规则不是人工指定的,而是训练学到的。

二、矩阵形状与复杂度

若序列长度为 n,QKᵀ 会得到 n×n 的注意力矩阵。第 i 行表示第 i 个位置对所有位置的关注程度,所以标准注意力的时间和显存开销会随序列长度近似平方增长。

独立的 W_Q、W_K、W_V 让模型分别学习“如何发问”“如何被匹配”和“传递什么”。若三者直接共用输入,模型表达不同关系的灵活性会下降。

三、为什么除以 √d_k

Q、K 维度变大时,点积的方差也会增大。过大的分数会让 softmax 接近 one-hot,非最大项梯度接近零。缩放后分数回到稳定区间,训练更平滑。

四、掩码在哪里生效

掩码加在 softmax 之前。不允许关注的位置被加上极大负数,softmax 后权重接近零。Padding Mask 忽略补齐符号;Causal Mask 阻止 Decoder 偷看未来 token。

五、多头注意力的意义

多头注意力把表示投影到多个低维子空间,各头独立计算后再拼接。某些头可能关注局部语法,某些头捕捉长距离指代,还有些头学习格式或位置关系,所以它不是简单重复同一次计算。

注意力权重能帮助观察模型关注了哪些位置,但不能直接等同于严格的因果解释。

六、手算一次缩放点积注意力

设某个 query 与三个 key 的点积为 [4, 2, 0],头维度 d_k=4,缩放后 logits 为 [2, 1, 0]。softmax 约得到 [0.665, 0.245, 0.090];若三个 value 是标量 [10, 0, -10],输出约为 5.75。Q 决定“当前在找什么”,K 决定“各位置提供什么索引”,V 才是按权重汇总的内容。

scores = QK^T / sqrt(d_k) = [2, 1, 0]
weights = softmax(scores) ≈ [0.665, 0.245, 0.090]
output = 0.665*10 + 0.245*0 + 0.090*(-10) ≈ 5.75
对象来自哪里在检索类比中的职责
Q当前位置的隐藏状态投影提出查询
K所有可见位置的投影提供匹配索引
V所有可见位置的投影提供被汇总的内容

缩放项的作用是控制 logits 方差,而不是改变复杂度。若 d_k 增大却不除以 sqrt(d_k),点积幅度通常随维度增长,softmax 更易饱和,非最大位置的梯度会变小。

七、常见误区与追问

  • 误区:Q、K、V 是三份不同的输入 token。 它们通常由同一隐藏状态经过三个可学习投影得到,职责不同但来源相同。
  • 追问:为什么用 QK 点积而不是直接比较 V? K 用于寻址和匹配,V 保留被聚合内容;分离后模型可独立学习“怎么找”和“取什么”。
  • 误区:除以 √d_k 是为了降低计算量。 它只稳定点积分布与 softmax 梯度,不改变矩阵乘法规模。
  • 追问:Self-Attention 与 Cross-Attention 的 QKV 来源有何不同? 前者三者来自同一序列,后者 Q 来自解码端,K/V 来自编码端或外部条件。
  • 追问:注意力权重能否直接解释模型因果决策? 不能;它描述一次信息混合的权重,受多层残差和后续变换影响,不等同于因果归因。

八、加强记忆

把注意力记成一次可微检索:Q 表示当前位置想找什么,K 表示每个位置可按什么被匹配,QK 点积经 √d_k 缩放和 softmax 后得到权重,最后汇总 V 中的内容。多头允许不同投影子空间学习不同关系,掩码则在 softmax 前删掉不允许访问的边。手算时按“投影—打分—缩放—掩码—归一化—加权求和”的顺序,就不会混淆 K 和 V。