返回首页

文章详情

2026.04.18

2 分钟阅读

llm / transformer / attention / foundation

Q、K、V:Attention 如何把“找谁”和“拿什么”分开

用检索视角解释 Query、Key、Value 的职责、线性投影、缩放与掩码,并澄清它们不是固定语义标签。

铺在深色工作台上的 Transformer 架构草图和代码稿纸

从 Token 到 Transformer · 07 / 10

Q、K、V 常被类比成“问题、目录和正文”。这个类比能帮助入门,但它会留下一个疑问:同一个 token 为什么同时拥有三份表示?

答案在于 Attention 要解决两个不同问题:哪些位置值得连接,以及连接后传递什么内容。 如果匹配和内容共用同一份表示,模型很难独立调整“容易被找到”和“找到后提供什么”。Q、K、V 就是把这两件事拆开。

三个向量都从当前表示投影而来

在 self-attention 中,输入矩阵记作 X。模型用三组可训练参数生成:

text
Q = XW_Q
K = XW_K
V = XW_V

W_QW_KW_V 会随着训练更新。Q、K、V 不是 tokenizer 提前准备好的字段,也不是三个独立词表;它们是同一份 hidden state 在不同线性子空间里的投影。

这意味着同一个 token 在不同层、不同上下文和不同注意力头中,会得到不同的 Q、K、V。

Query:当前位置在寻找什么

Query 表达的是当前位置用于匹配的特征。它并不一定对应一句可以翻译成人话的问题。

在“银行批准了贷款,因为它评估了风险”中,“它”这个位置的 Query 可能逐渐学会寻找一个合适的机构实体;在代码里,某个变量引用的 Query 可能寻找作用域中可见的定义。

“可能”很重要。我们能通过实验观察某些头的规律,却不能预先规定每一维代表主语、实体或语法关系。

Key:这个位置如何被匹配

每个位置都提供 Key,与其他位置的 Query 做点积。点积越大,说明在当前投影空间中越匹配。

Key 更像可检索特征,而不是位置本身的全部内容。一个 token 可以用某些特征回答“我是不是你要找的实体”,同时保留另一组信息作为 Value 传递。

这种分离让模型能够学习:某些线索适合决定连接,另一些线索适合进入结果。

Value:匹配成功后传递什么

Attention 权重最终作用在 Value 上。当前位置不会把 Key 本身拿回来,而是用权重混合各位置的 Value。

继续用检索类比:Query 和 Key 决定搜索排名,Value 是搜索结果真正携带的内容。排名信息与返回内容相关,但不必相同。

输出可以写成:

text
scores  = QK^T / sqrt(d_k)
weights = softmax(scores + mask)
output  = weights V

三行分别对应匹配、规则约束与内容汇聚。

为什么要除以根号 d

当向量维度变大时,点积的绝对值往往也会变大。过大的分数进入 softmax 后容易变得极端,梯度随之不稳定。

除以 sqrt(d_k) 是一个尺度校正,让不同维度下的分数保持在更适合训练的范围。这不是为了改变排名语义,而是让优化过程更平稳。

Q、K、V 不是固定角色表

把某个注意力头命名为“指代头”或“标点头”很诱人,但同一个头可能在不同输入中承担不同功能,模型也会通过残差和后续层组合许多微弱信号。

更稳妥的理解是:Q、K、V 提供了一种通用机制,让网络自己学习匹配空间和内容空间。人类可以在训练后分析出现了哪些模式,却不应该在训练前把三个矩阵解释成固定语义字段。

Cross-attention 中的来源会变化

Self-attention 的 Q、K、V 来自同一序列。Cross-attention 中,Query 通常来自正在更新的一侧,Key 和 Value 来自另一侧。

例如,在编码器-解码器翻译模型中,解码器用当前输出表示生成 Query,再到编码器表示中寻找 Key 并读取 Value。这个结构把“我现在需要什么”与“源文本能提供什么”连接起来。

小结

Q、K、V 的价值不在三个字母,而在职责分离:

  • Query 表达当前位置用什么特征发起匹配;
  • Key 表达其他位置用什么特征接受匹配;
  • Value 表达匹配后真正传递的内容。

一组 Q、K、V 已经能完成一次 Attention。下一篇要解释为什么 Transformer 还要并行使用多组投影,也就是多头注意力。

延伸阅读

    Q、K、V:Attention 如何把“找谁”和“拿什么”分开