视频封面

视频元信息

  • 课程来源:吴恩达深度学习专项课程(Deep Learning Specialization)——序列模型(Sequence Models)第一周
  • 章节编号:p158 / 1.3 循环神经网络模型(Recurrent Neural Network Model)
  • 语言:官方中英双语
  • 主题:从标准神经网络处理序列数据的缺陷出发,构建基础 RNN 的前向传播模型

内容摘要(TL;DR)

本节从标准神经网络处理序列任务的两大缺陷入手,引出循环神经网络(RNN)。核心内容为:RNN 的展开结构、参数共享机制、前向传播公式推导,以及将 Waa 与 Wax 横向拼接为 Wa 的记号简化。同时指出单向 RNN 只能利用序列前文信息的局限性,为后续双向 RNN 埋下伏笔。


一、用标准神经网络处理序列任务的缺陷 [00:11]

1.1 任务回顾

在上一节中,命名实体识别(Named Entity Recognition)任务被用作示例:给定 9 个输入单词,判断每个单词是否属于人名的一部分,输出 9 个 0/1 值。

理解:这里的核心是把一个序列映射到另一个等长序列,属于"多对多"(many-to-many)结构,且输入输出长度在样本间可能不同。

1.2 直接使用标准神经网络的两大问题

问题一:输入和输出长度在不同样本中可能不同

  • 不是每个样本都有相同的输入长度 $d_x$ 或输出长度 $d_y$。
  • 一种补救方式是零填充(zero padding)到统一最大长度,但这仍不是好的表示方式。

问题二(更严重):网络无法在不同文本位置之间共享特征

  • 如果网络在位置 1 学到"Harry 后跟句点"暗示人名,我们希望它在位置 $x_t$ 学到同样的规律时能自动泛化。
  • 这类似于卷积神经网络(CNN)中希望图像某处学到的特征快速泛化到图像其他位置。

易错点:CNN 的参数共享是空间维度上的,RNN 的参数共享是时间/序列维度上的,二者思想一致但作用轴不同。

1.3 参数量爆炸问题

  • 每个单词是 10,000 维的 one-hot 向量。
  • 若总输入 = 最大单词数 × 10,000,则第一层权重矩阵参数量极其庞大。
  • 思考:这本质上是"把序列位置当作独立特征"带来的维度灾难,RNN 通过参数共享从根本上解决该问题。

二、RNN 的结构构建 [02:33]

2.1 从左到右扫描序列

  • 读入第一个词 $x_1$,送入神经网络层,尝试预测输出 $\hat{y}_1$(是否为人名的一部分)。
  • 读入第二个词 $x_2$ 时,不只使用 $x_2$,还接收上一时间步的激活值。
  • 具体来说,时间步 1 的激活值 $a_1$ 被传递到时间步 2。
  • 依次类推,直到最后时间步输入 $x_{T_x}$,输出 $\hat{y}_{T_y}$。

理解:这是"记忆"机制的雏形——每个时间步的隐藏状态携带了此前所有输入的信息摘要。

2.2 关于 $T_x$ 与 $T_y$

  • 本示例中 $T_x = T_y$。
  • 考点:若 $T_x \neq T_y$,网络架构需要相应调整(如多对一、一对多等结构)。

2.3 初始激活 $a_0$

  • 需要一个"虚构"的 $a_0$ 来启动整个链条。
  • 最常见选择:全零向量。
  • 部分研究者会随机初始化 $a_0$,但零向量是最主流做法。

易错点:$a_0$ 是人为设定的初始状态,不属于从数据中学到的参数,不要与权重矩阵混淆。

2.4 两种图示:展开图 vs 循环图

  • 展开图(unrolled diagram):横向展开每个时间步,课程中主要使用。
  • 循环图(recurrent diagram):用自环或阴影框表示"延迟一步",常见于论文和教材。
  • 吴恩达建议:看到循环图时,在脑海中将其展开为左侧的展开图来理解。

思考:展开图更直观地揭示了计算图结构,也便于推导反向传播(BPTT)。


三、参数共享机制 [05:55]

3.1 三组共享参数

  • $W_{ax}$:控制从输入 $x$ 到隐藏层的连接,每个时间步使用同一组参数。
  • $W_{aa}$:控制隐藏层之间的水平连接(激活值传递),每个时间步使用同一组参数。
  • $W_{ya}$:控制从隐藏层到输出预测的连接。

考点:参数共享是 RNN 的核心优势——无论序列多长,参数量不随序列长度增长。

3.2 信息流动的直观理解

  • 预测 $\hat{y}_3$ 时,不仅用到 $x_3$,还通过 $a_1 \to a_2 \to a_3$ 的路径用到了 $x_1$ 和 $x_2$ 的信息。

四、单向 RNN 的局限性 [07:11]

4.1 问题描述

  • 预测 $\hat{y}_3$ 时,不使用 $x_4, x_5, x_6$ 等后续信息。
  • 即:只利用了序列中较早的信息,无法利用后文。

4.2 经典示例:Teddy 的歧义

  • 句子一:"He said Teddy Roosevelt was a great president."(Teddy 是人名)
  • 句子二:"He said Teddy bears are on sale."(Teddy 不是人名)
  • 仅凭前三个词无法区分,必须看到后面的词才能判断。

考点:这是单向 RNN 的固有局限,解决方案是双向 RNN(BRNN),将在后续视频讲解。

理解:这个例子精妙地说明了"上下文"对序列任务的重要性——前文和后文都是上下文。


五、RNN 前向传播的显式公式 [08:54]

5.1 初始化

$$a_0 = \vec{0}$$

5.2 计算 $a_1$

$$a_1 = g(W_{aa} \cdot a_0 + W_{ax} \cdot x_1 + b_a)$$

5.3 计算 $\hat{y}_1$

$$\hat{y}1 = g(W \cdot a_1 + b_y)$$

5.4 下标命名约定

  • $W_{ax}$:第二个下标 $x$ 表示该矩阵乘以 $x$ 类量;第一个下标 $a$ 表示用于计算 $a$ 类量。
  • $W_{ya}$:乘以 $a$ 类量,计算 $y$ 类量。

考点:记住"后下标=输入类型,前下标=输出类型"的命名规则,后续复杂模型会反复用到。

5.5 激活函数的选择

  • 隐藏层激活 $g$:通常用 tanh,偶尔用 ReLU。
  • 推导:tanh 输出范围 $[-1,1]$,零中心化,通常比 sigmoid 收敛更快;ReLU 有助于缓解梯度消失。
  • 输出层激活:
    • 二分类问题(如命名实体识别)→ sigmoid
    • K 路分类问题 → softmax

易错点:隐藏层和输出层使用不同的激活函数,公式中虽都写作 $g$,但实际是两个不同的函数,有时记作 $g_1$ 和 $g_2$。

5.6 一般化的时间步公式

$$a_t = g(W_{aa} \cdot a_{t-1} + W_{ax} \cdot x_t + b_a)$$

$$\hat{y}t = g(W \cdot a_t + b_y)$$

5.7 前向传播流程

  1. 从 $a_0 = \vec{0}$ 开始
  2. 用 $a_0$ 和 $x_1$ 计算 $a_1$ 和 $\hat{y}_1$
  3. 用 $a_1$ 和 $x_2$ 计算 $a_2$ 和 $\hat{y}_2$
  4. 依次从左到右推进,直至序列末尾

六、记号简化:从两个矩阵到一个矩阵 [12:35]

6.1 简化动机

为了便于开发更复杂的模型,将 $W_{aa}$ 和 $W_{ax}$ 合并为一个矩阵 $W_a$。

6.2 矩阵横向拼接

$$W_a = [W_{aa} \mid W_{ax}]$$

  • 若 $a$ 是 100 维,$x$ 是 10,000 维:
    • $W_{aa}$:$100 \times 100$
    • $W_{ax}$:$100 \times 10{,}000$
    • $W_a$:$100 \times 10{,}100$

6.3 向量纵向堆叠

$$\begin{bmatrix} a_{t-1} \ x_t \end{bmatrix}$$

  • $a_{t-1}$ 是 100 维,$x_t$ 是 10,000 维,堆叠后为 10,100 维向量。

6.4 等价性验证

$$W_a \cdot \begin{bmatrix} a_{t-1} \ x_t \end{bmatrix} = W_{aa} \cdot a_{t-1} + W_{ax} \cdot x_t$$

推导:分块矩阵乘法展开后,恰好等于原来两项之和,因此记号简化是数学等价的。

6.5 简化后的公式

$$a_t = g(W_a \cdot [a_{t-1}, x_t] + b_a)$$

$$\hat{y}_t = g(W_y \cdot a_t + b_y)$$

  • 输出侧同理,$W_{ya}$ 简写为 $W_y$,$b_y$ 保持不变。
  • 命名逻辑:$W_y$ 表示"计算 $y$ 类量的权重矩阵",$W_a$ 和 $b_a$ 表示"计算激活类量的参数"。

易错点:简化记号中 $[a_{t-1}, x_t]$ 表示纵向堆叠(concatenation),不是相加,也不是点积。维度必须匹配才能拼接。


七、本节小结与后续预告 [16:26]

  • 本节完整讲解了基础 RNN 的结构、参数共享、前向传播公式及记号简化。
  • 下一节将讨论反向传播(backpropagation)以及如何学习这些 RNN 参数。
  • 后续还会介绍双向 RNN(BRNN)以解决单向 RNN 无法利用后文信息的局限。

思考:RNN 的前向传播是"沿时间展开的计算图",反向传播需要沿时间反向传播梯度(BPTT),这会引出梯度消失/爆炸问题,也是后续 LSTM、GRU 的动机。


关键标签 / 关键词

循环神经网络 #RNN #序列模型 #前向传播 #参数共享 #命名实体识别 #激活函数 #tanh #sigmoid #softmax #双向RNN #BRNN #吴恩达深度学习 #序列建模 #one-hot #梯度消失


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