Recurrent neural network
RNN的网络结构如图所示,不仅考虑输入层的输入,还要考虑memory中的所存储的内容。
RNN在训练过程中会考虑input中的sequence,
RNN分为两种形式:Elman network(将hidden layer中的输出值输入到下一次的训练中)和Jordan Network(将整个网络的输出值输入到下一次的训练中)
Bidirectional RNN:将输入序列的顺序和逆序的输出结果同时考虑,得到最后的输出值y。
LSTM:4个输入(输入以及三个门信号)以及一个输出
LSTM的架构如图所示:
LSTM中的某个ceil结构
多个ceil相连接的方式
Keras中支持LSTM,GRU(只有两个gate,参数较少),SimpleRNN。
RNN的实验结果呈现震荡性的结果
梯度爆炸:RNN网络中容易出现gradient descent非常大的情况,导致训练出错。所以可以采用当gradient descent大于某个阈值时,就等于该阈值。防止参数跳出允许范围。主要原因在于w在不同的时间点都会被重复使用。
为什么RNN使用LSTM?
- 因为LSTM能够解决gradient vanishing的问题。
a. memory中的值和输入是相加的
b.每个输入产生的影响都不会消失,除非forget gate关闭。
GRU(Gated Recurrent Unit):将forget gate 和input gate联动起来,其中一个gate开启,另外一个gate就关闭。
另外两种RNN的变形:Clockwise RNN,SCRN;文献引用如图所示。
RNN可以是many to one的
many to many进行语音辨识
Sequence-to-Sequence Auto-encoder
Attention-based Model
RNN和Structured Learning的区别:RNN可以是深度的,一般结果比较好
将RNN的输出,输入到structure learning中。