LSTM 与 GRU
本节定位
上一节你已经看到 RNN 会“边读边记”。
这一节要解决一个更现实的问题:
如果普通 RNN 记不住太久,怎么办?
LSTM 和 GRU 就是为了解决这个“会读,但容易忘”的问题。
学习目标
- 理解普通 RNN 为什么容易忘掉远处信息
- 直觉理解门控机制在做什么
- 掌握 LSTM 的 cell state 和三种门
- 掌握 GRU 的更新门与重置门
- 看懂 PyTorch 中
nn.LSTM和nn.GRU的输入输出 - 理解什么时候更适合用 LSTM,什么时候 GRU 已经够用
一、为什么普通 RNN 不够?
1.1 一个经典问题:长距离依赖
看这句话:
“我小时候在上海住过很多年,所以虽然现在搬走了,但我最熟悉的城市还是上海。”
如果模型在最后读到“上海”时,要知道前面说的是哪座城市,它就必须把很久之前的信息一路记下来。
普通 RNN 理论上可以做到,但实践里经常会遇到:
- 越往后,早期信息越容易被冲淡
- 训练时梯度容易消失
- 序列一长,记忆就不稳
1.2 一个直觉类比
普通 RNN 很像你在纸条上不断改写一小段摘要:
- 每来一句新话,就把旧摘要改一下
问题是:
- 摘要空间太小
- 旧信息容易被覆盖
所以后面就出现了一个更聪明的思路:
不要只靠一个“会变的摘要”,而要让模型学会“哪些该忘、哪些该留、哪些该输出”。
这就是门控机制。
二、LSTM 的核心直觉:给记忆加上“门”
2.1 LSTM 到底多了什么?
LSTM 在普通 RNN 基础上,最关键的增强是:
- 多了一条更稳定的记忆通道:
cell state - 多了几道门,控制信息流
可以先把它理解成:
普通 RNN 像只有一个小本子,LSTM 则像一套更精细的记忆管理系统。
2.2 LSTM 的三道门
| 门 |
|---|