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

复制代码
每个词问:

我应该关注谁?

然后:

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

相关推荐
海兰2 小时前
【实战】Ubuntu 24.04下本地部署开源项目Higress
linux·人工智能·ubuntu·开源·银行系统
xingyuzhisuan2 小时前
4090部署DeepSeek-V3:CPU卸载层数实测指南
运维·深度学习·gpu算力
普鲁夕格2 小时前
RVC V5.0 模型工坊优化版!全自动AI翻唱,新增音频工具箱,自动混响混音,更强兼容性。
人工智能
vivo互联网技术2 小时前
CVPR 2026 | C²FG:用分数差异分析提高条件生成中CFG的引导
人工智能·算法·aigc
博士僧小星2 小时前
人工智能|大模型——模型——大模型蒸馏详解(定义/原理/关键技术/落地)
人工智能·深度学习·机器学习·知识蒸馏·模型蒸馏
AI医影跨模态组学2 小时前
Cancer Lett(IF=10.1)北京大学第一医院杨尹默等团队:基于深度学习的病理组学特征可独立于CA19-9预测胰腺导管腺癌的生存与复发
人工智能·深度学习
码农三叔2 小时前
(2-1)常用传感器与基础原理:视觉传感器
人工智能·机器人·大模型·人形机器人
心勤则明2 小时前
Spring AI Alibaba MCP Gateway:将存量服务转换成 MCP Server
人工智能·spring·gateway
Fairy要carry2 小时前
面试-Skill粒度粗细的影响
人工智能