循环神经网络(Recurrent Neural Network,RNN)可被理解为包含与时间相关的反馈循环或者反向传播的前馈神经网络。在循环神经网络中,神经元(暂时)释放前,它们只能在有限的时间内处于活动状态。反过来,这些神经元在下一个时间点又会激活其他神经元使之处于活动状态。本质上讲,我们可将循环神经网络看作包含额外时间变量的多层感知器。由于具备这样的时间属性和自身的动态结构,使得网络不光能接受当前的输入值,还可以接受此前的其他输入。
尽管循环神经网络在语音识别、语言翻译,以及手写识别等领域成效显著,不过这种网络架构训练起来却相当困难。这是因为我们不能简单地将错误逐层反向传播,而必须考虑到时间维度,它放大了梯度消失与梯度爆炸的问题。在1997年,Juergen Schmidhuber和他同事提出了所谓的长短时记忆(long short-term memory)单元来解决此问题[1]。
此外,我们还应注意,循环神经网络有许多种不同类型的变体,关于它们的详细讨论已经超出了本书的范围。
[1] S. Hochreiter and J. Schmidhuber. Long Short-term Memory. Neural Computation, 9(8):1735-1780, 1997.