趋近智
训练循环网络通常涉及一种称为时间反向传播 (BPTT) 的算法。你可以将其视为将循环网络沿着序列步骤“展开”。这会形成一个看起来非常深的前馈网络,但有一个特点:权重在所有时间步骤(展开视图中的层)之间共享。计算梯度时,误差信号必须从最终输出一直反向流经整个展开结构,直至初始步骤。
在BPTT中,梯度反向传播通过可能许多时间步骤会带来显著的困难。两个最显著的问题是梯度消失问题和梯度爆炸问题。
梯度计算的核心思想是微积分中的链式法则。在BPTT中,损失函数相对于早期时间步骤的参数或隐藏状态(例如 ht)的梯度,需要将许多雅可比矩阵(偏导数矩阵)相乘,每一步梯度反向流动都对应一个雅可比矩阵:
∂ht∂L≈∂hT∂L(k=t+1∏T∂hk−1∂hk)每一项 ∂hk−1∂hk 表示步骤 k 的隐藏状态相对于步骤 k−1 的隐藏状态如何变化。这取决于循环权重和所用激活函数的导数。
如果这些雅可比矩阵中的值趋于很小(具体来说,如果它们的范数或主导特征值始终小于1),那么随着梯度在时间上向后传播得更远(T−t 增加),这个长矩阵乘积将呈指数级缩小。梯度在到达对应于更早时间步骤的层之前,会有效地“消失”到接近零的值。
有什么影响? 网络无法学习序列中相距较远元素之间的关系。如果时间 T 的输出在很大程度上依赖于更早时间 t 的输入或状态,梯度消失会阻止误差信号有效传递到连接该早期输入的权重。网络在处理序列末尾时,基本上会忘记序列的开头。这严重限制了RNN模拟长距离依赖的能力,而这通常是处理长句子或扩展时间序列等顺序数据时的主要目标。
如果雅可比矩阵 ∂hk−1∂hk 中的值持续很大(范数或主导特征值大于1),就会出现相反的问题。在这种情况下,随着梯度在时间上反向传播,长矩阵乘积呈指数级增长。梯度“爆炸”,达到极大的数值。
说明了梯度幅值在BPTT中随着反向时间步传播可能如何变化。梯度消失时幅值趋近于零,而梯度爆炸时幅值迅速增长。(注意:y轴是对数刻度)。
这对训练意味着什么? 梯度爆炸会导致优化过程中网络权重更新过大。这会破坏学习过程的稳定性,常导致模型参数剧烈振荡或完全发散。您可能会观察到训练损失突然飙升或变为 NaN(非数字),因为值超过了标准浮点表示的限制。
梯度爆炸通常比梯度消失更容易检测和缓解。一种常用技术是梯度裁剪,即在权重更新步骤之前,如果梯度总体范数超过预定义阈值,则手动将其按比例缩小。这可以防止导致训练不稳定的巨幅更新。
尽管裁剪有助于解决梯度爆炸,但梯度消失问题对于试图学习长时序模式的简单RNN来说,仍然是一个更基础的障碍。训练基本RNN的这些固有困难,促使了更复杂循环架构的出现,例如长短期记忆网络 (LSTM) 和门控循环单元 (GRUs)。这些模型包含了门控机制,其专门设计用于更好地控制信息流和梯度在扩展序列上的传播,我们接下来将对此进行介绍。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造