
视频元信息
- 所属课程:吴恩达深度学习专项课程 - 序列模型(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 前向传播的基本流程如下:
- 给定输入序列 $x^{<1>}, x^{<2>}, \ldots, x^{
}$ - 使用初始激活值 $a^{<0>}$ 和 $x^{<1>}$ 计算 $a^{<1>}$
- 使用 $x^{<2>}$ 和 $a^{<1>}$ 计算 $a^{<2>}$
- 依此类推,直到计算 $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^{
- 理解:这个损失函数与之前学习的二分类问题中的损失函数完全一致,只是现在应用到了序列的每一个时间步上。
2.2 整体序列损失 [03:19]
整体损失 $L$ 定义为所有时间步损失的总和:
$$L(\hat{y}, y) = \sum_{t=1}^{T_y} L^{
- 注意区分:$L^{
}$ 是单个时间步的损失,$L$ 是整个序列的总损失 - 理解:整体损失是各时间步损失之和,这与序列模型的训练目标一致——让整个序列的预测都尽可能准确。
2.3 计算图表示 [03:47]
在计算图中:
- 由 $\hat{y}^{<1>}$ 计算第一个时间步的损失 $L^{<1>}$
- 由 $\hat{y}^{<2>}$ 计算第二个时间步的损失 $L^{<2>}$
- 依次计算各时间步损失
- 最后将所有损失求和得到总损失 $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^{
而每个时间步的梯度又依赖于后续时间步(因为 $a^{
4.2 梯度消失与梯度爆炸
理解:BPTT 的一个关键问题是,当序列很长时,梯度在反向传播过程中会经历多次连乘,可能导致:
- 梯度消失:梯度趋近于 0,前面的时间步无法得到有效更新
- 梯度爆炸:梯度趋近于无穷大,训练不稳定
解决方案:
- 梯度裁剪(Gradient Clipping):限制梯度的最大值
- 使用 LSTM、GRU 等门控机制:更好地捕捉长距离依赖
易错点:RNN 的梯度消失问题与普通深层网络的梯度消失本质相同,但由于 RNN 在时间维度上展开,序列越长问题越严重。
4.3 案例:命名实体识别中的 BPTT
思考:在 NER 任务中,假设序列为"张三在北京工作",其中"张三"是人名。
- 前向传播:每个词经过 RNN 得到激活值,再计算预测概率
- 损失计算:每个位置的预测与真实标签比较,计算交叉熵
- 反向传播:从最后一个词"工作"开始,逐步向前传递梯度,更新共享参数
这个例子说明 BPTT 如何利用整个序列的信息来更新参数,使得模型能够学习到上下文相关的特征。
4.4 注意事项与踩坑点
- 参数共享的梯度累加:由于参数在所有时间步共享,计算梯度时必须将所有时间步的梯度累加,而不是简单取平均。
- 序列长度的影响:序列越长,BPTT 的计算量越大,梯度消失问题越严重。
- 截断 BPTT(Truncated BPTT) :对于超长序列,可以只反向传播固定步数,牺牲部分精度换取计算效率。
- 框架实现差异:不同深度学习框架对 BPTT 的实现可能有所不同,但核心原理一致。
五、关键标签/关键词
RNN #反向传播 #BPTT #通过时间的反向传播 #序列模型 #深度学习 #吴恩达 #交叉熵损失 #梯度下降 #参数共享 #梯度消失 #梯度爆炸 #命名实体识别 #计算图
生成时间:2026-10-11 00:33:41 生成平台:VideoNote www.xygy.top