03 深度学习进阶本域第 5 篇
循环神经网络
让网络拥有“记忆”:同一个单元沿着时间反复使用,处理任意长度的序列
定义
循环神经网络是一类处理序列的网络。它在每个时间步读入一个输入,同时接收上一步的隐状态,算出新的隐状态并输出。由于同一个单元在时间上反复复用、且各步共享同一组权重,它能处理变长序列,并把历史信息带入当前判断。
直观理解
读一句话就像听一个人讲话:你不需要重听整段,而是一边听一边在心里更新“到目前为止讲了什么”——这份不断改写的摘要就是隐状态。可惜普通 RNN 的“记忆”很短:信息每经过一步就被乘一次,几十步之后早先的内容要么被冲淡(梯度消失)、要么被放大到失控(梯度爆炸)。门控机制,本质上就是给这份摘要加了几道“该记、该忘、该说”的闸门。
沿时间展开的循环网络:同一个单元在每个时间步读入 xₜ、更新隐状态 hₜ 并输出 yₜ,相邻隐状态之间传递同一组共享权重 Wₕ
序列越长,普通 RNN 越难保留早期信息,准确率大幅下滑;带门控的 LSTM/GRU 在长序列上明显更稳(任务为长程依赖基准,数量级取自典型公开结果)
- 普通 RNN
- LSTM
- GRU
工作原理
- 01
隐状态与时间展开
hₜ = f(W hₜ₋₁ + U xₜ + b)。虽然名字叫“循环”,实际训练时会沿时间轴展开成一条很深的链,每个时间步共享同一组权重。
- 02
梯度消失与爆炸
误差要沿时间反向传播(BPTT),每步都乘以权重矩阵与激活导数。连乘使梯度随步数指数衰减或增长,长程依赖因此很难学到。
- 03
门控机制:LSTM 与 GRU
LSTM 用输入门、遗忘门、输出门决定“记什么、忘什么、露什么”,并用一条近似恒等的细胞状态通道保护梯度;GRU 用更少的门达到相近效果。
- 04
被注意力取代
即便有门控,RNN 仍必须按顺序逐步计算,无法像 Transformer 那样并行,也难以稳定记忆极长上下文。注意力机制用“直接看到全部位置”替代“逐字传递”,于是成为今天的主流。
应用场景
- 语言建模与机器翻译(在注意力普及之前的主流方案)
- 语音识别、手写识别等按帧推进的任务
- 时间序列预测:传感器、气象与金融数据
- 序列到序列任务的编码器与解码器
常见误区
- “RNN 有记忆”是有限度的:普通 RNN 的有效记忆通常只有几十步,超出这个范围的信息很难保留。
- LSTM 是缓解而非根治长程依赖。门控增加了计算量,却没有改变顺序计算的本质瓶颈。
- 训练时用真值引导(teacher forcing)、推理时自由生成,两者的分布差异会累积并放大误差。
关键术语
- 隐状态
- 随时间更新的“到目前为止”的摘要向量
- BPTT
- 沿时间展开后做反向传播
- 门控
- 用 Sigmoid 输出的 0–1 系数控制信息通过量
- 长程依赖
- 序列中相距很远的元素之间的相互影响