LSTM网络的渐变

时间:2019-09-11 06:27:13

标签: neural-network lstm recurrent-neural-network backpropagation

我已经使用python从零开始实现了基于LSTM的RNN,这似乎是可以学习的,即,我可以看到平均交叉熵随着时间的推移而下降,但是在某些时候它开始上下波动,所以我开始对梯度表示怀疑计算。我遵循Colah’s Blog

中定义的标准LSTM

LSTM equations

RNN上方的密集层,所以:

Dense layer

最后,损失函数定义为:

enter image description here

要更新密集层的权重,我计算:

Dense layer weight update

在时间步长T = 3时,从密集层发送到RNN的错误信号:

gradient at t=3

在t = 2时,我们计算梯度并将其与在t = 3时计算出的梯度相加

gradient at t=2

在每个时间步结束时,我将所有梯度求和

gradient sum

这迭代直到t = 1,并且我以相同的方式计算了每个参数的梯度。最后,我应用梯度下降算法来更新参数。

我们通常将enter image description here从t = 3向后传递到t = 2,就像使用任何标准前馈网络一样。关于enter image description here,我仍然不确定其传入梯度应该是什么,因为它不依赖于先前的隐藏状态,还是独立的?

这些步骤正确吗?如果没有,有人可以解释一下是什么问题吗?

0 个答案:

没有答案