
本课学习重点
- Query · 查询
- Key · 键
- Value · 值
先从一个具体问题出发
理解“它”究竟指什么
句子“机器人搬起箱子,因为它很轻”中,理解“它”需要回看前文,并判断“箱子”比“机器人”更相关。注意力用可学习的权重表达这种关联。
SEQUENCE & ATTENTION
通过词语关联热力图理解查询、键、值和注意力权重。
这一课要回答:注意力机制:哪些信息更重要建立必要的基础概念
先认识三个关键词
先看每个概念负责什么,再把它们放回完整流程。无需先记公式,先建立直觉。
我正在寻找什么
当前词元发出的需求,用于和上下文信息比较。
我包含什么线索
每个上下文词元提供可被匹配的特征。
匹配后取回什么
权重越高,对最终汇总结果的贡献越大。
把概念连接成流程
一次注意力计算
按顺序走一遍,观察每一步的输入、动作与输出。
- 01
生成查询、键和值
同一输入经过不同参数变换得到三组表示。
- 02
计算相关分数
查询与每个键比较,得到匹配程度。
- 03
归一化为权重
Softmax 让权重为正且总和为 1。
- 04
加权汇总信息
按权重组合各个值,形成上下文表示。
互动实验 · 动手建立直觉
选择查询词,查看关联热力图
点击句子中的不同词语,观察关注对象如何随当前查询改变。权重是教学示意,用来理解机制。
机器人12%
搬起8%
箱子52%
因为5%
它16%
很轻7%
当前查询“它”最关注“箱子”。这是为理解机制设计的示意权重。
知道模型能做什么,也知道不能做什么
三个容易忽略的边界
技术名词描述的是一种计算方法。真正用于产品时,还要检查数据、指标、成本与使用场景。
注意力权重不是因果证明
高权重表示计算中的关联,不等于人类可直接采信的解释。
上下文越长,计算越贵
标准自注意力要比较许多词元对,成本随长度快速增长。
权重由数据学习
训练偏差会影响模型关注的内容。
可选代码实践 · 逐行理解
把相关分数变成注意力输出
代码只呈现本课最关键的计算路径。先根据注释理解每一步,再放进完整项目。
course-11.py
import torch
scores = query @ keys.transpose(-2, -1)
scores = scores / (query.size(-1) ** 0.5)
weights = torch.softmax(scores, dim=-1)
context = weights @ values
print(weights.sum(dim=-1)) # 每行约等于 1- 步骤 1
查询与键做点积,分数越大表示当前表示越匹配。
- 步骤 2
除以维度平方根,避免向量维度较大时分数过度放大。
- 步骤 3
归一化权重与值相乘,得到针对当前查询的上下文。
知识检查与课程总结
确认你能把概念讲清楚
完成三个问题,再用五句话回顾本课主线。
已回答 0 / 3 题 · 当前答对 0 题
- 注意力允许当前表示直接查看上下文。
- 查询提出需求,键用于匹配,值提供内容。
- Softmax 将相关分数转换为相对权重。
- 不同查询会产生不同的信息分配。
- 注意力热力图可辅助观察,但不能当作完整解释。
下一课 · COURSE 12
Transformer
把多头注意力、位置信息和前馈网络组成可堆叠的结构。