
视频元信息
- 课程:吴恩达深度学习专项课程 · 序列模型(Sequence Models)第三周
- 章节:3.8 注意力模型(Attention Model)
- 时长:约 12 分钟
内容摘要(TL;DR)
本节把上一节注意力模型的直觉形式化为可实现的数学结构:用双向 RNN 编码输入得到特征向量 a⟨t'⟩,用单向 RNN 解码生成输出;每一步解码时,通过一个小型神经网络计算注意力权重 e⟨t,t'⟩,经 Softmax 归一化得到 α⟨t,t'⟩,再对输入特征做加权求和得到上下文向量 c,作为解码器输入。该算法复杂度为 O(tx·ty) 的二次代价,并已成功推广到图像描述等任务。
一、回顾与本节目标 [00:00]
上一节视频展示了注意力模型如何让神经网络像人类译者一样,只关注输入句子的一部分来完成翻译。本节要做的,是把这种直觉形式化为精确的实现细节。
理解:注意力模型解决的是"信息瓶颈"问题——传统 Seq2Seq 把整个输入句子压缩成一个固定长度的向量,长句信息损失严重;注意力机制让解码器每一步都能"回看"输入的所有位置,动态决定关注哪里。
二、编码器:双向 RNN 计算输入特征 [00:21]
假设输入句子使用双向 RNN(双向 GRU 或双向 LSTM)为每个词计算特征。
- 实践中 GRU 和 LSTM 常用,LSTM 更常见。
- 前向循环:第 1 步激活、第 2 步激活……依此类推。
- 反向循环:同样从后往前逐步计算激活。
- 初始时反向第 0 步的激活可取全零向量(形式上的占位)。
记号简化(重要):
为简化记号,尽管每个时间步有前向和反向两组激活,统一用 a⟨t⟩ 表示二者拼接(concatenate)后的特征向量。
- 为避免与输出时间步 t 混淆,输入句子的索引改用 t'(t prime)表示。
- a⟨t'⟩ 即输入句子中第 t' 个词的特征向量。
易错点: 输入用 t' 索引、输出用 t 索引,这是本节所有公式的关键约定。α⟨t,t'⟩ 中,t 指输出位置,t' 指输入位置,顺序不要写反。
三、解码器:单向 RNN 逐词生成翻译 [02:04]
解码端是一个单向 RNN,用隐藏状态 s 逐步生成翻译。
- 第 1 个时间步生成 y⟨1⟩,其输入包含一个上下文向量 c(严格写成 c⟨1⟩,但常省略上标)。
- 该上下文取决于注意力参数 α⟨1,1⟩、α⟨1,2⟩……它们表示对各个输入时间步激活的关注程度。
上下文向量的定义(核心公式):
c 是各时间步特征的加权求和,权重即注意力权重:
- 注意力权重满足:全部非负,且对 t' 求和等于 1。
- 形式化表达:c⟨1⟩ = Σ_{t'} α⟨1,t'⟩ · a⟨t'⟩
理解:α⟨t,t'⟩ 的含义是——生成第 t 个输出词时,应该对第 t' 个输入词投入多少注意力。权重和为 1 保证了它像一个"概率分布",是一种软对齐(soft alignment)。
四、逐步生成:每一步都有新的上下文 [04:35]
- 生成第一个输出后,进入下一个时间步生成第二个输出。
- 此时有一组全新的注意力权重,定义新的加权求和,产生新的上下文向量 c⟨2⟩。
- c⟨2⟩ = Σ_{t'} α⟨2,t'⟩ · a⟨t'⟩,作为输入参与生成第二个词。
把 c⟨1⟩、c⟨2⟩……代回后,整个解码网络就是一个以上下文向量为输入的普通 RNN 序列模型,可以一次生成一个词的翻译。
至此,只剩一个问题:注意力权重 α⟨t,t'⟩ 到底怎么算?
五、注意力权重的计算方法 [05:54]
公式结构:
- 先计算中间量 e⟨t,t'⟩(未归一化的注意力分数)。
- 再用 Softmax 对 t' 归一化,得到 α⟨t,t'⟩,保证对固定的 t,所有 α 之和为 1。
e⟨t,t'⟩ 如何计算——用一个小型神经网络:
- 输入一:解码器上一步的隐藏状态 s⟨t-1⟩(即生成 y⟨t⟩ 时喂入 s⟨t⟩ 的那个状态)。
- 输入二:输入句子的特征 a⟨t'⟩(即 h⟨t'⟩)。
- 输出:e⟨t,t'⟩。
- 通常只有一个隐藏层,因为要计算很多次,必须足够小、足够快。
设计直觉:
理解:要判断该对第 t' 个输入词投入多少注意力,最相关的信息是"解码器当前走到哪了"(s⟨t-1⟩)和"那个输入词是什么"(a⟨t'⟩)。注意这里用的是上一步状态,因为当前状态 s⟨t⟩ 还没算出来——它本身还要依赖上下文向量 c⟨t⟩,存在循环依赖。
为什么能工作:
- 我们并不知道这个函数的具体形式,所以训练一个小神经网络去学习它。
- 依靠反向传播和梯度下降学习正确的函数。
- 整个模型端到端训练后,效果很好,神经网络能自动学会在生成每个词时关注输入句子的正确位置。
考点: 注意力权重不是人工设定的,而是通过梯度下降自动学习得到的。这是注意力机制最优雅的地方——"该关注哪里"本身是可学习的。
六、算法的计算代价:二次复杂度 [08:55]
缺点:算法运行时间是二次代价(quadratic cost)。
- 若输入有 tx 个词、输出有 ty 个词,则注意力参数总数为 tx × ty。
- 因此算法复杂度为 O(tx · ty)。
为什么可以接受:
- 机器翻译中,输入和输出句子通常都不太长,二次代价实际可接受。
- 已有研究在尝试降低这一代价(如局部注意力、稀疏注意力等方向)。
【拓展】后续研究中的优化思路:① 局部/窗口注意力,只关注输入的一个邻域;② 硬注意力(hard attention),每步只选一个位置,但需用强化学习训练;③ 单调注意力(monotonic attention),利用机器翻译中词序大致对齐的先验。这些都属于对 O(tx·ty) 的改进方向。
七、注意力思想的其他应用:图像描述 [09:37]
注意力思想不限于机器翻译,已推广到图像描述(image captioning)等任务。
- 任务:看一张图片,为它写一句描述。
- 论文:Kelvin Xu、Jimmy Ba、Ryan Kiros、Kyunghyun Cho、Aaron Courville、Ruslan Salakhutdinov、Richard Zemel、Yoshua Bengio 等作者的工作。
- 核心结论:可以用非常相似的架构——看图片时,在写描述的每一步只关注图片的一部分。
【拓展】图像描述中的注意力通常把 CNN 特征图的每个空间位置当作"输入词",与解码 LSTM 的隐藏状态计算注意力权重,从而在生成 "bird" 时聚焦到鸟所在的区域。这与机器翻译中关注输入词在结构上完全一致,说明注意力是一种通用的对齐机制。
八、编程练习:日期归一化 [10:30]
编程练习中不是做机器翻译(太复杂),而是做日期归一化任务:
- 输入各种格式的日期,例如阿波罗登月日期、莎士比亚的出生日期。
- 用序列到序列模型 + 注意力模型,把任意格式的日期归一化为标准格式。
- 可训练网络接受多种格式输入,用注意力生成统一格式输出。
思考:日期归一化是注意力机制的理想教学案例——输入输出存在清晰的字符级对齐关系,注意力权重的可视化能直观看出模型"看着哪几个字符"生成对应输出。
九、注意力权重的可视化 [11:22]
- 在机器翻译示例中,用不同颜色绘制注意力权重的大小。
- 观察发现:对应的输入词和输出词之间,注意力权重往往较高。
- 说明模型在生成某个特定输出词时,通常正关注输入中正确的那个词。
- 包括"该在哪里投入注意力"在内的全部行为,都是通过带注意力模型的反向传播学到的。
重点: 注意力权重可视化既是调试工具,也是可解释性来源。若发现权重明显错位(如生成 "cat" 却关注 "dog"),往往提示训练不足或数据对齐有问题。
十、本节小结 [12:07]
注意力模型是深度学习中最强大的思想之一。本节完成了从直觉到公式的完整推导:
- 双向 RNN 编码输入 → 特征 a⟨t'⟩
- 单向 RNN 解码输出,每步输入上下文 c⟨t⟩
- c⟨t⟩ = Σ_{t'} α⟨t,t'⟩ · a⟨t'⟩(加权求和)
- α⟨t,t'⟩ = Softmax(e⟨t,t'⟩),e 由小神经网络基于 s⟨t-1⟩ 和 a⟨t'⟩ 计算
- 代价为 O(tx·ty),机器翻译场景可接受
- 可推广到图像描述等任务
关键标签 / 关键词
注意力模型、Attention Model、双向 RNN、Bi-directional RNN、GRU、LSTM、上下文向量、Context Vector、注意力权重、α⟨t,t'⟩、Softmax 归一化、编码器-解码器、Seq2Seq、机器翻译、图像描述、Image Captioning、日期归一化、二次复杂度、O(tx·ty)、端到端训练、反向传播、注意力可视化、软对齐
生成时间:2026-10-11 00:17:45 生成平台:VideoNote www.xygy.top