1. 什么是循环神经网络?
基于记忆模型的想法,记住前面出现的特征,并依据特征推断后面的结果,并且整体的网络结构不断循环,因此得名循环记忆网络。
RNN(Recurrent Neural Network)是一类用于处理序列数据的神经网络。常见的序列数据如语音、文本等,这类数据处理时需要依赖时间和记忆力。
百度百科词条:时间序列数据是指在不同时间点上收集到的数据,这类数据反映了某一事物、现象等随时间的变化状态或程度。这是时间序列数据的定义,当然这里也可以不是时间,比如文字序列,但总归序列数据有一个特点——后面的数据跟前面的数据有关系。
2. 循环神经网络RNN及2个经典变形应用:LSTM 和 GRU
2.1 RNN
这本身是一个网络,将网络的输出保存在一个记忆单元中,这个记忆单元和下一次的输入Xn一起进入神经网络中,但是却可以无限次的作用即展开后图下图右侧所示。
进一步展开该图为
但存在一定的问题,记忆最大的问题是在于它有遗忘性,RNN无法解决长时依赖问题。
更详细可参考:RNN讲解
2.2 LSTM
LSTM(long short-term memory)是1997年由Hochreiter和Schmiduber提出的。长短期记忆网络是RNN的一种变体,RNN由于梯度消失的原因只能有短期记忆,LSTM网络通过精妙的门控制将短期记忆与长期记忆结合起来,并且一定程度上解决了梯度消失的问题。
LSTM是由3个门来控制的,分别是输入门、遗忘门和输出门。输入门控制网络的输入、遗忘门控制着记忆单元、输出门控制着网络的输出。
更详细可参考:理解LSTM
2.3 GRU
GRU(Gated Recurrent Unit)是LSTM网络的一种效果很好的变体,它由Cho在2014年提出。它较LSTM网络的结构更加简单,在于GRU将遗忘门和输出门合成了一个“更新门”,效果也很好,因此也是当前非常流形的一种网络。GRU既然是LSTM的变体,因此也是可以解决RNN网络中的长依赖问题。
更详细可参考:GRU介绍
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:深度学习之——循环神经网络RNN及其变形LSTM,GRU - Python技术站