Ch08 RNN序列模型修订于 二〇二六年七月二日

8.3 梯度消失与梯度爆炸:为什么深层 RNN 训练不好

这是 RNN 最核心的技术难题,也是理解 LSTM/GRU 为什么被发明的关键。

8.3.1 梯度是什么

训练神经网络 = 不断调整参数,让预测更准确。梯度就是”每个参数应该往哪个方向调、调多少”的信号。梯度大 = 这个参数需要大幅调整;梯度小 = 这个参数基本不用动。

8.3.2 梯度消失(Vanishing Gradient)

在 RNN 中,梯度要反向传播经过每一个时间步。每经过一步,梯度都要乘以一个系数(通常是小于 1 的数)。经过 100 个时间步,梯度 = 初始梯度 × 系数^100。

如果系数是 0.9,0.9^100 ≈ 0.000027 —— 梯度几乎消失了。这意味着第 100 个词对第 1 个词的参数更新几乎没有影响。模型无法学习长距离依赖关系。

比喻:你玩传话游戏。第一个人说”明天下午三点在图书馆门口见”。经过 100 个人传话后,最后一个人听到的可能是”明天有雨”。信息在传递过程中不断衰减和扭曲——这就是梯度消失。

8.3.3 梯度爆炸(Exploding Gradient)

反过来,如果系数大于 1(比如 1.1),1.1^100 ≈ 13780 —— 梯度爆炸了。参数更新幅度巨大,模型训练不稳定,损失函数上蹿下跳。

比喻:传话游戏里,每个人都在原话上加一句自己的理解。经过 100 个人后,一句话变成了一个故事。信息被不断放大和扭曲——这就是梯度爆炸。

8.3.4 怎么解决

问题解决方案
梯度消失LSTM/GRU 的门控机制(让梯度有一条”高速公路”直通,不经过多次乘法);残差连接
梯度爆炸梯度裁剪(gradient clipping)——设置一个最大值,超过就截断

8.3.5 为什么 LSTM 能缓解梯度消失

LSTM 的细胞状态 C_t 的更新是加法而不是乘法:C_t = f_t × C_{t-1} + i_t × C̃_t。如果遗忘门 f_t 接近 1,旧信息可以几乎无损地沿时间步传递。梯度在反向传播时不需要经过多次乘法衰减——这就是 LSTM 能处理长序列的根本原因。


← 上一节:8.2 LSTM:更长的记忆 | 下一节:8.4 双向 RNN:同时看过去和未来 →

关联6

知识图谱

局部图谱 · 点节点跳转