Transformer 为什么要把一个词向量变成 Query、Key 和 Value
解释 Query、Key、Value 三种表示各自解决什么问题,以及它们如何共同完成自注意力的信息读取。
相关工具
一个词为什么需要三种身份
Self-Attention 的核心问题是:处理当前位置时,应该从序列中的哪些位置读取信息,以及读取回来多少。一个词向量只保留一份表示,很难同时表达“我正在寻找什么”“我能被怎样匹配”和“被选中后要提供什么内容”。因此,Transformer 会把每个输入向量分别投影成 Query、Key 和 Value。
这三种向量并不是三个不同的词,而是同一个位置在一次注意力计算中的三种角色。Query 像提问,Key 像索引,Value 像真正被取回的内容。模型通过 Query 和 Key 判断相关性,再用这个相关性去加权 Value。

同一个输入位置经过不同投影后,分别参与提问、匹配和内容汇总。
Q、K、V 是怎样生成的
设输入序列的表示矩阵为 X,每个位置的向量宽度是 d_model。模型准备三组可学习的权重矩阵,分别把 X 投影成 Q、K、V。三组矩阵在训练中不断调整,因此模型可以学会什么样的提问、匹配和信息表达更有用。
在一个注意力头中,Q、K、V 的维度通常小于 d_model。这样做可以降低单头计算量,也为多头注意力把表示分到不同子空间提供方便。重要的是,投影不是简单复制输入,而是从同一份上下文表示中提取适合当前角色的特征。

同一份序列表示分别乘以三组权重矩阵,得到三种注意力输入。
Query 和 Key 如何决定关注程度
对于某个目标位置,模型会拿它的 Query 与所有位置的 Key 做相似度计算。若两个向量在当前子空间中更匹配,相关性分数就更高;如果不太匹配,分数就更低。这样,一个位置就能得到一整行对其他位置的关注分数。
自注意力的特殊之处在于,Query 和 Key 都来自同一序列,所以当前位置既可以寻找其他词,也可以被其他位置寻找。不同位置产生不同 Query,同一个位置的 Key 也会被多次比较,最终形成一张位置之间的关系矩阵。
在解码器中,因果掩码会先限制可见范围,再进行有效的分数归一化。也就是说,相关性高并不代表一定能读取,未来位置即使相似,也会因为掩码而被排除。
Value 为什么不是直接用 Key
Key 的主要工作是帮助匹配,它回答“这个位置和当前问题相关吗”。Value 才是被加权汇总的内容,回答“如果相关,应该把什么信息带回来”。把两者分开,模型就可以使用一种特征判断相关性,再用另一种特征传递语义内容。
如果直接把 Key 当作输出内容,匹配空间和信息空间会被绑在一起,表达方式会受到限制。Q、K、V 分工后,注意力既能灵活决定关注对象,也能从被选位置提取不同形式的表示。
Softmax 后如何汇总 Value
得到 Q 和 K 的相关性分数后,模型通常会先除以根号 d_k,避免向量维度增大时点积数值过大,再通过 Softmax 把分数变成权重。每个 Query 对应一组权重,这些权重在可见位置上加起来等于 1。
接着,用这组权重分别乘上各位置的 Value 并相加,得到当前位置新的注意力表示。相关位置的 Value 贡献更大,不相关位置的贡献更小。最终输出不是某一个位置的复制,而是多个位置内容的加权组合。

Query 与 Key 产生分数,Softmax 形成权重,再对 Value 做加权汇总。
为什么同一序列可以同时产生所有 Q、K、V
Q、K、V 是对整批输入矩阵分别做线性变换,因此可以用矩阵乘法一次生成所有位置的表示。之后,Q 和 K 的矩阵乘法会同时得到所有位置之间的相关性分数,再按行完成 Softmax 和 Value 汇总。
这就是 Transformer 可以并行处理序列的重要原因之一。它并不是逐个词询问和回答,而是把所有位置的 Query、Key、Value 组织成矩阵,在一次计算中得到整张关系图。解码器的因果掩码只改变可见范围,不改变这种矩阵计算方式。
Q、K、V 在自注意力和交叉注意力中的区别
自注意力中,Q、K、V 都来自同一侧的序列。编码器自注意力三者来自源序列,解码器自注意力三者来自目标前缀。交叉注意力则不同:Q 来自解码器,K 和 V 来自编码器输出。
角色名称没有改变,输入来源改变了。无论是哪种注意力,Query 都负责提出当前问题,Key 都负责被匹配,Value 都负责提供被汇总的内容。记住角色比死记某一张结构图更可靠。
用一条链路记住 QKV
可以把 Self-Attention 记成五步:输入表示分别投影成 Q、K、V;Q 与 K 比较得到相关性;缩放并应用掩码;Softmax 转成可见位置上的权重;权重汇总 Value 形成新的表示。
其中,Q 和 K 决定从哪里读取,V 决定读回什么。注意力的输出因此不是单纯的相似度,也不是某个词的原样复制,而是根据当前 Query 动态组合出来的上下文。
常见问题
Query、Key、Value 是三个不同的词吗?
不是。它们是同一输入表示经过三组可学习矩阵投影后形成的三种角色,用于提问、匹配和内容汇总。
为什么 Value 不直接参与相似度计算?
Key 更适合承担匹配任务,Value 更适合携带要传递的内容。分开后,模型可以用一套特征判断相关性,用另一套特征表达语义。
交叉注意力中的 QKV 规则变了吗?
规则没有变,变化的是来源。交叉注意力的 Query 来自解码器,Key 和 Value 来自编码器输出;自注意力则来自同一侧序列。