
最近正好有空,打算抽时间复盘总结一下这些年零零散散学习的AI知识.
在上一章中,我们知道 Transformer 做了三件事:
但这里有一个关键问题:
模型到底是怎么“回头看”的?
人类阅读一句话时,其实会自动做一件事,把重要信息记住,把不重要信息忽略。
例如:
小明昨天去北京出差,今天他回来了。
我们几乎不会犹豫:
“他” = 小明
因为我们的大脑自动做了“关联”。
Transformer 的 Attention,本质上就是在模拟这件事。
我们举一个普通生活中的例子
假设我们在图书馆找一本书:
《Java 并发编程实战》
我们会怎么做?
我们不会把整个图书馆的书都认真读一遍。
我们会:
然后我们会发现,某一排书架上面有相关类别.
于是我们集中注意力,主要从那一排书架上去找这本书。
Attention 其实做的事情完全一样,它不是“平均看所有信息”,而是:
给每一段信息分配不同的重要性权重
我们继续用经典例子:
小明昨天去北京出差,今天他回来了。
现在模型要预测:
“他”到底是谁?
模型会做一件事情:
它会把前面的 Token 全部拿出来:
小明
昨天
去
北京
出差
今天然后问一个问题:
哪些 Token 和“他”最相关?
我们用人类方式模拟一下:
Token | 相关性 |
|---|---|
小明 | ⭐⭐⭐⭐⭐ |
昨天 | ⭐⭐ |
去 | ⭐ |
北京 | ⭐⭐ |
出差 | ⭐⭐ |
今天 | ⭐ |
模型不会“理解”,但它会做一件类似的事:
计算相关性分数
Attention 本质只有一句话:
当前 Token 会去“查询”前面所有 Token,并决定哪些最重要。
注意这句话:
核心就是下面这张图:

现在我们终于可以引入 QKV,但是我们不从数学角度去理解。
我们想象一个会议.每个人都有三种属性:
每个人都会说:
我是谁,我做什么的
例如:
现在你问一句话:
谁懂 Redis?
这个问题就是 Query。
如果匹配成功:
数据库专家站起来回答
他说的内容就是 Value。
Query 去匹配 Key,匹配成功后拿 Value
现在我们回到刚才那句话:
小明昨天去北京出差,今天他回来了。
模型内部其实在做如下步骤:
例如:
Token | Q | K | V |
|---|---|---|---|
小明 | 查询能力 | 身份标签 | 信息内容 |
北京 | 查询能力 | 身份标签 | 信息内容 |
(不用管具体维度)
“他”会去问:
谁最像我在指代的人?
于是:
Token | 匹配分数 |
|---|---|
小明 | 0.92 |
北京 | 0.31 |
昨天 | 0.10 |
模型不会只选一个,而是:
把所有信息按权重混合
结果:
0.92 × 小明
0.31 × 北京
0.10 × 昨天最终得到:
“他”的语义 = 小明
如果只记一句话:
Attention = 给所有历史信息打分 + 加权融合
在 Transformer 出现之前,主流模型是:
它们的问题是:
信息会“越传越弱”
例如:
一句很长的话:
我昨天在北京的一家咖啡店看到一个穿红衣服的程序员,他……
模型容易忘掉:
“我昨天”
Attention 解决了这个问题:
它每一步都可以直接回看全部历史信息
Attention 做了一件革命性的事情:
❌ 不再“顺序记忆” ✅ 变成“全局检索”
你可以这样理解:
以前模型是:
纯用脑子记(容易忘)
现在模型是:
记下了小本本,可以随时翻整本书(随时查)
你可以把它理解成:
一个问题,有多个“专家同时看”
例如下面这句话:
我在银行存钱
不同头会关注:
所以模型不是一个人在思考,而是:
多个“注意力专家”在并行工作
这一章最重要的内容只有四点:
给每个 Token 分配“重要性权重”
当前 Token 会去“查询”前面所有 Token,并决定哪些最重要。
因为它让模型可以“随时回看所有上下文”,而不是逐步遗忘。
下一章我们会讲Transformer另外一个非常核心的模块:
既然 Attention 已经这么强了,为什么还需要 Transformer 的FFN“前馈神经网络”?