[6-2]RNN学习笔记

RNN

模型在开始时给初始值,会根据前一个不同而改变output。
RNN可以是deep layer,可以是Bidirectional RNN。
可以随时去读记忆体cell。

LSTM

[6-2]RNN学习笔记
假设目前已经有c,现要输入z。
1 用Gate自行学要不要读取,有三个门来决定。
三个门由Zi, Zf, Zo控制
2 有4个input 1个output,使用sigmod(值域0-1)来决定进入的比例。
**注意:forget gate的想法是相反的,Zf=1全开代表记得;Zf=0关闭才是忘记。

相较于nerual network ,把一个cell当成是一个nerual,所以如果一样的nerual,LSTM需要四倍的参数。
btw, 实际上LSTM下一个时间点的输入有两个(其一是上一层的hidden layer)

RNN很难训练

假设来说,当输入为1,训练1000次,权重=1时最后输出=W**999,但当W<<1时输出~=0了。而w>>1时很爆炸。因此权重w可能造成的影响很大。
办法:LSTM把平坦地方解决,避免梯度消失。因为RNN会把mermory洗掉,但LSTM对mermory都在。
bty, LSTM第一版提出时是没有forget gate的。
其他办法解决梯度消失:一般RNN 初始用 identity matrix + ReLu的表现会比sigmod好,表现比LSTM佳。

长输入-短输出