循环神经网络(RNN)、LSTM 与 GRU (一)
文章目录
- 循环神经网络(RNN)、LSTM 与 GRU (一)
- 循环神经网络(RNN)、LSTM 与 GRU
- 一、RNN(Recurrent Neural Network)
- 1. 基本思想
- 2. 数学表达
- 3. 优缺点
- 二、LSTM(Long Short-Term Memory)
- 1. 引入背景
- 2. 核心结构
- 3. 状态更新
- 4. 优缺点
- 三、GRU(Gated Recurrent Unit)
- 1. 概述
- 2. 核心公式
- 3. 特点
- 四、对比总结
- 五、结构对比图
- 六、结语
循环神经网络(RNN)、LSTM 与 GRU
一、RNN(Recurrent Neural Network)
1. 基本思想
- RNN 通过在网络中引入“循环”结构,使得当前时刻的输出不仅依赖当前输入,还依赖之前的隐藏状态。
- 适合处理 序列数据,如文本、语音、时间序列预测。
2. 数学表达
- 隐藏层更新:
ht=f(Wxhxt+Whhht−1+bh)h_t = f(W_{xh}x_t + W_{hh}h_{t-1} + b_h) ht=f(Wxhxt+Whhht−1+bh) - 输出层:
yt=g(Whyht+by)y_t = g(W_{hy}h_t + b_y) yt=g(Whyht+by)
3. 优缺点
- 优点:能够建模序列信息,捕捉上下文依赖。
- 缺点:存在梯度消失和梯度爆炸问题,难以学习长期依赖。
二、LSTM(Long Short-Term Memory)
1. 引入背景
- 针对 RNN 的 长期依赖问题,LSTM 在结构上引入了“门控机制”,有效缓解梯度消失问题。
- 在自然语言处理、语音识别、时间序列预测等任务中应用广泛。
2. 核心结构
LSTM 的关键在于 细胞状态(Cell State) 和 三个门(Gates):
-
遗忘门(Forget Gate):决定丢弃多少历史信息。
ft=σ(Wf[xt,ht−1]+bf)f_t = \sigma(W_f[x_t, h_{t-1}] + b_f) ft=σ(Wf[xt,ht−1]+bf) -
输入门(Input Gate):决定写入多少新信息。
it=σ(Wi[xt,ht−1]+bi)i_t = \sigma(W_i[x_t, h_{t-1}] + b_i) it=σ(Wi[xt,ht−1]+bi)
C~t=tanh(Wc[xt,ht−1]+bc)\tilde{C}_t = \tanh(W_c[x_t, h_{t-1}] + b_c) C~t=tanh(Wc[xt,ht−1]+bc) -
输出门(Output Gate):决定输出多少细胞状态的信息。
ot=σ(Wo[xt,ht−1]+bo)o_t = \sigma(W_o[x_t, h_{t-1}] + b_o) ot=σ(Wo[xt,ht−1]+bo)
3. 状态更新
- 细胞状态:
Ct=ft∗Ct−1+it∗C~tC_t = f_t * C_{t-1} + i_t * \tilde{C}_t Ct=ft∗Ct−1+it∗C~t - 隐藏状态:
ht=ot∗tanh(Ct)h_t = o_t * \tanh(C_t) ht=ot∗tanh(Ct)
4. 优缺点
- 优点:能解决长期依赖问题,更好地捕捉长距离信息。
- 缺点:结构复杂,计算量大,训练速度较慢。
三、GRU(Gated Recurrent Unit)
1. 概述
- GRU 是 LSTM 的简化版本,仅包含 更新门(Update Gate) 和 重置门(Reset Gate)。
- 没有独立的细胞状态,直接用隐藏状态传递信息。
2. 核心公式
- 更新门:
zt=σ(Wz[xt,ht−1])z_t = \sigma(W_z[x_t, h_{t-1}]) zt=σ(Wz[xt,ht−1]) - 重置门:
rt=σ(Wr[xt,ht−1])r_t = \sigma(W_r[x_t, h_{t-1}]) rt=σ(Wr[xt,ht−1]) - 新隐藏状态:
h~t=tanh(W[xt,(rt∗ht−1)])\tilde{h}_t = \tanh(W[x_t, (r_t * h_{t-1})]) h~t=tanh(W[xt,(rt∗ht−1)]) - 最终隐藏状态:
ht=(1−zt)∗ht−1+zt∗h~th_t = (1 - z_t) * h_{t-1} + z_t * \tilde{h}_t ht=(1−zt)∗ht−1+zt∗h~t
3. 特点
- 结构更简洁,参数更少,训练更快。
- 在很多任务中性能与 LSTM 接近甚至更优。
四、对比总结
特性 | RNN | LSTM | GRU |
---|---|---|---|
结构 | 简单,循环层 | 复杂,含门控单元(3门+细胞状态) | 较简洁,仅2门 |
长期依赖建模 | 弱 | 强 | 强 |
计算复杂度 | 低 | 高 | 中等 |
训练速度 | 快 | 慢 | 较快 |
典型应用 | 简单序列建模 | 机器翻译、语音识别 | NLP、推荐系统、时序预测 |
五、结构对比图
六、结语
- RNN 是序列建模的基础,但受限于梯度消失问题。
- LSTM 通过门控机制成功解决长期依赖,是深度学习里程碑式的模型。
- GRU 在保持效果的同时,计算更高效,是实际工程中的常见选择。
总结一句:
如果序列较短,用 RNN 即可;
如果需要捕捉长期依赖,LSTM 更稳健;
如果追求训练速度和效果平衡,GRU 是不错的选择。