1. 循环神经网络基础概念
循环神经网络(Recurrent Neural Network, RNN)是处理序列数据的经典架构。与传统前馈神经网络不同,RNN引入了"记忆"的概念,通过隐藏状态的循环传递,使网络能够保留历史信息。这种特性使其特别适合处理时间序列、自然语言等具有时序关系的数据。
在RNN中,每个时间步的计算可以表示为:
h_t = σ(W_{hh}h_{t-1} + W_{xh}x_t + b_h)
y_t = W_{hy}h_t + b_y
其中σ通常为tanh或ReLU激活函数。这种结构使得网络可以对任意长度的序列进行处理,理论上可以捕捉长期依赖关系。但实际应用中,标准RNN存在明显的梯度消失问题,难以学习长距离依赖。
提示:RNN的梯度消失问题源于反向传播时梯度需要连乘多个Jacobian矩阵。当序列较长时,梯度会指数级衰减或爆炸。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 长短期记忆网络(LSTM)原理详解
LSTM(Long Short-Term Memory)是RNN的改进架构,通过精心设计的门控机制解决了长期依赖问题。其核心在于三个门(输入门、遗忘门、输出门)和一个细胞状态:
-
遗忘门:决定从细胞状态中丢弃哪些信息
f_t = σ(W_f·[h_{t-1}, x_t] + b_f) -
输入门:确定哪些新信息将被存储到细胞状态
i_t = σ(W_i·[h_{t-1}, x_t] + b_i)
C̃_t = tanh(W_C·[h_{t-1}, x_t] + b_C) -
细胞状态更新:
C_t = f_t * C_{t-1} + i_t * C̃_t -
输出门:决定输出哪些信息
o_t = σ(W_o·[h_{t-1}, x_t] + b_o)
h_t = o_t * tanh(C_t)
这种结构使LSTM可以选择性地记住或忘记信息,有效缓解梯度消失问题。在实践中有几个关键点需要注意:
- 初始化技巧:细胞状态通常初始化为全零,隐藏状态建议使用小的随机值
- 梯度裁剪:虽然LSTM缓解了梯度爆炸,但仍建议实施梯度裁剪(如设置阈值为5.0)
- 层数选择:2-3层LSTM通常效果最佳,更深可能导致训练困难
3. 双向LSTM(BiLSTM)架构解析
双向LSTM通过同时考虑过去和未来的上
