视频封面

视频元信息

  • 所属课程:吴恩达深度学习专项课程 - 序列模型(Sequence Models)
  • 章节:1.4 通过时间的反向传播(Backpropagation Through Time)
  • 时长:约 6 分钟(视频内容约 370 秒)
  • 语言:英文讲解(官方中英字幕)

内容摘要(TL;DR)

本视频讲解 RNN 中反向传播的计算过程,即"通过时间的反向传播"(Backpropagation Through Time, BPTT)。视频首先回顾 RNN 的前向传播计算图,然后定义单步损失和整体序列损失,最后说明反向传播如何沿时间轴从右向左传递梯度信息,从而更新参数。


一、前向传播回顾 [00:00]

本节回顾 RNN 的前向传播计算图,为反向传播做铺垫。

1.1 课程引入 [00:00]

  • 前面已经学习了 RNN 的基本结构,本节将展示 RNN 中的计算过程。
  • 在实际编程框架中,反向传播通常由框架自动完成。
  • 理解:虽然框架会自动处理,但了解其原理有助于调试模型和理解梯度问题。

1.2 前向传播计算过程 [00:23]

RNN 前向传播的基本流程如下:

  1. 给定输入序列 $x^{<1>}, x^{<2>}, \ldots, x^{}$
  2. 使用初始激活值 $a^{<0>}$ 和 $x^{<1>}$ 计算 $a^{<1>}$
  3. 使用 $x^{<2>}$ 和 $a^{<1>}$ 计算 $a^{<2>}$
  4. 依此类推,直到计算 $a^{}$

关键点:参数共享

  • 计算 $a^{}$ 使用的参数是 $W_a$ 和 $b_a$
  • 这些参数在每一个时间步都被重复使用,用于计算 $a^{<1>}, a^{<2>}, \ldots, a^{}$
  • 理解:参数共享是 RNN 的核心特征,使得模型可以处理任意长度的序列,同时大幅减少参数量。

1.3 输出预测计算 [01:55]

  • 给定 $a^{<1>}$,网络计算第一个预测 $\hat{y}^{<1>}$
  • 依次计算 $\hat{y}^{<2>}, \hat{y}^{<3>}, \ldots, \hat{y}^{}$
  • 计算 $\hat{y}^{}$ 使用的参数是 $W_y$ 和 $b_y$
  • 这些参数同样在所有时间步共享

易错点:RNN 中有两组参数需要学习——$W_a, b_a$(用于计算激活值)和 $W_y, b_y$(用于计算输出预测),它们都在所有时间步共享。


二、损失函数定义 [02:36]

本节定义 RNN 中的损失函数,包括单步损失和整体序列损失。

2.1 单个时间步的损失 [02:39]

以命名实体识别(NER)为例:

  • 假设某个词是人名,真实标签 $y^{} = 1$
  • 神经网络预测该词是人名的概率为 0.1
  • 使用交叉熵损失(cross entropy loss),也称为标准逻辑回归损失

$$L^{}(\hat{y}^{}, y^{}) = -y^{}\log(\hat{y}^{}) - (1-y^{})\log(1-\hat{y}^{})$$

  • 理解:这个损失函数与之前学习的二分类问题中的损失函数完全一致,只是现在应用到了序列的每一个时间步上。

2.2 整体序列损失 [03:19]

整体损失 $L$ 定义为所有时间步损失的总和:

$$L(\hat{y}, y) = \sum_{t=1}^{T_y} L^{}(\hat{y}^{}, y^{})$$

  • 注意区分:$L^{}$ 是单个时间步的损失,$L$ 是整个序列的总损失
  • 理解:整体损失是各时间步损失之和,这与序列模型的训练目标一致——让整个序列的预测都尽可能准确。

2.3 计算图表示 [03:47]

在计算图中:

  1. 由 $\hat{y}^{<1>}$ 计算第一个时间步的损失 $L^{<1>}$
  2. 由 $\hat{y}^{<2>}$ 计算第二个时间步的损失 $L^{<2>}$
  3. 依次计算各时间步损失
  4. 最后将所有损失求和得到总损失 $L$

三、通过时间的反向传播 [04:26]

本节讲解反向传播的核心过程,即 BPTT 的工作原理和命名由来。

3.1 反向传播的基本过程 [04:26]

  • 反向传播需要沿前向传播的相反方向传递消息
  • 从右到左(从最后一个时间步到第一个时间步)传递梯度信息
  • 通过反向传播计算所有需要的梯度量
  • 使用梯度下降更新参数

3.2 为什么叫"通过时间的反向传播" [05:00]

BPTT(Backpropagation Through Time)名称的由来:

  • 反向传播过程中最重要的递归计算是从右到左传递消息
  • 这个方向与时间索引递增的方向相反
  • 因此称为"通过时间的反向传播"

考点:BPTT 的核心特征是梯度沿时间轴反向传播,即从最后一个时间步逐步向前传递到第一个时间步。

3.3 本节小结 [05:41]

  • 本视频展示了输入序列长度等于输出序列长度($T_x = T_y$)的特殊情况
  • 下一视频将介绍更广泛的 RNN 架构,以处理更多样化的任务

四、技术原理补充【拓展】

4.1 BPTT 的数学推导

推导:在 BPTT 中,我们需要计算损失 $L$ 对参数 $W_a, b_a, W_y, b_y$ 的梯度。由于参数在所有时间步共享,梯度需要累加所有时间步的贡献。

以 $W_a$ 为例:

$$\frac{\partial L}{\partial W_a} = \sum_{t=1}^{T} \frac{\partial L^{}}{\partial W_a}$$

而每个时间步的梯度又依赖于后续时间步(因为 $a^{}$ 影响 $a^{}$),因此需要从后向前逐层计算。

4.2 梯度消失与梯度爆炸

理解:BPTT 的一个关键问题是,当序列很长时,梯度在反向传播过程中会经历多次连乘,可能导致:

  • 梯度消失:梯度趋近于 0,前面的时间步无法得到有效更新
  • 梯度爆炸:梯度趋近于无穷大,训练不稳定

解决方案:

  • 梯度裁剪(Gradient Clipping):限制梯度的最大值
  • 使用 LSTM、GRU 等门控机制:更好地捕捉长距离依赖

易错点:RNN 的梯度消失问题与普通深层网络的梯度消失本质相同,但由于 RNN 在时间维度上展开,序列越长问题越严重。

4.3 案例:命名实体识别中的 BPTT

思考:在 NER 任务中,假设序列为"张三在北京工作",其中"张三"是人名。

  • 前向传播:每个词经过 RNN 得到激活值,再计算预测概率
  • 损失计算:每个位置的预测与真实标签比较,计算交叉熵
  • 反向传播:从最后一个词"工作"开始,逐步向前传递梯度,更新共享参数

这个例子说明 BPTT 如何利用整个序列的信息来更新参数,使得模型能够学习到上下文相关的特征。

4.4 注意事项与踩坑点

  1. 参数共享的梯度累加:由于参数在所有时间步共享,计算梯度时必须将所有时间步的梯度累加,而不是简单取平均。
  2. 序列长度的影响:序列越长,BPTT 的计算量越大,梯度消失问题越严重。
  3. 截断 BPTT(Truncated BPTT) :对于超长序列,可以只反向传播固定步数,牺牲部分精度换取计算效率。
  4. 框架实现差异:不同深度学习框架对 BPTT 的实现可能有所不同,但核心原理一致。

五、关键标签/关键词

RNN #反向传播 #BPTT #通过时间的反向传播 #序列模型 #深度学习 #吴恩达 #交叉熵损失 #梯度下降 #参数共享 #梯度消失 #梯度爆炸 #命名实体识别 #计算图


生成时间:2026-10-11 00:33:41 生成平台:VideoNote www.xygy.top