transformer 注意力机制解析

一、例子句子

我们用一句经典的歧义句:

复制代码
小明 打了 小红 因为 他 生气了

问题:

复制代码
“他” 指谁?

人类很容易理解:

复制代码
他 = 小明

Transformer 就是通过 Attention 自动学会这个关系。


二、Step1:分词(Tokenization)

模型首先会分词:

复制代码
[小明] [打了] [小红] [因为] [他] [生气了]

每个词叫一个 token。


三、Step2:查词表(Vocabulary)

模型有一个词表,例如:

ID 词
1 小明
2 打了
3 小红
4 因为
5 他
6 生气了

句子就变成:

复制代码
[1,2,3,4,5,6]

四、Step3:查 Embedding

模型有一个 Embedding 表:

词 向量
小明 0.9 , 0.1
打了 0.5 , 0.4
小红 0.8 , 0.2
因为 0.3 , 0.7
他 0.7 , 0.3
生气了 0.4 , 0.9

句子变成向量:

复制代码
小明     [0.9 ,0.1]
打了     [0.5 ,0.4]
小红     [0.8 ,0.2]
因为     [0.3 ,0.7]
他       [0.7 ,0.3]
生气了   [0.4 ,0.9]

五、Step4:生成 Q K V

Transformer 会生成:

复制代码
Query
Key
Value

公式:

复制代码
Q = XWq
K = XWk
V = XWv

为了简单,假设:

复制代码
Q = embedding
K = embedding
V = embedding

六、Step5:计算 Attention(重点)

我们重点看:

复制代码
他

模型要判断:

复制代码
他 和 谁最相关?

公式:

复制代码
score = Q · K

1️⃣ 他 → 小明

复制代码
Q他 = [0.7 ,0.3]
K小明 = [0.9 ,0.1]

score =
0.7×0.9 + 0.3×0.1
= 0.63 + 0.03
= 0.66

2️⃣ 他 → 打了

复制代码
[0.7,0.3] · [0.5,0.4]

= 0.35 + 0.12
= 0.47

3️⃣ 他 → 小红

复制代码
[0.7,0.3] · [0.8,0.2]

= 0.56 + 0.06
= 0.62

4️⃣ 他 → 因为

复制代码
[0.7,0.3] · [0.3,0.7]

= 0.21 + 0.21
= 0.42

5️⃣ 他 → 生气了

复制代码
[0.7,0.3] · [0.4,0.9]

= 0.28 + 0.27
= 0.55

七、Step6:得到 Attention Score

词 score
小明 0.66
小红 0.62
生气了 0.55
打了 0.47
因为 0.42

八、Step7:Softmax 归一化

Softmax 后:

词 权重
小明 0.28
小红 0.24
生气了 0.20
打了 0.15
因为 0.13

注意力图:

复制代码
            他
         / / |  \
      小明 小红 生气了 ...
      0.28 0.24 0.20

九、Step8:加权 Value

Transformer 会把这些信息融合:

复制代码
Output = Σ attention × V

例如:

复制代码
0.28 × V小明
0.24 × V小红
0.20 × V生气了
...

求和得到新的:

复制代码
他'

新的向量包含:

复制代码
小明 + 小红 + 生气

但:

复制代码
小明权重最大

所以模型会学到:

复制代码
他 ≈ 小明

十、为什么模型能学会这个?

因为训练数据中会不断出现:

复制代码
小明 打了 小红 因为 他 生气了

正确标签:

复制代码
他 = 小明

训练时模型会调整:

复制代码
Wq
Wk
Wv

让:

复制代码
score(他→小明) 最大

十一、Attention 的本质

Attention 本质就是:

复制代码
谁和谁最相关?

用数学表达:

复制代码
相似度 = 向量点积

十二、Transformer 最强的地方

每个词都会做一遍:

复制代码
词 → 关注整个句子

例如:

复制代码
小明 打了 小红 因为 他 生气了

注意力矩阵:

复制代码
        小明 打了 小红 因为 他 生气
小明     •
打了     •
小红     •
因为     •
他      → 小明
生气     → 他

十三、一句话彻底理解 Attention

Attention 就是:

复制代码
每个词问:

我应该关注谁?

然后:

复制代码
关注越多 → 信息贡献越大

相关推荐
Old Uncle Tom1 小时前
LLM 替代 SAST?Claude Code 安全审查工具的设计取舍与工程启示
人工智能·安全·软件工程
叁两1 小时前
别再手动刷行业信息了,你可能需要一个"行业研究员"
人工智能
2601_965449081 小时前
AI视频制作:做系列历史地图视频想固定音色,AI 音色克隆的流程实测
人工智能·音视频
2601_962071002 小时前
从OpenRouter到Crazyrouter:Claude Code三处改动
人工智能·ai
阿里云大数据AI技术2 小时前
云栖实录|从代码上下文到千亿级文档:Qoder × 阿里云 Elasticsearch 落地生产级Agent向量检索
人工智能·elasticsearch
汤姆宝库2 小时前
具身智能深拆:VLA、世界模型与数据飞轮
开发语言·人工智能·php
鲜于言悠9052 小时前
Jev爆火:不生成文字,直接输出概率的决策模型
人工智能
美团技术团队2 小时前
如何在“不能出错”的系统里使用 AI Coding?分布式存储实践与边界
人工智能
jerrywus2 小时前
Skill不就是prompt吗?我拿它做了一段南京新街口微缩景观动画
chatgpt·agent·claude
枫叶丹42 小时前
AI 提出科学假设之后:从数据筛选到实验验证
人工智能·chatgpt·开源·agent·codex