8.14. RNN: 循环神经网(Recurrent Neural Network, RNN)¶
RNN,循环神经网络,也有人将它翻译为递归神经网络。从这个名字就可以想到,它的结构中存在着“环”。
确实,RNN 和 NN/DNN 的数据单一方向传递不同。RNN 的神经元接受的输入除了“前辈”的输出,还有自身的状态信息,其状态信息在网络中循环传递。
RNN 的结构用图形勾画出来,是下图这样的:
备注
注意:图中的 A 并不是一个神经元,而是一个神经网络块,可以简单理解为神经网络的一个隐层。
RNN 的这种结构,使得它很适合应用于序列数据的处理,比如文本、语音、视频等。这类数据的样本间存在顺序关系(往往是时序关系),每个样本和它之前的样本存在关联。
RNN 把所处理的数据序列视作时间序列,在每一个时刻 t,每个 RNN 的神经元接受两个输入:当前时刻的输入样本 Xt,和上一时刻自身的输出 Ht-1:
前图经过进一步简化,将隐层的自连接重叠,就成了下图
上图展示的是最简单的 RNN 结构,此外 RNN 还存在着很多变种,比如双向 RNN(Bidirectional RNN),深度双向 RNN(Deep Bidirectional RNN)等。
RNN 的作用最早体现在手写识别上,后来在语音和文本处理中也做出了巨大的贡献,近年来也不乏将其应用于图像处理的尝试。
备注
循环神经网络常被用于处理变长的、序列相关的数据