【问题标题】:Backpropagation Through Time (BPTT) of LSTMLSTM 的时间反向传播(BPTT)
【发布时间】:2016-11-29 14:52:47
【问题描述】:

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

供参考的公式的repitition。我指的是: Formulas LSTM (https://arxiv.org/abs/1506.00019)

问题: 反向传播这么多步骤的路径是什么?恒定误差轮播由公式 5 创建,反向传播的导数 (s(t)->s(t-1)) 对于所有时间步长均为 1。这就是 LSTM 捕获长距离依赖关系的原因。我对 h(t-1) 的 g(t)、i(t)、f(t) 和 o(t) 的依赖关系感到困惑。换句话说:当前的门不仅取决于输入,还取决于最后的隐藏状态。

这种依赖性不会再次导致梯度爆炸/消失问题吗?

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

感谢您的帮助!

【问题讨论】:

标签: tensorflow backpropagation lstm


【解决方案1】:

我自己终于找到了答案:

在 LSTMs 的原始论文 (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),到达“\memory cell net inputs”的错误(对于单元 cj,包括 netcj、netinj、netoutj)不会被传播回来更及时(尽管它们确实有助于改变传入的权重)。只有在 2 个内存单元内,错误才会通过先前的内部状态 scj 传播回来。”

所以本质上:关于内部状态的时间反向传播已经完成,但其他复杂的依赖关系没有反向传播

【讨论】:

  • 那是当时。今天使用 Theano/TensorFlow/Pytorch/Chainer/CNTK/you-name-it,没有给予特殊处理,一切都是反向传播的。另外,请注意,虽然单个单元的设计遵循原始论文,但 LSTM 层的设计已被重新考虑(大大简化了恕我直言)。
猜你喜欢
  • 2019-05-23
  • 1970-01-01
  • 2017-05-24
  • 2011-08-25
  • 2017-07-27
  • 2016-04-09
  • 2018-12-28
  • 1970-01-01
  • 2017-01-05
相关资源
最近更新 更多