1. RNN循环神经网络计算过程全景解析
循环神经网络(RNN)作为处理序列数据的利器,在自然语言处理、时间序列预测等领域有着广泛应用。但很多初学者在理解其计算过程时,常被各种公式符号绕得晕头转向。今天我就用最直白的语言+公式推导+实际运行示例,带大家彻底搞懂RNN的前向计算过程。
先看一个生活场景:当你阅读文章时,大脑会记住前文内容来理解当前句子——这正是RNN的核心思想。与传统神经网络不同,RNN引入了"记忆"机制,通过隐藏状态(hidden state)保存历史信息。这种结构使其特别适合处理具有时间依赖性的数据。
关键认知:RNN的"循环"体现在对同一组参数的重复使用,而非数据在时间步间的信息传递。这是理解后续计算的基础。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. RNN计算过程拆解
2.1 基本计算单元结构
一个标准的RNN单元包含三个核心部分:
- 输入层(x_t):当前时间步的输入向量
- 隐藏层(h_t):存储历史信息的隐藏状态
- 输出层(y_t):当前时间步的预测输出
其计算关系可以用以下公式表示:
code复制h_t = σ(W_hh * h_{t-1} + W_xh * x_t + b_h)
y_t = W_hy * h_t + b_y
其中σ表示激活函数(通常用tanh),W开头的都是权重矩阵,b是偏置项。
2.2 分步计算详解
让我们用具体数值演示一个时间步的计算过程。假设:
- 输入维度=3,隐藏层维度=2
- 权重矩阵初始化为:
W_xh = [[0.1, 0.2],
[0.3, 0.4],
[0.5, 0.6]]
W_hh = [[0.7, 0.8],
[0.9, 1.0]]
b_h = [0.1, 0.1]
当前输入x_t = [1, 2, 3],上一隐藏状态h_{t-1} = [0.5, 0.5]
计算步骤:
-
W_xh * x_t:
[0.11 + 0.32 + 0.53, 0.21 + 0.42 + 0.63] = [2.2, 2.8] -
W_hh * h_{t-1}:
[0.70.5 + 0.80.5, 0.90.5 + 1.00.5] = [0.75, 0.95] -
相加并加偏置:
