循环神经网络(Recurrent Neural Network)

#循环神经网络(RNN)
一般结构

循环神经网络(Recurrent Neural Network)
循环神经网络(Recurrent Neural Network)
#注意是一个结构被运行三次,而不是三个神经网络
循环神经网络(Recurrent Neural Network)
Elman network就是指现在一般说的RNN(包括LSTM、GRU等等)。一个recurrent层的输出经过时延后作为下一时刻这一层的输入的一部分,然后recurrent层的输出同时送到网络后续的层,比如最终的输入层。一个Jordan network说的是直接把整个网络最终的输出(i.e. 输出层的输出)经过时延后反馈回网络的输入层,所以Jordan network的整个网络的所有层都是recurrent的。Elman network和Jordan network通常被统称为Simple recurrent network。
双向RNN
循环神经网络(Recurrent Neural Network)
常用算法
Long Short-term Memory (LSTM)
循环神经网络(Recurrent Neural Network)
循环神经网络(Recurrent Neural Network)
循环神经网络(Recurrent Neural Network)
Multiple-layer LSTM
循环神经网络(Recurrent Neural Network)
循环神经网络(Recurrent Neural Network)
循环神经网络(Recurrent Neural Network)
为什么要把一般的RNN换成LSTM?因为LSTM可以处理gradient vanishing的问题:LSTM可以让error surface不那么崎岖,把平坦的部分拿掉,这样解决了gradient vanishing的问题,但没有解决gradient explosion的问题。
那么,为什么LSTM可以处理gradient vanishing的问题呢?
在一般的RNN中,每个时刻neuron的output都会被放到memory中去,所以在每个时刻memory中的值都会被洗掉。但在LSTM中,是把memory中原来的值乘上一个数再加上一个数,即memory和input是想加的关系。所以LSTM中如果weight影响了memory中的值,那么这个影响会永远都存在(除非forget gate决定洗掉memory,有说法认为要给forget gate很大的bias以使其多数情况下开启),而不像SimpleRNN中memory的值在每个时刻都会被洗掉。
若使用LSTM出现了过拟合,可考虑改用GRU。GRU的精神是“旧的不去,新的不来”,它将input gate与forget gate联动起来:若input gate 开,则forget gate 关。

其它处理gradient descent的技巧还有clockwise RNN, SCRN……
如果random初始化一般RNN的weight,那么用ReLU的效果要比用sigmoid的效果差。如果用单位矩阵初始化一般RNN的weight,那么用ReLU的效果要比用LSTM的效果好。

上一篇:RNN 网络简介


下一篇:基于爬行动物搜索RSA优化LSTM的时间序列预测