循环神经网络
00:00
RNN原理、LSTM门控机制、GRU、序列建模与应用。
1. RNN基本原理
1.1 基本RNN
循环神经网络通过隐藏状态处理序列数据:
h_{t-1} ──→ [RNN Cell] ──→ h_t ──→ [RNN Cell] ──→ h_{t+1}
↑ ↑
x_t x_{t+1}
1.2 RNN变体
| 类型 | 结构 | 适用场景 |
|---|---|---|
| one-to-one | 标准NN | 图像分类 |
| one-to-many | 单输入→序列 | 图像描述 |
| many-to-one | 序列→单输出 | 情感分析 |
| many-to-many | 序列→序列 | 机器翻译 |
| 同步many-to-many | 同步序列 | 视频分类 |
1.3 BPTT(沿时间反向传播)
梯度问题:
当 时梯度消失, 时梯度爆炸。
2. LSTM
2.1 门控机制
LSTM 通过三个门控制信息流动:
遗忘门:决定丢弃哪些信息
输入门:决定更新哪些信息
候选记忆:
细胞状态更新:
输出门:
2.2 LSTM缓解梯度消失
当 时,梯度可以无损传递,有效缓解梯度消失。
2.3 LSTM变体
| 变体 | 改进 | 说明 |
|---|---|---|
| Peephole LSTM | 门控输入包含细胞状态 | 更精确的门控 |
| Coupled LSTM | 遗忘门和输入门联动 | 减少参数 |
| Layer Normalization | 每层归一化 | 稳定训练 |
3. GRU
3.1 门控机制
GRU 是 LSTM 的简化版本,合并了遗忘门和输入门:
重置门:
更新门:
候选隐藏状态:
隐藏状态更新:
3.2 LSTM vs GRU
| 维度 | LSTM | GRU |
|---|---|---|
| 门数量 | 3个(遗忘、输入、输出) | 2个(重置、更新) |
| 细胞状态 | 有 | 无 |
| 参数量 | 多 | 少(约1/3) |
| 训练速度 | 较慢 | 较快 |
| 表达能力 | 更强 | 足够 |
| 适用场景 | 复杂长程依赖 | 中等序列 |
4. 双向RNN与深层RNN
4.1 双向RNN
同时考虑前向和后向信息:
4.2 深层RNN
堆叠多层RNN:
x_t → [RNN Layer 1] → [RNN Layer 2] → [RNN Layer 3] → o_t
每层提取不同层次的序列特征。
5. 序列建模应用
5.1 Seq2Seq
编码器: x_1, x_2, ..., x_T → 上下文向量 c
解码器: c → y_1, y_2, ..., y_{T'}
5.2 注意力机制
| 评分函数 | 公式 |
|---|---|
| 加性 | |
| 乘性 | |
| 点积 | |
| 缩放点积 |