趋近智
循环神经网络(RNN)及其变体,如LSTM和GRU,在序列建模方面取得了显著进展。然而,它们在处理任务中遇到的复杂且通常较长的序列时,仍面临一些实际问题。这些固有的局限性正是Transformer等新型架构得以发展的原因。
简单RNN最常讨论的局限之一是难以捕捉序列中相距较远元素之间的依赖关系。这主要源于梯度消失问题。
在训练过程中,RNN使用时间反向传播(BPTT)。梯度(误差信号)需要从输出一直向后流到早期时间步以更新权重。在深度网络或长序列中,这些梯度在反向传播过程中,由于激活函数(如sigmoid或tanh)和权重矩阵的影响,会被反复乘以小于1的值,从而变得极其微小。
试想一下,如果想根据序列中较晚发生的错误来更新网络。如果梯度信号在到达相关的早期步骤时变得消失般微小,网络就实际未能学习到早期输入与后期输出之间的关联。过去信息的影响消退得太快了。
∂W∂E=t=1∑T∂W∂Et=t=1∑Tk=1∑t∂yt∂Et∂ht∂yt∂hk∂ht∂W∂hk项 ∂hk∂ht 涉及循环权重矩阵和激活函数导数的重复乘法。如果这些因子持续很小,那么来自遥远的过去步骤(k≪t)的总体梯度贡献就会减小。
反之,梯度也可能爆炸(变得过大),导致训练不稳定。虽然像梯度裁剪这样的技术可以处理梯度爆炸,但梯度消失对学习长期模式构成了更根本的障碍。
尽管LSTM和GRU专门设计了门控机制,以缓解梯度消失问题并更好地控制信息流动,但它们仍然按顺序处理信息,并且与基于注意力的模型相比,在处理极长依赖关系时可能会遇到困难。
RNN按顺序逐元素处理序列。时间步t处的隐状态ht的计算根本上依赖于前一时间步的隐状态ht−1:
ht=f(Whhht−1+Wxhxt+bh)这种固有的顺序依赖性意味着,在ht−1可用之前,无法计算ht。尽管可以在批次中对不同序列之间的计算进行并行化,但无法对单个序列内部的计算进行跨时间步并行化。
这对于长序列来说是一个重要的瓶颈。GPU和TPU等现代硬件非常适合大规模并行计算。RNN由于其逐步的性质,无法充分利用这种能力,导致与允许更多并行处理序列元素的架构相比,训练时间更长。
在使用RNN构建的经典序列到序列(seq2seq)模型中,编码器处理整个输入序列,并将其所有信息压缩成一个单一的、固定大小的上下文向量(通常是编码器RNN的最终隐状态)。然后,这个向量被传递给解码器RNN,解码器RNN使用它来生成输出序列。
试图将潜在的非常长和复杂的输入句子(例如,用于翻译的一段文字)的含义压缩到一个固定大小的向量中是困难的。这充当了一个信息瓶颈。网络很难保留所有相关细节,特别是长输入序列开头的具体细节或信息。解码器只能访问这个压缩后的摘要,可能丢失原始输入中的重要细节。
这些局限,即因梯度问题导致的长距离依赖困难、无法在序列内部并行化计算,以及基本seq2seq模型中固定大小上下文向量的信息瓶颈,促使人们寻找替代方法。这一寻找直接促成了注意力机制的出现,该机制允许模型在每一步回顾整个输入序列,并选择性地关注最相关部分,从而解决了RNN的许多这些不足。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造