前情回要:上节课可以得到用梯度裁剪可以解决梯度爆炸问题,那么对于梯度消失问题,我们可以使用GRU和LSTM来解决。
GRU:
GRU中有两个比较重要的门,一个叫重置门(Rt【reset】),一个叫更新门(Zt【update】),
1,下图中第一个公式是重置门的计算方式,
2, 第二个公式是更新门的计算方式,
3,第三行是暂时的、候选的Ht的计算方式【注意第三个公式中的圆圈中有个点的符号,代表着按位相乘,所以如果我们的Rt取值为0~1之间,可以决定从Ht-1忘记多少东西】
4,第四行是计算下个隐层状态的最终计算方式,可以看到这里引入了更新门Zt,如果Zt=1,那么Ht将完全等于Ht-1,也就是意味着将上个时刻的所有信息继承下来。
LSTM:
1, LSTM有三个门,输入门(It【input gate】)、遗忘门(Ft【Forget gate】)、输出门(Ot【output gate】)
2,第四行是记忆细胞(cell)的候选状态,同上GRU的候选Ht
3,第五行第一个公式是记忆细胞cell的计算方法,cell是用来计算我们所处理过的时序信息。比如如果Ft取0,那么不管前面记忆细胞存储了什么,那么时刻t记忆细胞把所有的信息清空了,遗忘所有过去的信息。
第五行第二个公式就是计算隐层状态的公式,用Ot与tanh(Ct)对位相乘来计算
LSTM的核心思想就是我的cell中存储的信息并不一定要传递到后续的隐层状态中,第五行的第一个公式决定。以及这个cell中的信息要不要体现在我这一时刻隐层状态Ht中,第五行第二个公式实现的。
tanh(x)的值域是(-1,1)之间
RNN的层数是什么意思
我们通过num_layers来设置循环神经网络的隐含层的层数,例如2.
对于一个多层循环神经网络,当前时刻隐含层的输入来自同一时刻输入层(如果有)或上一隐含层的输出,每一层的隐含状态只沿着同一层传递只沿着同一层传递
公式推导见下表
具体流程如下: