理解 Attention:Query、Key、Value
从一个具体句子开始,理解信息如何在 Token 之间流动。
可复习 · 原问题出处待确认本章材料
重点
- Attention 让每个位置的向量吸收其他位置的信息。 视频的例子是 “a fluffy blue creature”:经过 Attention,creature 的向量带上了 fluffy 和 blue 的含义。
- 每个 Token 的向量分别乘以三组学出来的矩阵,得到 Query、Key、Value。
- Query 和 Key 的点积衡量两个位置的相关程度。 除以 √dk 之后用 softmax 转成加起来等于 1 的权重。
- 用这些权重对 Value 加权求和,得到的是对原向量的更新量,再加回原来的向量上。
- GPT 这类模型使用因果掩码,并行运行多个注意力头。 因果掩码让每个位置只能看到它前面的位置;GPT-3 每一层有 96 个注意力头。
难点
- 注意力权重不是准确率,也不是“下一个词的概率”。 它只表示这一次信息按什么比例混合。
- Q、K、V 都是数字向量,不是三个文本字段。 图书馆的比喻只是帮你区分它们的作用。
- 不能保证每个注意力头都学到一种能说出名字的关系。
- Attention 只负责让位置之间交换信息。 模型的大部分参数在 Attention 之外的 MLP 层里,那是下一章的内容。
基础:Token → Embedding → Attention
Token 是分词器切出的文本单位,不一定等于完整单词。Embedding 把 Token ID 映射成向量,让模型可以进行数值计算。经过 Attention,某个位置的表示可以吸收其他位置的信息,带上上下文。
下面沿着你截图中的 What、Why、How 三个问题理解 Q、K、V。
1. What:Q、K、V 分别是什么?
先用一个比喻:在图书馆找书。
| 概念 | 中文 | 作用 | 图书馆类比 |
|---|---|---|---|
| Query(Q) | 查询向量 | 我正在寻找什么信息? | 你的搜索需求 |
| Key(K) | 键向量 | 我有哪些可用于匹配的特征? | 书籍的检索标签 |
| Value(V) | 值向量 | 被关注后,实际传递什么信息? | 书籍提供的内容 |
注意:Q、K、V 都是数字向量,不是三个真实的文本字段。这个比喻帮助区分它们的作用,并不表示模型真的在搜索图书馆。
2. Why:为什么需要三个?
看一个具体句子:
The animal was tired because it had been running.
当模型处理 it 时,需要结合前面的内容。在这个句子里,it 指向 animal。我们用这一关系说明“从其他位置获取信息”的直觉。
这里最关键的区别:
- Q 和 K:用于计算两个位置之间的匹配分数。
- V:匹配之后,实际被加权组合的信息。
为什么不直接比较 Embedding?不同的投影矩阵让模型能够分别学习“怎样匹配”和“传递什么”,不必将二者绑定在同一种表示上。
3. How:模型到底怎么计算?
先从分数开始,观察它如何影响信息的混合比例。
完整过程是:
- 每个位置的输入向量经过三组可学习的线性投影,得到 Q、K、V。
- 当前位置的 Q 与可见位置的 K 做点积,并除以缩放因子。
- 用 Softmax 将分数转换为和为 1 的权重。
- 按这些权重对 V 加权求和,得到这个注意力头的输出。
数学上写作:
这里每行表示一个 Token,M 是掩码。因果注意力会屏蔽未来位置。暂时不需要记住公式,先记住:Q 和 K 决定关注多少,权重与 V 决定组合什么信息。 注意力权重不是模型准确率。
深入理解:自己调整二维 Query,查看点积和因果掩码
1. 选择正在接收信息的位置
2. 调整这个位置的 Query
选中位置提供 Q;每一行提供 K 和 V。滑块直接修改示例 Q。
3. 匹配分数 → 权重 → Value
输出 = Σ 权重 × Value
权重总和为 1;它不是预测准确率。
这里的 Q/K/V 全部是人工设置的二维教学向量,没有模拟训练、投影矩阵或位置编码。单头结果还需要经过后续的输出投影、残差等步骤,并不是整个 Transformer 的最终输出。
4. Multi-head Attention 又是什么?
- Single-head Attention:用一组 Q、K、V 投影计算信息之间的关系。
- Multi-head Attention:用多组不同的投影并行计算,再组合各头输出并做输出投影。
不同的 Head 可能对不同关系产生响应,但这些行为是在训练中学到的,不保证每个 Head 都有固定、可命名的功能。
来源与原始问题
本文根据你提供的三张 GPT 回答截图整理,并补充了计算边界。关系图、滑块和测验为重新实现的组件,不是从原对话导出的源码。完整历史和未出现在截图中的回答没有导入。
原来的问题见「复习」页,出处待确认。
参考:3Blue1Brown · Attention in transformers · Attention Is All You Need。