赞
踩
循环神经网络(recurrent neural network, RNN)源自1982年由Saratha Sathasivam提出的霍普菲尔德网络。霍普菲尔德网络因为实现困难,在提出时并且没有被合适地应用。该网络结构也于1986年后被全连接神经网络以及一些传统的机器学习算法所取代。然而:
随着更加有效的循环神经网络结构被不断提出,循环神经网络挖掘数据中的时序信息以及语义信息的深度表达能力被充分利用,并在语音识别、语言模型、机器翻译以及时序分析等方面实现了突破。
1. 原理
RNN的主要用途是处理和预测序列数据。在全连接神经网络或CNN模型中,网络结构都是从输入层到隐含层再到输出层,层与层之间是全连接或部分连接的,但每层之间的节点是无连接的。考虑这样一个问题,如果要预测句子的下一个单词是什么,一般需要用到当前单词以及前面的单词,因为句子中前后单词并不是独立的。比如,当前单词是“很”,前一个单词是“天空”,那么下一个单词很大概率是“蓝”。RNN的来源就是为了刻画一个序列当前的输出与之前信息的关系。从网络结构上,RNN会记忆之前的信息,并利用之前的信息影响后面结点的输出。也就是说,RNN的隐藏层之间的结点是有连接的,隐藏层的输入不仅包括输入层的输出,还包括上一时刻隐藏层的输出。
下图展示了一个典型的RNN。在每一时刻 t ,RNN会针对该时刻的输入结合当前模型的状态给出一个输出,并更新模型状态。从下图中可以看到,RNN的主体结构 A 的输入除了来自输入
将完整的输入输出序列展开,可以得到下图所展示的结构。在图中可以更加清楚地看到RNN在每一个时刻会有一个输入,然后根据RNN前一时刻的状态计算新的状态,并输出
循环网络的展开在模型训练中有重要意义。从图中可以看到,RNN对长度为N的序列展开之后,可以视为一个有N个中间层的前馈神经网络。这个前馈神经网路没有循环链接,因此可以直接使用反向传播算法进行训练,而不需要任何特别的优化算法。这样的训练方法称为“沿时间反向传播” (Back-Propagation Through Time),是训练循环神经网络最常见的方法。
2. 应用
从RNN的结构特征可以很容易看出它最擅长解决与时间序列相关的问题。RNN也是处理这类问题时最自然的神经网络结构。对于一个序列数据,可以将这个序列上不同时刻的数据依次传入RNN的输入层,而输出可以是对序列中下一个时刻的预测,也可以是对当前时刻信息的处理结果(比如语音识别结果)。循环神经网络要求每一个时刻都有一个输入,但是不一定每个时刻都需要有输出。
以机器翻译为例来介绍RNN是如何解决实际问题的。RNN中每一个时刻的输入为需要翻译的句子中的单词。如图8.3所示,需要翻译的句子为ABCD,那么RNN第一段每一个时刻的输入就分别是A、B、C和Dÿ
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。