Attention:让每个位置选择上下文
直觉版:一边生成,一边“看重点”
Section titled “直觉版:一边生成,一边“看重点””注意力机制解决的问题是:当模型处理一个 token 时,应该重点参考哪些上下文?翻译“it”时可能要看前面的名词,回答问题时要看相关证据。注意力权重就是一组会随输入变化的分数,表示当前 token 对其他 token 的依赖强弱。
行表示正在更新的 token,列表示它关注的上下文 token;颜色越深,权重越高。
| query \ key | 大 | 语言 | 模型 | 关注 | 上下文 | 生成 | 答案 |
|---|---|---|---|---|---|---|---|
| 大 | 1.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| 语言 | 0.25 | 0.75 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| 模型 | 0.12 | 0.38 | 0.50 | 0.00 | 0.00 | 0.00 | 0.00 |
| 关注 | 0.08 | 0.24 | 0.28 | 0.40 | 0.00 | 0.00 | 0.00 |
| 上下文 | 0.05 | 0.18 | 0.22 | 0.25 | 0.30 | 0.00 | 0.00 |
| 生成 | 0.04 | 0.12 | 0.20 | 0.18 | 0.26 | 0.20 | 0.00 |
| 答案 | 0.03 | 0.10 | 0.22 | 0.12 | 0.23 | 0.18 | 0.12 |
Bahdanau 注意力先在序列到序列模型中证明了“动态查找上下文”的价值;Transformer 进一步把自注意力变成核心计算单元,让所有位置可以并行建立依赖关系。
工程版:Q、K、V 与复杂度
Section titled “工程版:Q、K、V 与复杂度”实现上,每个 token 会投影成 Query、Key、Value。Query 和 Key 点积得到相似度,经过 softmax 变成权重,再对 Value 加权求和。多头注意力把这个过程复制多份,让不同头学习语法、指代、位置或任务相关模式。
自注意力的主要代价是序列长度平方级:长度翻倍,注意力矩阵大约变为四倍。因此推理系统会使用 KV cache 复用历史 Key/Value;长上下文模型会结合稀疏注意力、分块、滑窗或更高效 kernel。理解这个瓶颈有助于解释为什么上下文窗口很贵。
本文引用论文
- Attention Is All You Need
Transformer 架构的奠基之作。作者完全用注意力机制替代了 RNN/CNN,提出多头自注意力与位置编码, 在机器翻译任务上大幅超越此前所有模型。今天所有主流 LLM 的底层架构都源于此论文。
- Neural Machine Translation by Jointly Learning to Align and Translate
注意力机制的开山之作(在 Transformer 之前)。作者发现 Seq2Seq 的固定长度瓶颈向量限制了翻译 质量,提出让解码器在生成每个词时都能"回顾"编码器的所有隐状态,动态分配注意力权重。 这个思想直接演化为 Transformer 的自注意力。