Ch.01
Transformer 1:自注意力与并行化
Transformer 的核心是 自注意力(Self-Attention)。它不再像 RNN 那样按顺序逐个处理 token,而是让句子中的所有 token 同时相互参考,从而汇聚重要信息。本章将用初学者友好的方式讲解自注意力:从 Query / Key / Value、缩放点积注意力,到多头的数学意义,并把这些内容与翻译、摘要、搜索以及医疗文本分析等真实应用串联起来学习。
轻松理解公式
, , 中, 是输入嵌入, 是可学习的变换矩阵。这个步骤把同一句话拆成“像提问的表示”“像匹配的表示”“像内容的表示”。 是 token 之间的相关性分数矩阵。分数越大,两者关系越强。但当维度变大时数值可能过大,所以用 进行稳定化处理。 是一个概率权重矩阵:每一行的和为 1。也就是说,它用比例表示一个 token 应该参考其他 token 的程度。 是用权重 去混合 Value 得到的最终上下文表示。关键点是它不是简单平均,而是基于重要性的加权平均。
自注意力是一种操作:每个 token 关注所有 token,并重建上下文。
概念结构:Q/K/V → 分数 → 归一化 → 加权求和
弱引用中等引用强引用
Transformer 1:一眼看懂自注意力
概念说明
自注意力会让句子里的每个单词(token)同时关注所有其他单词,并为理解当前 token 决定“该参考哪些词、参考多少”的权重。比如在“去了银行”里判断“银行”到底是金融机构还是河岸时,自注意力的作用就是把周围词的整体信息一起纳入判断。
直观理解
把它想象成会议:当有人发言时,所有参与者都同时举手投票——“我的发言在当前语境里有多重要”。发言者会根据这些投票结果放大重要意见、压缩不重要意见,最终得到判断。自注意力也用同样的思路工作:用权重来决定哪些信息更关键。
数学说明
把输入嵌入矩阵记为 ,并变换得到 , , 。其中 是可学习的权重矩阵。注意力分数由 计算,并为了维度校正除以 ,再经过 softmax 得到概率权重 。最终输出是 。各符号含义如下: 是 Key 向量维度, 是表示“该参考哪些 token、参考多少”的比例权重矩阵。
实际机器学习应用示例
在垃圾邮件分类中,往往需要看句子整体模式,而不是只看某一个词。自注意力可以同时捕捉“免费”和“点击”这种词之间的关系,从而更准确地判断是否为垃圾邮件。在医疗诊断文本分类中,它能同时建模症状、检查结果以及否定表达(如“不是”)之间的交互,从而降低误诊风险。
为什么重要
概念说明
自注意力之所以重要,是因为它能很好地捕捉长距离依赖(long-range dependency)。即使句子前面的词决定了后面的含义,信息也能有效地传递到远处。
直观理解
RNN 像接力赛一样把“棒子”一步步传下去,因此中间可能会逐渐丢失信息。而自注意力更像群聊:所有参与者能同时看到所有消息,所以远处的信息也能立刻被参考。
数学说明
RNN 的信息传递路径长度与 token 距离 成正比;但自注意力在同一层里直接连接所有 token,因此路径长度约为 1。路径越短,梯度传播越稳定,也就更不容易丢掉关键依赖。
实际机器学习应用示例
在处理长上下文的任务中,自注意力通常贡献很大:例如法律文档摘要、客服咨询日志分类、诈骗交易检测与解释生成等。
如何使用
概念说明
在实际开发中,先用分词器把文本切成 token,再把 token 转成向量(嵌入)。之后把自注意力模块(多头 + 前馈网络 + 残差连接 + 正则化)堆叠成多层,构建模型。
直观理解
如果只有一位“专家”来判断,很容易偏科。因此多头注意力会让多个头从不同视角(语法、语义、实体等)分别“投票”,再把结果合并起来。
数学说明
第 个头的输出为 。将各头输出拼接(concat),再乘以 得到最终输出;也就是 。
实际机器学习应用示例
在翻译模型中,一个头可能更擅长主语-动词关系,另一个头更擅长数值/日期一致性。在客户评论情感分析中,自注意力还能捕捉否定词与关键形容词之间的关系,从而提高准确率。
总结
自注意力的结构是:每个 token 会同时参考句子中的所有 token 来理解上下文,因此它是 Transformer 性能的重要基础。它通过 Query、Key、Value 将信息拆开计算相似度,并用 softmax 把重要性像概率一样正则化后进行加权求和,把需要的信息汇聚起来。由于这种机制,远距离的词关系也能一次性被反映出来,所以在长上下文问题上尤其强。多头会降低单一视角带来的局限,并通过融合多个视角提升预测稳定性。最终,理解自注意力就是理解“如何有选择地收集信息”,而这会直接连接到翻译、摘要、分类、搜索以及医疗文本分析等广泛的机器学习任务中。
解题提示
自注意力题目可以先把它想成“谁在参考谁、参考多少”的题来理解就会更简单。计算题通常以“分数求和”“投票(多数组合)统计”“头/Token/维度的乘法”这几类形式出现:只要按题意对用整数设计的值依次相加或相除即可。记住 分别对应“问题(Query)”“索引/匹配依据(Key)”“内容(Value)”,就不容易在实战里混淆。
关键词解题要点总结
- 类型核心公式
- 解题要点 / 例子(关键词 → 正答) 中, 是 Key 的维度 → 概念题正答 2
- 类型核心概念
- 解题要点 / 例子(关键词 → 正答)Query=问题,Key=匹配依据,Value=要拿来的信息 → 概念题正答 1
- 类型O/X 判断
- 解题要点 / 例子(关键词 → 正答)“自注意力会同时看所有 token” → 1
- 类型投票结果计算
- 解题要点 / 例子(关键词 → 正答)对 1 的个数求和来做多数判定 → 得到整数结果
- 类型模型预测集成
- 解题要点 / 例子(关键词 → 正答)先把各头预测加总,再与阈值比较 → 类别编号
- 类型模型配置计算
- 解题要点 / 例子(关键词 → 正答)头数 × 每头维度 = 模型维度 → 整数
- 类型集成思想
- 解题要点 / 例子(关键词 → 正答)独立误差的减少与多视角结合 → 原理题正答 1
| 类型 | 解题要点 / 例子(关键词 → 正答) |
|---|---|
| 核心公式 | 中, 是 Key 的维度 → 概念题正答 2 |
| 核心概念 | Query=问题,Key=匹配依据,Value=要拿来的信息 → 概念题正答 1 |
| O/X 判断 | “自注意力会同时看所有 token” → 1 |
| 投票结果计算 | 对 1 的个数求和来做多数判定 → 得到整数结果 |
| 模型预测集成 | 先把各头预测加总,再与阈值比较 → 类别编号 |
| 模型配置计算 | 头数 × 每头维度 = 模型维度 → 整数 |
| 集成思想 | 独立误差的减少与多视角结合 → 原理题正答 1 |
例子(投票结果计算)
题目
5 个头投票为 [1, 1, 0, 1, 0]。1 的总数是多少?
简要计算
→ 正答
3
例子(模型配置计算)
题目
头数为 8、每个头的维度为 16 时,总的注意力维度是多少?
简要计算
→ 正答
128
例子(理解集成原理)
题目
为什么多头比单头更强?最合适的是哪一个?
① 结合多个视角来减少错误
② 参数变成 0
③ 计算量永远为 0
简要计算
原理对比:确认是否是“多视角结合”
→ 正答
1