视频封面

视频元信息

  • 所属课程:吴恩达深度学习专项课程 - 序列模型(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}$ 为例

该激活值有两个输入来源:

  1. 来自下方(同一时间步、上一层):$a^{[1]\langle 3 \rangle}$
  2. 来自左侧(同一层、上一时间步):$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]

视频指出,实践中更常见的一种结构是:

  1. 先堆叠若干循环层(层与层之间有横向时间连接)
  2. 取最上层输出,再接入一个不含横向连接的普通深层网络
  3. 该深层网络在每个时间步上独立预测输出,例如预测 $\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]

视频结尾回顾了本周学到的序列模型"工具箱":

  1. 基础 RNN(Basic RNN)
  2. 基础循环单元(Basic Recurrent Unit)
  3. GRU(门控循环单元)
  4. LSTM(长短期记忆网络,视频中口误为 "LCN",实为 LSTM)
  5. 双向 RNN(Bidirectional RNN)
  6. 深度 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