RNN介绍
RNNs的目的是用来处理序列数据。
在传统的神经网络模型中,是从输入层到隐含层再到输出层,层与层之间是全连接的,每层之间的节点是无连接的。但是这种普通的神经网络对于很多问题却无能无力。
例如,你要预测句子的下一个单词是什么,一般需要用到前面的单词,因为一个句子中前后单词并不是独立的。
RNNs之所以称为循环神经网路,即
一个序列当前的输出与前面的输出也有关。
具体的表现形式为网络会对前面的信息进行记忆并应用于当前输出的计算中,即隐藏层之间的节点不再无连接而是有连接的,并且隐藏层的输入不仅包括输入层的输出,还包括上一时刻隐藏层的输出。
对于RNN的训练和对传统的ANN训练一样。同样使用BP误差反向传播算法。
在RNNs中,目前使用最广泛最成功的模型便
是
LSTMs(Long Short-Term Memory,长短时记忆模型)模型
,该模型
通常比vanilla RNNs能够更好地对长短时依赖
(即当前的输出与前面很长的一段序列有关)
进行表达,该模型相对于一般的RNNs,只是在隐藏层做了手脚。
LSTMs与一般的RNNs结构本质上并没有什么不同,只是使用了不同的函数去计算隐藏层的状态。