15 · Attention · 观变寻用神之道
一、从 Embedding 的局限说起
概念14 里,每个词有固定坐标。 但问题来了:
- "我咬了一口苹果" → 苹果指水果
- "苹果发布了新手机" → 苹果指科技品牌
同一个词,固定坐标,语义完全不同。 Embedding 解决不了这个问题。
二、Attention 怎么工作?
每个词会"看"句子里的其他词, 然后给每个词打一个注意力权重:
例子:
技术原理:QKV三向量
Attention的计算依赖三个核心向量,正好对应我们之前易经的解卦流程:
| 向量 | 名称 | 作用 | 易经对应 |
|---|---|---|---|
| Q | Query 查询 | 当前词想找什么信息 | 问卦的人,带着问题 |
| K | Key 键 | 其他词能提供什么信息 | 各爻的爻辞,表达自身属性 |
| V | Value 值 | 其他词的实际内容是什么 | 爻对应的具体含义 |
计算过程通俗版:
- 当前词拿着自己的Q(我想知道什么)
- 去和句子里每个词的K(你有什么信息)做匹配
- 匹配度越高,给这个词的V(你的内容)权重越大
- 把所有V加权求和,就得到当前词在当前语境下的新向量
核心优势:解决长距离依赖
在RNN(循环神经网络)时代,句子里的词距离越远,信息传递越弱(梯度消失问题),比如:
"我3年前在法国巴黎旅游的时候,吃过最好吃的______" 答案"可丽饼"需要关联"法国巴黎",两者距离很远,RNN很容易遗忘
Attention的好处:任意两个词之间的距离都是1,直接计算关联度,不管隔了多少词,信息都不会丢失。
注意力权重直观示例
以句子"我吃苹果"为例,三个词的注意力权重矩阵(数值越大关注越强):
| 我 | 吃 | 苹果 | |
|---|---|---|---|
| 我 | 0.8 | 0.1 | 0.1 |
| 吃 | 0.2 | 0.3 | 0.5 |
| 苹果 | 0.1 | 0.6 | 0.3 |
可以看到:
- "吃"最关注"苹果"(动作的对象)
- "苹果"最关注"吃"(被执行的动作)
- 符合人类的语言理解逻辑
三、Multi-Head Attention(多头注意力)
不只从一个角度看,而是同时从多个角度理解关系:
| 角度 | 关注的关系 |
|---|---|
| 语法关系 | 主谓宾结构 |
| 语义关系 | 词义相关性 |
| 指代关系 | 它/他/她指的是谁 |
多个视角叠加 → 理解更全面。
多头注意力的工作示例
以翻译句子"我爱中国"到英文"I love China"为例,4个注意力头分别关注不同关系:
- Head 1(语法头):关注"我 → 主语","爱 → 谓语","中国 → 宾语"的语法结构
- Head 2(语义头):关注"爱"和"中国"的情感关联
- Head 3(共指头):如果前文提到"我的家乡",会关联到"中国"
- Head 4(对齐头):关注中文"我爱中国"和英文"I love China"的词对齐关系
两种主要注意力类型
| 类型 | 特点 | 应用场景 |
|---|---|---|
| 自注意力(Self-Attention) | 句子内部的词互相关注 | 理解单段文本语义 |
| 互注意力(Cross-Attention) | 两个不同句子的词互相关注 | 翻译、问答、摘要等生成任务(输入文本和输出文本互相关注) |
实际Transformer架构里,Encoder(编码器)只用自注意力,Decoder(解码器)同时使用自注意力和互注意力。
四、易经映射
| 易经 | Attention |
|---|---|
| 寻用神 | 找最关键的词 |
| 用神旺衰 | 注意力权重高低 |
| 语境决定用神 | 语境决定权重 |
| 象随境迁 | 向量随语境调整 |
五、Embedding vs Attention
| 维度 | Embedding | Attention |
|---|---|---|
| 性质 | 静 | 动 |
| 作用 | 定象 | 观变 |
| 特点 | 固定坐标 | 动态调整 |