Files
AgentMessage/rnn-lstm-gru/rnn_research.md

9.0 KiB
Raw Permalink Blame History

RNN → LSTM → GRU循环神经网络发展史与技术原理总结


一、RNN循环神经网络

1.1 核心原理

RNN 的核心思想是引入循环结构,使网络能够"记住"之前的信息并将其用于当前时刻的计算。RNN 的隐藏状态 h_t 不仅取决于当前输入 $x_t$,还取决于上一时刻的隐藏状态 $h_{t-1}$


h_t = f(W_{xh} \cdot x_t + W_{hh} \cdot h_{t-1} + b_h)

其中 $W_{xh}$、W_{hh} 为共享权重矩阵,f 通常为 \tanh\text{ReLU} 激活函数。

这种设计天然适合序列数据(文本、时间序列、语音等),因为它建模了数据的时序依赖关系。

1.2 BPTT反向传播通过时间

RNN 的训练需要将网络沿时间步展开unfold,形成一个深度前馈网络,然后使用标准反向传播算法。由于每个时间步共享权重矩阵 $W$,误差需要从最后一个时间步一路传回第一个时间步——这就是 BPTTBackpropagation Through Time

1.3 梯度消失与梯度爆炸

BPTT 面临一个根本性问题:梯度需要沿时间链回传,涉及对同一权重矩阵 W反复链式求导


\frac{\partial h_t}{\partial h_{t-k}} = \prod_{i=k+1}^{t} \frac{\partial h_i}{\partial h_{i-1}} = \prod_{i=k+1}^{t} W^T \cdot \text{diag}(f'(h_{i-1}))
  • |W| 的特征值 > 1梯度指数增长 → 梯度爆炸,权重大幅震荡,训练发散
  • |W| 的特征值 < 1梯度指数衰减 → 梯度消失,早期时间步的梯度接近零,网络无法学习长期依赖

直观地说RNN 在处理长序列时,早期的信息被后期信息稀释或覆盖,导致"记不住太早的事情"。

1.4 RNN 的发展时间线

时间 里程碑事件
1982 John Hopfield加州理工发明 Hopfield Network最早的 RNN 雏形,用于组合优化问题
1986 Michael Jordan 定义 Recurrent 概念,提出 Jordan Network
1990 Jeffrey Elman 简化 Jordan Network使用 BP 算法训练,形成现代最简 RNN 结构
1990s RNN 因梯度消失/爆炸问题训练困难,应用受限

二、LSTM长短期记忆网络

2.1 解决了什么问题

LSTM 由 Sepp HochreiterJürgen Schmidhuber1997 年在论文*"Long Short-Term Memory"*中提出,核心目标是解决标准 RNN 的长期依赖问题——即让网络能够记住很久以前的信息,同时避免梯度消失。

2.2 核心原理:门控机制 + 细胞状态

LSTM 引入了细胞状态Cell State C_t 作为信息传递的"高速公路",以及三个门控单元来控制信息流动:

遗忘门Forget Gatef_t

决定上一时刻的细胞状态 C_{t-1} 中有多少信息应该被"遗忘"


f_t = \sigma(W_f \cdot [h_{t-1}, x_t] + b_f)

输出值在 [0, 1] 之间0 表示完全遗忘1 表示完全保留。

输入门Input Gatei_t + 候选记忆 \tilde{C}_t

决定当前输入中有多少新信息应该写入细胞状态:


i_t = \sigma(W_i \cdot [h_{t-1}, x_t] + b_i) \\
\tilde{C}_t = \tanh(W_C \cdot [h_{t-1}, x_t] + b_C)

细胞状态更新

将遗忘门和输入门结合起来更新细胞状态:


C_t = f_t \odot C_{t-1} + i_t \odot \tilde{C}_t

输出门Output Gateo_t

决定细胞状态中有多少信息输出为当前隐藏状态:


o_t = \sigma(W_o \cdot [h_{t-1}, x_t] + b_o) \\
h_t = o_t \odot \tanh(C_t)

2.3 为什么 LSTM 能解决长期依赖

LSTM 解决梯度消失的关键在于细胞状态的加法更新机制(公式中的 + 号):

  • 梯度可以沿 C_t 路径几乎无损地反向传播,因为这条路径上没有反复的矩阵乘法和非线性激活
  • 门控单元的值在 $[0,1]$,对梯度的缩放是可控的乘法(而非 RNN 中不受约束的矩阵连乘)
  • 每个门都是数据驱动的(由 sigmoid 决定),网络自己学会在何时打开/关闭哪些门

2.4 LSTM 的发展

时间 里程碑事件
1997 Hochreiter & Schmidhuber 提出 LSTM原始版本
1997 Mike Schuster 提出双向 RNNBi-RNN
1999 Gers 等人加入窥视孔连接Peephole Connection,进一步增强门控精度
2000s LSTM 在语音识别、手写识别等任务上开始展现优势
2010s 成为 NLP 领域序列建模的主流架构

三、GRU门控循环单元

3.1 在 LSTM 基础上的简化

GRU 由 Cho et al.2014 年在论文*"Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation"*中提出,是对 LSTM 的一种工程简化,核心思想是:用更少的参数达到相近甚至更好的效果。

3.2 核心原理:两个门

GRU 合并了 LSTM 中的遗忘门和输入门,只保留两个门

更新门Update Gatez_t

决定有多少过去的信息需要传递到未来——相当于 LSTM 中遗忘门 + 输入门的联合作用:


z_t = \sigma(W_z \cdot [h_{t-1}, x_t])

重置门Reset Gater_t

决定有多少过去的信息需要被"忽略"(用于计算新的候选状态):


r_t = \sigma(W_r \cdot [h_{t-1}, x_t])

候选隐藏状态


\tilde{h}_t = \tanh(W \cdot [r_t \odot h_{t-1}, x_t])

最终隐藏状态更新


h_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tilde{h}_t
  • z_t \approx 1 时:几乎完全保留旧状态(相当于 LSTM 的遗忘)
  • z_t \approx 0 时:几乎完全更新为新状态(相当于 LSTM 的输入)

3.3 与 LSTM 的关键对比

对比维度 LSTM GRU
门数量 3个遗忘门、输入门、输出门 2个更新门、重置门
细胞状态 独立的 cell state C_t 无独立 cell state直接用隐藏状态
输出门 有,独立控制输出
窥视孔连接 可选(增强门控精度)
参数数量 较多12个权重矩阵 较少9个权重矩阵
训练速度 较慢 较快参数少约25-30%
表达能力 更强(更精细的控制) 适中
适用场景 长序列、复杂依赖、需要精细控制 中短序列、计算资源受限、数据量较小

3.4 GRU 的优势

  1. 训练更快:参数更少,收敛速度通常快于 LSTM
  2. 小数据集表现好:参数少意味着过拟合风险低
  3. 与 LSTM 几乎等价:在许多任务上性能相当
  4. 结构更简洁:便于实现和调试

四、发展脉络总结

4.1 时间线总览

1982  Hopfield Network最早的 RNN 雏形)
  ↓
1990  Elman RNN + BPTT现代 RNN 基础)
  ↓
      ⚠️ 梯度消失/爆炸问题困扰学界
  ↓
1997  LSTM 提出Hochreiter & Schmidhuber
      门控机制 + 细胞状态解决长期依赖
  ↓
1999  LSTM + Peephole Connection
  ↓
2014  GRU 提出Cho et al.
      LSTM 的简化版本,参数更少
  ↓
2014  Seq2Seq + Attention机器翻译突破
  ↓
2015  Attention is All You NeedTransformer
      全新架构,完全替代 RNN 在 NLP 的地位
  ↓
2018-  BERT、GPT、预训练模型时代

4.2 为什么要发展这些模型

问题 解决方案
标准 RNN 无法处理长序列 LSTM门控机制 + 细胞状态)
LSTM 参数量大、训练慢 GRU简化门控结构
RNN 梯度消失无法学习远程依赖 LSTM/GRU 的加法路径保证梯度流
序列并行计算需求 TransformerSelf-Attention 替代 RNN

4.3 当前地位

  • LSTM / GRU:在时间序列预测、语音识别、音乐生成、实时流处理等场景仍是常用选择,尤其在计算资源受限或需要流式处理的场景中比 Transformer 更高效。
  • Transformer:在大多数 NLP 任务上占据主导地位,因其并行计算能力强、长期依赖建模更直接。
  • 演进趋势RNN → LSTM/GRU → Transformer 是序列建模的主流演进路径,但 RNN 系列并未消亡,在特定垂直场景(嵌入式、低延迟、工业 IoT仍有生命力。

五、核心原理对比一览

数学公式对照

组件 RNN LSTM GRU
隐藏状态更新 h_t = f(W[x_t,h_{t-1}]) h_t = o_t \odot \tanh(C_t) h_t = (1-z_t)h_{t-1} + z_t\tilde{h}_t
梯度传播路径 反复矩阵乘法(不稳定) 细胞状态加法路径(稳定) 加法路径(稳定)
长期信息保留
短期信息更新
门控机制 3个门 2个门
参数复杂度

参考来源本总结综合了维基百科、华为云、知乎、CSDN、D2L.ai、Den

ny Britz 博客等多个来源的技术内容整理而成。

文档目的:系统梳理 RNN → LSTM → GRU 的技术发展脉络,为深度学习序列建模提供清晰的学习参考。