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 就是:

复制代码
每个词问:

我应该关注谁?

然后:

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

相关推荐
司南-704911 小时前
opencode环境搭 并 配置自定义BASE URL
linux·运维·服务器·人工智能
做个文艺程序员11 小时前
Claude Code vs ChatGPT Codex 深度对比:2026 年哪款 AI 编程工具更适合你?
人工智能·chatgpt
甲维斯11 小时前
智谱CodingPlan老套餐绝版了,全网token收拢!
人工智能·ai编程
淘矿人11 小时前
Claude辅助算法设计与优化
人工智能·python·算法·microsoft·github·bug·pygame
柴猫°11 小时前
离散图扩散模型中的转移公式推导
人工智能·线性代数·机器学习
m0_4665252911 小时前
绿盟科技发布2025年年报: 收入稳中有升,亏损大幅收窄,现金流持续为正
人工智能·科技
wayz1111 小时前
Day 10:集成学习进阶(Boosting: AdaBoost, GBDT)
算法·机器学习·集成学习·boosting
墨染天姬11 小时前
【AI】图路由 AI 记忆引擎M-FLow
人工智能
nuoxin11411 小时前
CH6001FN/BW-富利威
网络·人工智能·嵌入式硬件·fpga开发·dsp开发
Omics Pro11 小时前
华大等NC|微生物多样性与抗菌物质发现
大数据·人工智能·深度学习·语言模型·excel