Module 01 · Recurrent Neural Networks
Deep RNNs深度 RNN
到目前为止,您已经学习了 RNN(循环神经网络) 的不同版本,并且这些版本本身已经能够很好地工作。然而,在学习复杂的函数时,堆叠多个RNN层 来构建 更深的模型 是非常有用的。在本视频中,我们将介绍如何构建 深度RNN,让我们一起看一下。
标准神经网络与深度RNN的关系
标准神经网络结构
在标准的神经网络中,通常有以下几个步骤:
- 输入:从输入层 X 开始。
- 隐藏层:接着传递到多个隐藏层,每个隐藏层都有激活值,例如:
- 第一层的激活值为
- 第二层的激活值为
- 以此类推
- 预测输出:最终经过多个层后,模型进行预测 。
深度RNN 也类似于这种结构,只不过它将时间维度引入其中。
深度RNN的工作原理
RNN的层次堆叠
让我们从一个标准RNN出发,构建深度RNN。为了简化表示,我们使用以下的记号:
- :表示 第 l 层 在 时间 t 时刻的激活值。
例如,一个包含三个隐藏层的RNN网络,激活值计算过程如下:
- 第1层():
- 来自底层和左侧的信息共同作用,产生第一层的激活值。
- 第2层():
- 这个层接收来自上一层()和底层输入的激活值,并经过相应的计算。
每一层都有自己独立的权重矩阵 和偏置 ,如图所示:
- 第1层的参数:,
- 第2层的参数:,
通过这种方式,网络可以逐层堆叠,以实现更深的结构。

深度RNN中的层级计算示例
假设一个三层的深度RNN,激活计算的流程如下:
- 第2层计算:
- 输入:来自第1层的激活值(例如 ),以及输入数据(例如 )。
- 使用激活函数 g 和权重矩阵 计算激活值:
- 第1层计算:
- 通过类似的方式计算第一层的激活值,参数是 和 。
深度RNN的架构与组合
堆叠RNN的网络架构
- 在标准的 RNN 中,可能会看到多个隐藏层堆叠在一起。但对于 RNN 来说,即使只有三层,它已经具有相当大的复杂度,因为时间维度会使网络变得更加庞大。
- 另外一种更常见的做法是,堆叠 递归层,但每一层的输出并不相互连接,而是由多个 深度网络 进行处理。例如,输出 可能由一个递归层接入深度网络生成,而 、、 等则由后续的深度网络进行预测。

深度网络的连接方式
这种网络通常的形式是递归层依时间连接,而深度网络部分则采用垂直堆叠的方式,形成一个 深度递归网络(例如多个RNN层后接深度网络):
- 正向连接:递归单元按照时间步长连接。
- 深度网络:递归层输出接入深度网络。
深度RNN中的变种与扩展
- 深度双向RNN(Bidirectional RNN):除了常见的标准RNN,还可以构建 深度双向RNN,即在 正向 和 反向 的信息流中堆叠多个递归单元。这种结构能够同时考虑 过去 和 未来 的信息,进一步提升模型的表达能力。
- RNN、GRU、LSTM的组合:堆叠层不一定局限于标准的RNN,也可以是 GRU 或 LSTM 模型,这使得网络在处理长序列时更加高效。
深度RNN的计算复杂度
- 训练复杂度:由于深度RNN需要较长的 时间维度,因此它们在训练过程中通常计算量非常大。这也意味着,虽然可以堆叠多个递归层,但实际中,我们通常不会看到超过三层的递归堆叠。
- 与传统深度神经网络的比较:与传统的深度神经网络相比,深度RNN的递归层数通常较少。即使是有多个隐藏层的递归结构,它们的计算量也会受到 时间维度 的制约。
总结:深度RNN的优缺点
| 优点 🏅 | 缺点 ⚠️ |
|---|---|
| 能够处理复杂的序列任务 | 计算复杂度较高,训练时间长 |
| 可以堆叠多个递归层以增强模型表达能力 | 递归层数通常不超过三层 |
| 可与GRU、LSTM结合使用,提升性能 | 对于长序列的训练需求较高 |
| 适用于长时序依赖问题 | 相较于传统深度网络,递归层数较少 |
结语
通过本周的学习,您已经掌握了从 基本RNN 到 GRU、LSTM、双向RNN,以及这些模型的 深度版本。现在,您拥有了一个非常丰富的工具箱,能够构建强大的 序列学习模型。
祝您在问题练习中取得好成绩,并期待下周的课程!🎓