LSTM的反向传播时间(BPTT)

时间:2016-11-29 14:52:48

标签: tensorflow backpropagation lstm

我目前正在尝试了解TensorFlow中LSTM的BPTT。我得到了参数" num_steps"用于RNN推出的范围和错误反向传播。我有一个关于它是如何工作的一般性问题。

供参考重复公式。我指的是: Formulas LSTMhttps://arxiv.org/abs/1506.00019

问题: 那些步骤反向传播的路径是什么?恒定误差轮播由公式5创建,并且反向传播的推导(s(t) - > s(t-1))对于所有时间步长都是1。这就是LSTM捕获长程依赖性的原因。我对h(t-1)的g(t),i(t),f(t)和o(t)的依赖性感到困惑。用语言来说:当前的门不仅取决于输入,还取决于最后隐藏的状态。

这种依赖性是否会再次引发爆炸/消失的渐变问题?

如果我沿着这些连接反向传播,我得到的渐变不是一个。窥视孔连接基本上会导致同样的问题。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

我终于找到了答案:

在LSTM的原始论文(https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0ahUKEwjOybDTstDQAhWJiywKHVigAioQFgg6MAI&url=http%3A%2F%2Fdeeplearning.cs.cmu.edu%2Fpdfs%2FHochreiter97_lstm.pdf&usg=AFQjCNGoFvqrva4rDCNIcqNe_SiPL_VPxg)中,(第4章,第7页)说:

学习。我们使用RTRL的变体(例如,Robinson和Fallside 1987),它恰当地考虑了由输入和输出门引起的改变的乘法动力学。但是,确保非通过截断的BPTT(例如,Williams和Peng 1990),通过内存状态单元的内部状态衰减误差反向,到达\存储器单元网络输入的错误“(对于单元cj,这包括netcj,netinj,netoutj)不会传播回来进一步及时(尽管它们确实用于改变输入的重量)。仅在2个存储器单元内,错误通过先前的内部状态scj传播回来。“

基本上:关于内部状态的反向传播已完成,但其他复杂的依赖关系不会反向传播