真实面经题目 · 原创解析
Transformer 中 Q、K、V 分别表示什么?
Transformer 中的 Q、K、V 分别是 Query、Key、Value,是注意力机制对输入向量做三组线性变换得到的表示。Q 用来发起查询,K 用来被匹配,Q 与 K 的相似度决定关注权重,V 承载最终被加权汇聚的信息。
真实面经题目 · 原创解析
Transformer 中的 Q、K、V 分别是 Query、Key、Value,是注意力机制对输入向量做三组线性变换得到的表示。Q 用来发起查询,K 用来被匹配,Q 与 K 的相似度决定关注权重,V 承载最终被加权汇聚的信息。
可以把自注意力解释成“每个 token 向其他 token 查询信息”。输入 token 的隐藏向量会分别乘以三组参数矩阵得到 Q、K、V。某个位置的 Q 会和所有位置的 K 做点积,得到它对其他位置的相关性分数;分数经过缩放和 softmax 后变成注意力权重;这些权重再去加权求和所有位置的 V,形成该位置融合上下文后的新表示。Q 决定我在找什么,K 决定我能被什么查询匹配,V 决定真正传递什么内容。多头注意力则是用多组 Q、K、V 在不同子空间学习不同关系。
Transformer 没有循环神经网络那种逐步传递隐藏状态的结构,它需要让每个 token 直接感知上下文中其他 token。自注意力就是为每个位置动态计算一组权重,决定它应该从哪些位置吸收信息。Q、K、V 是这个机制的三种角色划分,让模型能够把“匹配关系”和“传递内容”分开学习,而不是用同一个向量同时承担所有功能。
Q 来自当前 token 的隐藏表示经过线性变换,表达这个位置当前想寻找什么信息。比如在语言理解中,一个代词位置的 Q 可能更容易去匹配前文实体;在生成任务中,当前位置的 Q 会根据已有上下文寻找对预测下一个 token 有帮助的信息。Q 本身不直接输出内容,它的主要作用是和 K 计算相似度,决定注意力分布。
K 也是由每个 token 的隐藏表示线性变换得到,作用是给其他位置的 Q 提供可匹配的索引。Q 和 K 的点积越大,说明查询位置越应该关注这个被匹配位置。为了避免维度较大时点积值过大,Transformer 会除以 Key 维度的平方根,再做 softmax。K 的质量直接影响模型能否找到正确的依赖关系。
V 承载最终要被汇聚的信息。注意力权重计算出来后,会作用在所有位置的 V 上,得到加权和作为当前 token 的上下文表示。这个设计很关键:K 负责参与匹配,V 负责提供内容,两者虽然来自同一个输入,但经过不同参数矩阵后可以学习不同特征。模型可能用某些维度判断关系,用另一些维度传递语义、句法或位置信息。
单组 Q、K、V 只能在一个表示子空间里计算关系,多头注意力会并行使用多组参数,把隐藏向量投影到多个子空间。不同头可以学习不同模式,例如局部邻近、长距离依赖、实体指代、语法结构或格式边界。每个头得到自己的加权 V,再拼接并线性变换回模型维度。多头不是简单重复,而是提高关系表达能力和信息组合能力。
维度越大,点积结果的方差通常越大,softmax 容易变得过于尖锐,梯度也更不稳定。缩放可以让分数范围更平稳,训练更容易。
不是。它们通常是输入隐藏向量分别乘以不同的可训练矩阵得到的投影表示。训练会自动学习怎样投影更适合匹配和内容汇聚。
自注意力的 Q、K、V 来自同一序列;交叉注意力的 Q 来自当前序列,K 和 V 来自另一个序列或外部上下文,常见于编码器到解码器的信息读取。
这是职责分离。K 用于决定哪个位置相关,V 用于提供被读取的内容。分开后模型可以用不同特征判断关系和表达内容,灵活性更高。