视频封面

视频元信息

  • 课程:吴恩达深度学习专项课程 · 序列模型(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]

公式结构:

  1. 先计算中间量 e⟨t,t'⟩(未归一化的注意力分数)。
  2. 再用 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]

注意力模型是深度学习中最强大的思想之一。本节完成了从直觉到公式的完整推导:

  1. 双向 RNN 编码输入 → 特征 a⟨t'⟩
  2. 单向 RNN 解码输出,每步输入上下文 c⟨t⟩
  3. c⟨t⟩ = Σ_{t'} α⟨t,t'⟩ · a⟨t'⟩(加权求和)
  4. α⟨t,t'⟩ = Softmax(e⟨t,t'⟩),e 由小神经网络基于 s⟨t-1⟩ 和 a⟨t'⟩ 计算
  5. 代价为 O(tx·ty),机器翻译场景可接受
  6. 可推广到图像描述等任务

关键标签 / 关键词

注意力模型、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