循环神经网络(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等改进结构。