简单介绍一下RNN、LSTM 、GRU
RNN
共用一个f,实际上是一个⚪。
LSTM
由初始的1个传输状态h转变为2个传输状态c,h。
c变化的较慢,h变化的较快。
1、·⚪ 是Hadamard Product,也就是操作矩阵中对应的元素相乘,因此要求两个相乘矩阵是同型的。
2、+⚪ 代表进行矩阵加法。
LSTM内部主要有三个阶段:
1、具备长时记忆能力的c状态的记忆阶段 (ct计算)【忘记阶段】
之前的c状态与现在的输入x和h共同改变c
2、具备短时记忆能力的h状态的记忆阶段(ht计算)【选择记忆阶段】
改变后的c与现在的输入x和h共同改变h
3、输出此状态的值的阶段【输出阶段】
用此状态的短时状态h结合参数矩阵W进行输出
GRU
宏观上GRU的结构
微观上GRU的内部结构
r: reset gate
z: update gate
h t-1 ' = r ·⚪ h t-1
这里h' 记忆了xt的数据
附录:常问问题
1、LSTM的参数量问题
LSTM每层每个w矩阵的维度为 hidden_size * [ht-1 , xt],一层有4个这样的w矩阵,所以一层的参数量为 4 * ( hidden_size * [ht-1 , xt] ) 如果是双向LSTM,还要乘2。
GRU一层有3个这样的w矩阵,所以一层的参数量为3 * ( hidden_size * [ht-1 , xt] )
参考:
https://zhuanlan.zhihu.com/p/32085405
https://colah.github.io/posts/2015-08-Understanding-LSTMs/
网友评论