深入理解LSTM
GRU和LSTM都是RNN的一种特殊模型,它们的出现是为了解决RNN存在rnn 的梯度消失问题,我们今天从lstm的公式推导以及它的应用来说明以这些问题。
lstm的模型可适应较为深的神经网络,它的通用模型有三个门,遗忘门,更新门,输出门,
lstm 和 GRU的原理差不多,都能够让你可以在序列中学习非常深的连接。其他类型的单元也可以让你做到这个,比如LSTM即长短时记忆网络,甚至比GRU更加有效,让我们看看。
由上可知gru有两个门:
更新门(the update gate)
相关门(the relevance gate)
LSTM是一个比GRU更加强大和通用的版本,我们来对比一下它们的区别:
这就是LSTM主要的式子(上图编号2所示),我们继续回到记忆细胞c上面来,使用来更新它的候选值(上图编号3所示)。注意了,在LSTM中我们不再有的情况,这是现在我们用的是类似于左边这个式子(上图编号4所示),但是有一些改变,现在我们专门使用或者,而不是用,我们也不用,即相关门。虽然你可以使用LSTM的变体,然后把这些东西(左边所示的GRU公式)都放回来,但是在更加典型的LSTM里面,我们先不那样做。
lstm改成了三个门:
Iu :更新门的系数,主要决定该时间点更新的C<t>的系数
If:是遗忘门的系数,主要决定上个时间点C<t-1>的保留程度,If 越小,保留程度越低
Io:是输出门 的系数,主要决定C<t>于a<t>的映射关系。
注意:以上的系数求解,都用到了sigmod**函数,最后的系数都是在0—1之间,可以无限的接近于0,比如0.0001,0.00001等等,但不会等于零,可以使得lstm网络的反向传播求导的过程中,不会出现梯度消失的问题,这就是GRU和LSTM 能够训练深layer的原因,这种消除梯度爆炸的方法比较类似于残缺网络(RETNETS),有兴趣的可以了解一下。
LSTM前向传播图:
LSTM反向传播计算:
门求偏导:
参数求偏导 :
为了计算 需要各自对 求和。
最后,计算隐藏状态、记忆状态和输入的偏导数:
大家如果对以上的推导过程有疑惑的话可以交流。