系列文章见: 《回忆AI时代-从图灵机到人工智能》
什么是RNN
RNN(Recurrent Neural Network,循环神经网络)是一种专门用于处理序列数据的神经网络,它最大的特点就是具有记忆能力,能够利用之前的信息来理解当前的信息。
譬如,我们让计算机理解这句话今天天气很好,对于人来说我们按顺序阅读今天 → 天气 → 很好当看到”很好”时,我们的大脑已经记住了前面的”今天”和”天气”,因此能够理解整句话,如果只看到最后两个字很好你并不知道到底是什么很好。
因此语言的理解依赖上下文,而上下文本质上就是一种”记忆”,RNN正是为了解决这个问题而设计的。
RNN工作流程
RNN在普通神经网络的基础上,多增加了一份隐藏状态,它可以理解为:
1 | 上一次记忆 |
每处理一个词,RNN都会:
- 接收当前输入
- 读取上一时刻保存的记忆
- 更新新的记忆
- 输出结果
然后,把新的记忆继续传递给下一步。
虽然RNN引入了记忆机制,但它并不完美,例如,一篇几千字的文章:
1 | 第一句话 |
RNN在处理最后一句时,往往已经忘记了第一句话的内容,这就是长期依赖问题。此外,由于 RNN 需要按时间顺序一步一步计算,还存在:
- 梯度消失或梯度爆炸,导致训练困难;
- 无法充分并行计算,训练速度较慢。
为了克服这些问题,后来出现了带门控机制的LSTM和GRU。
什么是LSTM
LSTM(Long Short-Term Memory,长短期记忆网络)是一种专门处理序列数据的循环神经网络RNN架构,旨在缓解传统RNN在长序列训练中出现的梯度消失问题。
它自1997年提出以来,长期是自然语言处理、语音识别、时间序列预测等领域最重要的深度学习模型之一,并且至今仍在许多资源受限或时间序列场景中广泛使用。
为什么需要LSTM
譬如,用户问模型这样一个问题我出生在北京,后来去了上海工作,现在别人问我来自哪里?,模型在回复时需要记住最开始的北京,普通的RNN网络,经过几十步计算后,北京的信息会变得很弱甚至丢失:
1 | 北京的信息 |
而LSTM却一直会保存它。 因为和RNN相比LSTM的创新是引入了一个细胞状态(cell state),如下:
1 | h(t-1) |
其中:
- C(Cell State):长期记忆
- h(Hidden State):当前输出
它可以跨越多个时间步携带信息,同时通过多个门(gate)控制信息流动:
- 遗忘门(Forget Gate):决定哪些历史信息应该保留或丢弃。
- 输入门(Input Gate):决定哪些新的信息写入记忆。
- 输出门(Output Gate):决定当前隐藏状态输出哪些信息。
RNN与LSTM对比
| 特性 | RNN | LSTM |
|---|---|---|
| 是否有长期记忆 | ❌ | ✅ |
| 是否有门控机制 | ❌ | ✅(遗忘门、输入门、输出门) |
| 是否容易梯度消失 | 是 | 大幅缓解 |
| 能处理长序列 | 较差 | 较好 |
| 计算复杂度 | 较低 | 较高 |
| 应用 | 简单序列 | 长文本、语音、时间序列预测等 |
什么是GRU
GRU(Gated Recurrent Unit,门控循环单元)就是一种更简单、更轻量的LSTM
RNN、LSTM和GRU三个对比:
| 特性 | RNN | LSTM | GRU |
|---|---|---|---|
| 长期记忆 | ❌ | ✅ | ✅ |
| 门数量 | 0 | 3 | 2 |
| Cell State | ❌ | ✅ | ❌ |
| Hidden State | ✅ | ✅ | ✅ |
| 参数数量 | 最少 | 最多 | 中等 |
| 训练速度 | 最快 | 最慢 | 较快 |
| 长距离依赖 | 差 | 很好 | 很好 |