
视频元信息
- 课程来源:吴恩达(Andrew Ng)深度学习专项课程 —— Professionalization of Deep Learning
- 章节编号:p190 / 3.13
- 本课主题:多头注意力机制(Multi-Head Attention)
- 时长:约 8 分钟
内容摘要(TL;DR)
多头注意力机制本质上是把上一节学到的自注意力计算重复执行多次(每次称为一个"头")。每个头使用独立的权重矩阵 W^Q、W^K、W^V,让模型从不同角度对每个词提问(如"发生了什么""什么时候发生""谁参与其中"),从而学到更丰富、更全面的词表示。最后将所有头的输出拼接并乘以输出矩阵 W^O 得到最终结果。关键点:各头之间相互独立,可以并行计算。
一、多头注意力的核心直觉 [00:03]
一句话总结:多头注意力 = 把自注意力机制放进一个大循环里跑很多遍。
- 每次对一个序列计算自注意力,就称为一个"头"(head)。
- 因此"多头注意力"(multi-head attention)这个名字,指的就是把上一节视频中学过的自注意力计算重复多次。
- 记号(notation)会变得稍微复杂一些,但核心思想并不复杂:只是把自注意力跑很多遍而已。
理解:可以把"头"想象成不同的"观察视角"或"提问角度"。单个头只能从一个维度理解句子,多个头则能同时从多个维度理解。
二、回顾:单头自注意力的输入准备 [00:36]
- 回顾上一节内容:对每个输入词,通过乘以权重矩阵 W^Q、W^K、W^V,得到对应的 查询向量 q、键向量 k、值向量 v。
- 在多头注意力中,输入仍然是同一组 q、k、v 向量(即下方写出的 qkv 值),但会基于它们计算多次自注意力。
考点:输入复用 —— 多头注意力的输入 q、k、v 是共享的,区别在于每个头用不同的权重矩阵对它们做变换。
三、第一个头(Head 1)的计算过程 [01:02]
3.1 权重矩阵变换
- 用第一组权重矩阵 W₁^Q、W₁^K、W₁^V 分别乘以输入的 q、k、v 矩阵。
- 这三个变换会为第一个词生成一组新的 query、key、value 向量。
- 对序列中的其他每个词也做同样的操作。
3.2 直觉理解:第一个头在问"发生了什么?"
- 可以把 W₁^Q、W₁^K、W₁^V 理解为被学习出来去提出并回答一个问题:"那里发生了什么?"(What's happening there?)
- 这基本就是上一节视频中演示过的自注意力例子。
3.3 具体例子(以句子中的词为例)
- 计算后,词 "visit" 对"发生了什么"这个问题给出了最好的答案。
- 这用蓝色箭头标出,表示:"visit" 的 key 与 "Africa"(第一个提问词)的 query 的内积最高。
- 这就是得到 "Africa" 这个词表示的方式。
- 对 Jane、the seat、September 等词也做同样的操作,最终得到 5 个向量来表示序列中的 5 个词。
- 这一步得到与上一节相同的注意力值 A₁ 到 A₅。
推导:内积越大 → 注意力权重越高 → 对应的 value 在该词的新表示中占比越大。这是自注意力的核心加权求和逻辑。
四、扩展到多个头(Multi-Head) [03:09]
4.1 从 1 个头到 8 个头
- 上面只完成了多个头中的第一个头的计算。
- 接下来不再只做一次,而是做好几次:例如从 1 个头扩展到 8 个头,就是把整个计算过程执行约 8 遍。
- 注意力公式与上一节视频中所见相同。
考点:头数 H —— 在文献中,头的数量通常用小写字母 H 表示(H = number of heads)。吴恩达在本例中画了 3 个头,但文献中常用 8 个头。
4.2 第二个头(Head 2) [03:40]
- 第二个头使用一组新的矩阵 W₂^Q、W₂^K、W₂^V,让机制能够提出并回答第二个问题。
- 第一个问题是"发生了什么?",第二个问题可能是"什么时候发生的?"(When is something happening?)
- 一般化表示:把 W₁ 换成 Wᵢ,并把第二个头堆叠在第一个头后面(图中用红色表示第二个头)。
- 重复与第一个头完全相同的计算,只是换了一组矩阵。
- 本例结果:"September" 的 key 与 "Africa" 的 query 内积最高,用红色箭头标出,表示 "September" 的 value 在 "Africa" 的第二部分表示中占较大权重。
4.3 第三个头(Head 3) [04:55]
- 第三个头由 W₃^Q、W₃^K、W₃^V 表示,要问的第三个问题是"谁?谁和 Africa 有关系?"(Who has something to do with Africa?)
- 本例结果:"Jane" 的 key 向量与 "Africa" 的 query 向量内积最高,用黑色箭头标出。
- 因此 "Jane" 的 value 在这个(堆叠在后面的)表示中权重最大。
思考:三个头分别关注了"事件""时间""人物"三个不同维度——这正是多头注意力强大的原因:每个头自动学习关注不同类型的关系。
五、输出拼接与最终变换 [05:56]
5.1 拼接(Concatenation)
- 计算出 3 个(或 8 个,或任意 H 个)头的值之后,将这些值拼接(concatenation)起来,用于计算多头注意力的输出。
- 最终值 = 所有 H 个头的拼接结果,最后再乘以一个矩阵 W^O。
易错点:不要忘记最后的输出矩阵 W^O —— 拼接后的向量维度较大,必须通过 W^O 做一次线性变换,才能得到与期望输出维度一致的最终结果。
5.2 公式总结(示意)
- 每个头:headᵢ = Attention(Q·Wᵢ^Q, K·Wᵢ^K, V·Wᵢ^V)
- 最终输出:MultiHead = Concat(head₁, head₂, ..., head_H) · W^O
六、实现细节:并行计算 [06:32]
重要提醒:多头注意力在实现上是可以并行计算的!
- 在概念描述中,为了便于理解,把不同头的计算描述成"一个大 for 循环"(big for loop),一个接一个地算。
- 但在实践中,各个头的值可以并行计算,因为没有任何一个头的值依赖于其他头的值。
- 因此实现时:可以并行计算所有头,而不是顺序计算;然后再拼接、乘以 W^O,就得到多头注意力结果。
理解:这类似于卷积神经网络中多个卷积核可以并行计算——各头之间完全独立,天然适合 GPU 并行加速。
七、下一节预告与简化图标 [07:11]
- 下一节视频将使用一个简化图标来表示多头注意力计算:
- 输入:矩阵 Q、K、V
- 输出:多头注意力的结果(上方的值)
- 在下一节把这个模块放入 Transformer 网络时,将用这个小图来代表本节幻灯片上的所有计算。
八、本课总结 [07:51]
- 上一节学习了自注意力(self-attention)。
- 通过把自注意力执行多次,理解了多头注意力机制(multi-head attention)。
- 多头注意力的作用:让模型对每个词提出多个问题,从而为每个词学到更丰富、更好的表示。
- 下一步:把所有内容整合起来,构建 Transformer 网络。
关键术语速查(中英对照)
| 中文 | 英文 | 说明 |
|---|---|---|
| 多头注意力 | Multi-Head Attention | 执行多次自注意力机制 |
| 头 | Head | 单次自注意力计算 |
| 查询向量 | Query (q) | 用于提问的向量 |
| 键向量 | Key (k) | 用于匹配的向量 |
| 值向量 | Value (v) | 被加权聚合的向量 |
| 权重矩阵 | Weight Matrix (W^Q, W^K, W^V) | 可学习参数 |
| 输出矩阵 | Output Matrix (W^O) | 拼接后的线性变换 |
| 拼接 | Concatenation | 将各头输出合并 |
| 头数 | H (number of heads) | 常用 8 个 |
关键标签 / 关键词
吴恩达深度学习 #多头注意力 #MultiHeadAttention #自注意力 #SelfAttention #Transformer #注意力机制 #深度学习 #NLP #QKV #并行计算 #神经网络 #课程笔记
本课核心记忆点:
- 多头注意力 = 自注意力跑 H 遍(红色重点)
- 每个头用独立的 W^Q、W^K、W^V,从不同角度提问(红色重点)
- 最后 Concat + 乘 W^O 得到输出(易错点:别忘 W^O)
- 各头相互独立,可并行计算(重要提醒)
- 常用头数 H = 8
生成时间:2026-10-11 00:11:48 生成平台:VideoNote www.xygy.top