趋近智
循环网络的核心思想是维持一个隐藏状态,该状态携带来自先前时间步的信息,以影响当前步骤的处理。这种核心思想,通过SimpleRNN等层得到体现,对于捕获序列中的上下文非常有效。然而,训练这些网络,特别是较简单的网络,会遇到一个主要的实际难题,主要被称为梯度消失问题。
回顾一下,神经网络通过根据损失函数的梯度来调整其权重进行学习。这个梯度表示每个权重的微小变化会如何影响最终损失。在训练过程中,我们使用反向传播来计算这些梯度。在RNN中,由于给定时间步的输出依赖于先前时间步的计算,我们需要反向传播梯度,这不仅通过当前时间步的层进行,而且还 通过时间 本身进行。这个过程常被称为时间反向传播(BPTT)。
想象一下将RNN沿序列展开。时间步 的计算依赖于 时刻的输入和 时刻的隐藏状态。 时刻的隐藏状态依赖于 时刻的输入和 时刻的隐藏状态,以此类推。当计算损失相对于影响早期隐藏状态(例如,在时间步 )的权重的梯度时,链式法则要求我们将许多梯度项相乘,每个我们反向传播的时间步都对应一项。
具体来说,梯度计算涉及反复乘以一个时间步的隐藏状态相对于前一个时间步隐藏状态的导数。这个导数通常包含循环权重矩阵以及循环单元中使用的激活函数的导数。
当这些项持续小于1时,问题就出现了。考虑一个简单情况,其中梯度计算的相关部分涉及反复乘以一个值,例如 。
随着你在时间上进一步反向传播,梯度幅度呈指数级缩小,趋近于零。
示意图,说明在简单RNN中,梯度幅度在时间步中反向传播时如何呈指数级下降。
为什么这些项可能小于1?
梯度消失的影响很大:网络难以学习序列中距离较远元素之间的依赖关系。如果与早期时间步相关的梯度变得微乎其微,那么与该时间步相关的权重将无法有效更新。网络基本上无法“记住”或从许多步骤之前看到的信息中学习。对于文本生成或情感分析等任务,理解上下文可能依赖于之前很久看到的词或短语,这是一个主要限制。
SimpleRNN 架构特别容易出现这个问题,因为它缺乏机制来长时间调节信息和梯度的流动。隐藏状态在每个步骤中被简单地覆盖,使得难以保留来自遥远过去的重要信息。
虽然在实践中较少见但在数学上可能,相反的问题也可能发生:梯度爆炸。如果相关的梯度项持续大于1,它们的乘积可以呈指数级增长,导致巨大的梯度、不稳定的训练和数值溢出(训练期间经常导致 NaN 值)。梯度裁剪(将梯度幅度限制在某个阈值)等技术常用于缓解梯度爆炸。
然而,梯度消失问题是简单RNN试图捕获长期依赖关系时更持久的难题。这一局限性是开发更复杂的循环架构(如长短期记忆(LSTM)和门控循环单元(GRU))的主要驱动力,我们接下来将检查这些架构。这些架构包含显式门控机制,旨在更好地控制信息和梯度随时间流动,使它们能够在序列数据中学习更长期的模式。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造