这里讲一下RNN(又称“valina RNN”)&GRU&LSTM三者的具体结构以及之间的联系。
1、RNN
在基本的RNN中(valina RNN),输出和隐状态相同;
2、GRU
加入了reset门和update门,前者用于确定前一步的隐状态有多少可以输入当前步,后者用于确定当前步的隐状态有多少可以输出下一步,结构如下:
多层GRU:
3、LSTM
LSTM加入了输入门、忘记门、输出门,也因此多引入了cell state(细胞状态),结构如下:
多层LSTM:
三者区别:
(1)三者复杂度比较:LSTM > GRU > RNN,当数据集不大时,GRU和LSTM难分伯仲、但是数据集变大时LSTM更优;
(2)RNN和GRU都只有隐状态,而LSTM不仅传递隐状态还传递细胞状态;
(3)GRU:reset门(操作对象为ht-1),update门(操作对象为ht和ht-1);
LSTM:input门(操作对象为ct),forget门(操作对象为ct-1),output门(操作对象为ht);