大模型的「注意力机制」到底是啥?
不堆公式、不绕弯子。用类比、流程图、和三个可交互演示,把注意力机制从名词变成你脑子里的画面。
一、一句话答案
注意力机制(Attention)是一种「动态加权平均」的方法: 对当前正在处理的词,先算它和所有词(包括自己)的相关度,再把相关度变成一组权重, 最后按权重把每个词的信息融合成这个新词的表示。
简单说:读一句话时,每个词都能「转头看全场」,自己决定该重点看谁、看多少 —— 这就是 Attention 的「注意」二字。
二、为什么需要它:RNN 的痛点
在 Transformer(2017)之前,序列建模靠 RNN/LSTM:一个词一个词地读,把「记忆」塞进一个固定大小的隐藏状态。
❌ 老办法 RNN 的问题
- 长距离遗忘:句首的信息要一路传递,越往后越淡。
- 必须串行:第 t 步必须等第 t-1 步,没法并行,训练慢。
- 感受野有限:每个词只看「上一个状态」,全局关系难捕捉。
✅ 注意力机制的突破
- 一步看全局:每个词直接和所有词算相关度,远近一视同仁。
- 天然并行:所有词的注意力可同时算,GPU 吃得饱。
- 可解释:权重矩阵就是「谁看了谁」的地图。
三、形象直觉:一场「检索 + 取内容」
注意力干的事,和人类查资料一模一样 —— 用三个角色理解它(更细的 Q/K/V 拆解见同目录 qkv-explained.html):
🔎 Query 查询
「我当前想找些什么信息?」—— 对应正在处理的那个词发出的需求。
🏷️ Key 键
「每个词贴着什么标签,方便被匹配?」—— 用来和 Query 算相似度。
📦 Value 值
「每个词真正携带的内容」—— 按匹配度高低把内容加权取回。
四、核心原理:相似度 = 相关性 = 权重
注意力的「灵魂」只有一句话:谁和 Query 越像(相似度高),谁就贡献越多。
「相似度」在 Transformer 里最常用的就是点积(两个向量越同向,点积越大):
五、核心实现:四步法(Scaled Dot-Product Attention)
Transformer 用的标准形式,经典「缩放点积注意力」,就四步:
六、交互1:注意力热力图(点词看它「在看谁」)
下面是一句中文。点任意一个橙色 Query 词,下方会显示它对所有词的注意力权重(柱状图 + 句子高亮)。
句子:小明 打 了 小红 , 因为 他 生气
七、交互2:分步计算器(亲手算一遍)
选一个 Query 词,看它如何一步步得到「融合全场后的新向量」。维度 d=3,句子 4 个词。
八、交互3:Softmax 温度(注意力有多「专注」)
同一组原始分数,调温度 T:T 大 → 权重平均、雨露均沾;T 小 → 权重集中、只盯最相关的。这解释了「注意力该如何聚焦」。
九、多头注意力(Multi-Head Attention)
单个注意力只能学一种「关注模式」。Transformer 把 Q/K/V 拆成 h 组(头),并行算 h 次注意力,各自关注不同子空间(语法 / 语义 / 指代 …),最后拼接。
十、在 Transformer 里处在什么位置
十一、它到底解决了什么问题(收口)
- 长距离依赖:句首和句尾直接相连,不再逐层衰减。
- 全局上下文:每个词都能融合全句信息,不是只看局部。
- 并行计算:注意力矩阵可一次性算完,训练飞快。
- 可解释 + 可学:注意力权重是「看了谁」的显式地图,且由数据自动学习。
十二、小结速记
| 问题 | 答案 |
|---|---|
| 注意力是啥? | 动态加权平均:按相关度融合所有词的信息 |
| 核心原理? | 相似度(点积)→ softmax 权重 → 加权求和 Value |
| 怎么实现? | Q·Kᵀ → ÷√dₖ → softmax → ×V |
| 为啥要缩放? | 点积随维度增大,softmax 会饱和 → 除以 √dₖ 稳住梯度 |
| 多头干嘛? | 并行学多种「关注模式」(语法/语义/指代…) |
| 解决啥问题? | 长依赖、全局上下文、并行、可解释 |
qkv-explained.html(深入 Q/K/V)、activation-function-explained.html(激活函数)、transformer-explained.html(整体架构)。