Memories
QKV 在 Transformer Attention 中的作用
在 Transformer 的 Attention 机制中,输入的 hidden states 会通过三组不同的权重矩阵,分别投影成 Q(Query)、K(Key) 和 V(Value):
Q = X × Wq
K = X × Wk
V = X × Wv
随后 Attention 的核心计算可以简化为:
Attention = softmax(Q × Kᵀ) × V
这里最重要的一点是:Q、K、V 并不是人类提前定义好语义的三类向量,而是模型在训练过程中学出来的三种不同投影。
它们之所以会发挥不同作用,是因为它们在计算公式中的位置不同、接受到的训练信号不同,最终被训练成了不同功能:
- Q 和 K 决定“看谁”;
- V 决定“看完之后拿走什么信息”。
1. Q、K、V 分别代表什么?
| 向量 | 参与的计算位置 | 功能理解 |
|---|---|---|
| Q / Query | 拿去和 K 做相似度匹配 | 当前 token 想找什么信息 |
| K / Key | 被 Q 匹配 | 每个历史 token 有什么可被匹配的特征 |
| V / Value | 被 Attention 权重加权求和 | 如果这个 token 被关注,它应该传递什么信息 |
换句话说:
Q 像是在提出问题,K 像是在暴露标签,V 像是在提供内容。
Q 和 K 的点积决定 attention score:
Attention scores = Q × Kᵀ
如果某个 token 的 Q 和另一个 token 的 K 很匹配,那么模型就会认为:当前 token 应该更多关注那个历史 token。
但真正被传递到下一层的信息不是 K,而是 V。
2. 为什么三组权重会学出不同功能?
因为训练过程中,三组权重承受的“训练压力”不同。
| 权重 | 训练压力 |
|---|---|
| Wq | 当前 token 应该生成什么“搜索请求”? |
| Wk | 历史 token 应该暴露什么“可搜索标签”?也就是决定自己该不该被看到。 |
| Wv | 历史 token 被选中后,应该传递什么“内容”?也就是决定被看到之后,别人应该从自己这里拿走什么信息。 |
更直观地说:
- Wq 和 Wk 的任务:让正确的 tokens 互相匹配。
例如当前 token 需要找主语、找时间、找因果关系、找前文定义,那么 Q 和 K 的匹配分数就要更高。 -
Wv 的任务:把被关注 token 中真正有用的信息传递过去。
例如被关注的是一个名词,那么 V 里可能包含它的语义、单复数、上下文角色等信息。
所以并不是 Q/K/V 天然有语义,而是模型通过大量训练,学会了让三组投影分别承担不同功能。
3. 一个例子:代词指代
假设输入句子是:
The animal didn't cross the street because it was tired.
当模型处理到 it 这个 token 时,它需要判断:it 到底指代谁?
这里有两个可能的历史 token:
- animal
- street
在这个过程中,可以这样理解:
Q:当前 token 想找什么?
对于 it 来说,它的 Q 可能表达的是:
我在找一个前文出现过、可以被代词指代的主体。
K:历史 token 有什么可被匹配的特征?
对于 animal 来说,它的 K 可能表达的是:
我是一个可以被代词指代的主体,而且语义上可以 tired。
对于 street 来说,它的 K 可能表达的是:
我是一个名词,但语义上不太像会 tired 的东西。
于是模型会得到更高的匹配分数:
Q_it · K_animal > Q_it · K_street
因此,模型会让 it 更多关注 animal,而不是 street。
4. 被关注之后,传递的是 V,不是 K
模型关注 animal 之后,真正传递给 it 的信息并不是 animal 的 K,而是 animal 的 V。
animal 的 V 里可能包含:
- animal 的语义信息;
- 它是单数还是复数;
- 它是否可以和 tired 这个状态兼容;
- 它在前文中的上下文角色;
- 其他与当前预测相关的信息。
所以可以总结为:
K 决定:我该不该被看到?
V 决定:我被看到之后,别人应该拿走什么信息?
5. 用搜索引擎来类比
可以把 Attention 类比成搜索引擎:
| Attention 机制 | 搜索引擎类比 |
|---|---|
| Q / Query | 用户输入的搜索词 |
| K / Key | 每篇文章的标题、标签、关键词 |
| V / Value | 文章正文内容 |
| Q × Kᵀ | 搜索匹配分数 |
| softmax(Q × Kᵀ) × V | 按相关性加权读取文章内容 |
也就是说:
- Q 负责提出搜索需求;
- K 负责判断哪些内容和这个需求匹配;
- V 负责在匹配成功后,真正把信息传递出去。
6. 总结
Q/K/V 的本质,是 Transformer 在训练中学出来的三组不同投影。
它们不是天然有语义,而是因为在 Attention 公式中的位置不同,最终被训练成了不同功能:
Q:当前 token 想找什么?
K:历史 token 有什么可被匹配的标签?
V:历史 token 被关注后应该传递什么内容?
最核心的一句话是:
Q 和 K 决定 attention 关注谁,V 决定被关注之后传递什么信息。
Discover more from Christina's World
Subscribe to get the latest posts sent to your email.

