
视频元信息
- 所属课程:吴恩达深度学习专项课程 - 序列模型(Sequence Models)
- 章节编号:1.12 深度 RNNs(Deep RNNs)
- 视频时长:约 5 分 15 秒
- 语言:官方中英双语字幕
内容摘要(TL;DR)
本节讲解如何把单层 RNN 堆叠成深度 RNN。核心是采用 $a^{[l]\langle t \rangle}$ 的双上标记法区分"层"与"时间步",并给出激活值计算公式。强调 RNN 因存在时间维度,3 层已算很深,实践中更常见"循环层 + 无横向连接的深层网络"的混合结构,且每个循环块可替换为 GRU 或 LSTM 块。
一、从标准深度网络到深度 RNN [00:19]
要点回顾:标准前馈神经网络
- 输入 $X$ 送入第一个隐藏层,得到激活 $a^{[1]}$
- 再送入第二层,得到 $a^{[2]}$
- 再送入第三层,得到 $a^{[3]}$
- 最后输出预测 $\hat{y}$
这是最普通的"纵向堆叠"结构,层与层之间是全连接,没有时间概念。
深度 RNN 的本质
理解:深度 RNN 就是把上面这张"手工画出的多层网络"沿着时间轴展开(unroll)。
- 横向:同一层内,激活值随时间步 $t$ 传递(时间维度的循环连接)
- 纵向:不同层之间,激活值向上传递(深度的堆叠)
- 于是网络同时具备"深度"和"时间"两个方向
二、记号约定:双上标记法 [00:54]
这是本节最重要的考点,务必记牢。
| 记号 | 含义 |
|---|---|
| $a^{[l]}$ | 第 $l$ 层的激活值(方括号表示层 layer) |
| $a^{\langle t \rangle}$ | 第 $t$ 个时间步的激活值(尖括号表示时间 time) |
| $a^{[l]\langle t \rangle}$ | 第 $l$ 层、第 $t$ 个时间步的激活值 |
易错点:方括号 $[\ ]$ 表示"层",尖括号 $\langle\ \rangle$ 表示"时间步",二者不可混用。视频中特别说明:以前把 t=0 的激活写成 $a^{0}$,现在改用 $a^{[1]\langle 0 \rangle}$,明确标注它属于第 1 层。
展开示例
- 第一层时间 1:$a^{[1]\langle 1 \rangle}$
- 第一层时间 2:$a^{[1]\langle 2 \rangle}$
- 第一层时间 3:$a^{[1]\langle 3 \rangle}$
- 第一层时间 4:$a^{[1]\langle 4 \rangle}$
把这些第一层的激活向上堆叠,就得到第二层、第三层……视频中展示的是一个含 3 个隐藏层的深度 RNN。
三、深度 RNN 的激活值计算 [01:45]
以 $a^{[2]\langle 3 \rangle}$ 为例
该激活值有两个输入来源:
- 来自下方(同一时间步、上一层):$a^{[1]\langle 3 \rangle}$
- 来自左侧(同一层、上一时间步):$a^{[2]\langle 2 \rangle}$
计算公式:
$$a^{[2]\langle 3 \rangle} = g\left(W_a^{[2]} \left[ a^{[2]\langle 2 \rangle},\ a^{[1]\langle 3 \rangle} \right] + b_a^{[2]}\right)$$
其中 $g$ 为激活函数,$[\cdot,\cdot]$ 表示向量拼接。
参数共享规律(重点)
- 同一层内,所有时间步共用同一组参数:第二层在每个时间步都用 $W_a^{[2]}$ 和 $b_a^{[2]}$
- 不同层使用各自的参数:第一层用自己的 $W_a^{[1]}$、$b_a^{[1]}$
考点:参数在"时间维度"上共享,在"层维度"上不共享。这与标准 RNN 沿时间共享参数的思路一致,只是把共享范围限定在同一层内。
思考:这种设计让每一层学习不同抽象级别的时序特征——底层捕捉局部模式,高层捕捉更长程的语义,而参数共享又保证了序列长度变化时模型规模不变。
四、为什么 RNN 不需要"上百层" [02:57]
关键对比
- 标准前馈网络:可以做到非常深,例如 100 层以上
- RNN:3 层就已经算相当深了
原因分析
推导:RNN 的"有效深度"不仅来自纵向层数,还来自横向的时间步数。一个 3 层、时间步长度为 100 的 RNN,其计算图的展开深度可达数百,梯度需要穿越极长的路径。
- 时间维度本身已带来巨大的计算图展开
- 因此即便只有寥寥几层,网络也已"很深"
- 实践中几乎见不到把 RNN 堆到 100 层的情况
易错点:不要用衡量普通 CNN/MLP 深度的直觉去衡量 RNN。RNN 的"深度"要同时考虑层数与时间步长度。
五、更常见的实用架构:循环层 + 深层前馈网络 [03:22]
视频指出,实践中更常见的一种结构是:
- 先堆叠若干循环层(层与层之间有横向时间连接)
- 取最上层输出,再接入一个不含横向连接的普通深层网络
- 该深层网络在每个时间步上独立预测输出,例如预测 $\hat{y}^{\langle 1 \rangle}$、$\hat{y}^{\langle 2 \rangle}$……
理解:这种设计相当于把"时序特征提取"和"逐帧非线性变换"解耦——循环部分负责建模时间依赖,后置的深网络负责对每个时间步的特征做更强的非线性加工,且不引入额外的时序耦合,训练更稳定。
循环块的灵活替换
这些循环块不必是简单 RNN,还可以是:
- GRU 块(Gated Recurrent Unit,门控循环单元)
- LSTM 块(Long Short-Term Memory,长短期记忆网络)
补充背景:GRU 与 LSTM 通过门控机制缓解简单 RNN 的梯度消失问题,能捕捉更长程的依赖,是构建深层循环结构的常用组件。
六、双向 RNN 的深度版本 [04:17]
- 同样可以构建双向 RNN 的深层版本
- 即把双向结构(前向 + 后向)在纵向上堆叠多层
思考:双向结构能同时利用过去和未来的上下文,深度版本则进一步增强表达能力,但计算成本也成倍上升。
七、计算成本与实践建议 [04:23]
为什么深层 RNN 少见
- 训练计算代价极高:时间维度本身已很长
- 再叠加多层纵向连接,训练成本急剧膨胀
- 因此深层循环层(时间上相连)的数量远少于普通深度网络的层数
实践提醒:如果确实需要更深,优先考虑"少量循环层 + 后置深前馈网络"的混合结构,而不是盲目堆叠循环层。
八、本周内容总结 [04:52]
视频结尾回顾了本周学到的序列模型"工具箱":
- 基础 RNN(Basic RNN)
- 基础循环单元(Basic Recurrent Unit)
- GRU(门控循环单元)
- LSTM(长短期记忆网络,视频中口误为 "LCN",实为 LSTM)
- 双向 RNN(Bidirectional RNN)
- 深度 RNN(Deep RNN,即本节内容)
掌握这些组件后,就拥有了构建强大序列模型的丰富"积木"。
关键要点速记(红色重点汇总)
- 记号:$a^{[l]\langle t \rangle}$ —— 方括号为层,尖括号为时间步
- 计算:$a^{[l]\langle t \rangle} = g\left(W_a^{[l]}\left[a^{[l]\langle t-1 \rangle},\ a^{[l-1]\langle t \rangle}\right] + b_a^{[l]}\right)$
- 参数共享:同层跨时间共享,跨层不共享
- 深度直觉:RNN 因时间维度,3 层已很深,不做上百层
- 常见架构:循环层 + 无横向连接的深前馈网络
- 块可替换:简单 RNN / GRU / LSTM
- 可扩展:双向 RNN 也能做深度版本
- 代价:深层 RNN 计算昂贵,慎堆循环层
标签 / 关键词
深度RNN、Deep RNN、序列模型、吴恩达、循环神经网络、RNN记号、$a^{[l]\langle t \rangle}$、参数共享、GRU、LSTM、双向RNN、Bidirectional RNN、时间步、层堆叠、计算成本、展开计算图
生成时间:2026-10-11 00:28:24 生成平台:VideoNote www.xygy.top