之前写过一部分LSTM-理解 Part-1(RNN:循环神经网络)
这是其中的第二部分,阐述RNN的局限性。
The Problem of Long-Term Dependencies
长期依赖问题
长期依赖问题指的是在序列数据中,某些元素之间存在着较长时间的依赖关系,而这种依赖关系在传统的神经网络中很难被学习和捕捉。传统神经网络如多层感知机(MLP)和循环神经网络(RNN)等,由于只能对局部信息进行处理,因此在处理长序列时会出现梯度消失或爆炸的问题,导致模型无法学习到序列中的长期依赖关系。
循环神经网络的吸引力之一在于它们可以将先前的信息连接到当前任务中,例如使用以前的视频帧可以增进对当前帧的理解。如果循环神经网络能够做到这一点,那么它们将非常有用。但是,它们能吗?这要取决于情况。
有时,我们只需要查看最近的信息就能完成当前任务。例如,考虑一个语言模型,它试图根据先前的单词预测下一个单词。如果我们正在尝试预测“the clouds are in the sky”中的最后一个单词,我们不需要任何进一步的上下文 - 很明显下一个单词将是“sky”。在这种情况下,相关信息和需要使用的位置之间的差距很小,循环神经网络可以学习使用过去的信息。类似下图。
但是,也有一些情况需要更多的上下文信息。考虑尝试预测文本“I grew up in France… I speak fluent French.”中的最后一个单词。最近的信息表明下一个单词可能是一种语言的名称,但是如果我们想缩小是哪种语言的范围,我们需要从更远处的“France”这个上下文中获取信息。很可能相关信息和需要使用的位置之间的差距变得非常大。
不幸的是,随着这种差距的增大,循环神经网络变得无法学习连接信息。
理论上,循环神经网络完全有能力处理这种“长期依赖关系”。人类可以精心地为它们选择参数,以解决这种形式的玩具问题。可悲的是,在实践中,循环神经网络似乎无法学习它们。Hochreiter(1991)[德语]和Bengio等人(1994)对这个问题进行了深入的探讨,发现存在一些非常基本的原因,使得这可能很困难。
Thankfully, LSTMs don’t have this problem!
Reference
LSTM-理解 Part-1(RNN:循环神经网络)
Understanding LSTM Networks
[干货]深入浅出LSTM及其Python代码实现
YouTube视频:Illustrated Guide to LSTM’s and GRU’s: A step by step explanation