循环神经网络(RNN)基础与前向传播过程
字数 1705 2025-10-26 22:08:48

循环神经网络(RNN)基础与前向传播过程

题目描述
设计一个简单的循环神经网络(RNN)单元,输入序列为 \(\mathbf{x}^{(1)}, \mathbf{x}^{(2)}, \dots, \mathbf{x}^{(t)}\),其中每个时间步的输入向量维度为 \(d_x\)。RNN的隐藏状态维度为 \(d_h\)。请详细推导RNN在时间步 \(t\) 的前向传播计算过程,包括隐藏状态 \(\mathbf{h}^{(t)}\) 和输出 \(\mathbf{o}^{(t)}\) 的公式,并解释每个参数矩阵的作用。


解题过程
我们将从RNN的核心思想开始,逐步拆解前向传播的数学步骤。

1. RNN的基本结构
RNN的特点是利用循环连接保留历史信息。其关键组件包括:

  • 隐藏状态 \(\mathbf{h}^{(t)}\):存储当前时间步的记忆信息,维度为 \(d_h\)
  • 参数矩阵
    • \(\mathbf{W}_{xh}\)(输入到隐藏的权重):维度 \(d_h \times d_x\),处理当前输入 \(\mathbf{x}^{(t)}\)
    • \(\mathbf{W}_{hh}\)(隐藏到隐藏的权重):维度 \(d_h \times d_h\),处理上一时刻隐藏状态 \(\mathbf{h}^{(t-1)}\)
    • \(\mathbf{b}_h\)(隐藏层偏置):维度 \(d_h\)
    • \(\mathbf{W}_{ho}\)(隐藏到输出的权重):维度 \(d_y \times d_h\),生成输出(\(d_y\) 是输出维度)。
    • \(\mathbf{b}_o\)(输出层偏置):维度 \(d_y\)

2. 前向传播的逐步计算
假设初始隐藏状态 \(\mathbf{h}^{(0)} = \mathbf{0}\),对每个时间步 \(t\) 按顺序计算:

步骤1:计算当前隐藏状态 \(\mathbf{h}^{(t)}\)
公式:

\[\mathbf{h}^{(t)} = \tanh\left( \mathbf{W}_{xh} \mathbf{x}^{(t)} + \mathbf{W}_{hh} \mathbf{h}^{(t-1)} + \mathbf{b}_h \right) \]

  • \(\mathbf{W}_{xh} \mathbf{x}^{(t)}\):将当前输入映射到隐藏空间。
  • \(\mathbf{W}_{hh} \mathbf{h}^{(t-1)}\):融合上一时刻的记忆。
  • 相加后加偏置 \(\mathbf{b}_h\),通过 \(\tanh\) 激活函数(范围 \((-1, 1)\))控制数值稳定性。

步骤2:计算当前输出 \(\mathbf{o}^{(t)}\)
公式:

\[\mathbf{o}^{(t)} = \mathbf{W}_{ho} \mathbf{h}^{(t)} + \mathbf{b}_o \]

  • 若用于分类,可再加 softmax 函数得到概率分布:\(\hat{\mathbf{y}}^{(t)} = \mathrm{softmax}(\mathbf{o}^{(t)})\)

3. 参数矩阵的作用总结

  • \(\mathbf{W}_{xh}\):学习输入特征如何影响隐藏状态。
  • \(\mathbf{W}_{hh}\):控制历史信息的保留强度(长期依赖问题源于此矩阵的重复相乘)。
  • \(\mathbf{W}_{ho}\):将隐藏状态映射到目标输出空间。

关键点说明

  • 循环连接\(\mathbf{h}^{(t-1)}\) 的引入使网络具有记忆能力。
  • 顺序处理:必须按时间顺序计算,不能并行化(与CNN不同)。
  • 梯度问题:实际训练中,\(\mathbf{W}_{hh}\) 的重复相乘易导致梯度消失/爆炸,后续有LSTM、GRU等改进结构。
循环神经网络(RNN)基础与前向传播过程 题目描述 设计一个简单的循环神经网络(RNN)单元,输入序列为 \( \mathbf{x}^{(1)}, \mathbf{x}^{(2)}, \dots, \mathbf{x}^{(t)} \),其中每个时间步的输入向量维度为 \( d_ x \)。RNN的隐藏状态维度为 \( d_ h \)。请详细推导RNN在时间步 \( t \) 的前向传播计算过程,包括隐藏状态 \( \mathbf{h}^{(t)} \) 和输出 \( \mathbf{o}^{(t)} \) 的公式,并解释每个参数矩阵的作用。 解题过程 我们将从RNN的核心思想开始,逐步拆解前向传播的数学步骤。 1. RNN的基本结构 RNN的特点是利用循环连接保留历史信息。其关键组件包括: 隐藏状态 \( \mathbf{h}^{(t)} \) :存储当前时间步的记忆信息,维度为 \( d_ h \)。 参数矩阵 : \( \mathbf{W}_ {xh} \)(输入到隐藏的权重):维度 \( d_ h \times d_ x \),处理当前输入 \( \mathbf{x}^{(t)} \)。 \( \mathbf{W}_ {hh} \)(隐藏到隐藏的权重):维度 \( d_ h \times d_ h \),处理上一时刻隐藏状态 \( \mathbf{h}^{(t-1)} \)。 \( \mathbf{b}_ h \)(隐藏层偏置):维度 \( d_ h \)。 \( \mathbf{W}_ {ho} \)(隐藏到输出的权重):维度 \( d_ y \times d_ h \),生成输出(\( d_ y \) 是输出维度)。 \( \mathbf{b}_ o \)(输出层偏置):维度 \( d_ y \)。 2. 前向传播的逐步计算 假设初始隐藏状态 \( \mathbf{h}^{(0)} = \mathbf{0} \),对每个时间步 \( t \) 按顺序计算: 步骤1:计算当前隐藏状态 \( \mathbf{h}^{(t)} \) 公式: \[ \mathbf{h}^{(t)} = \tanh\left( \mathbf{W} {xh} \mathbf{x}^{(t)} + \mathbf{W} {hh} \mathbf{h}^{(t-1)} + \mathbf{b}_ h \right) \] \( \mathbf{W}_ {xh} \mathbf{x}^{(t)} \):将当前输入映射到隐藏空间。 \( \mathbf{W}_ {hh} \mathbf{h}^{(t-1)} \):融合上一时刻的记忆。 相加后加偏置 \( \mathbf{b}_ h \),通过 \(\tanh\) 激活函数(范围 \((-1, 1)\))控制数值稳定性。 步骤2:计算当前输出 \( \mathbf{o}^{(t)} \) 公式: \[ \mathbf{o}^{(t)} = \mathbf{W}_ {ho} \mathbf{h}^{(t)} + \mathbf{b}_ o \] 若用于分类,可再加 softmax 函数得到概率分布:\( \hat{\mathbf{y}}^{(t)} = \mathrm{softmax}(\mathbf{o}^{(t)}) \)。 3. 参数矩阵的作用总结 \( \mathbf{W}_ {xh} \):学习输入特征如何影响隐藏状态。 \( \mathbf{W}_ {hh} \):控制历史信息的保留强度(长期依赖问题源于此矩阵的重复相乘)。 \( \mathbf{W}_ {ho} \):将隐藏状态映射到目标输出空间。 关键点说明 循环连接 :\( \mathbf{h}^{(t-1)} \) 的引入使网络具有记忆能力。 顺序处理 :必须按时间顺序计算,不能并行化(与CNN不同)。 梯度问题 :实际训练中,\( \mathbf{W}_ {hh} \) 的重复相乘易导致梯度消失/爆炸,后续有LSTM、GRU等改进结构。