LSTM 的时间反向传播(BPTT)

数据挖掘 张量流 反向传播
2021-10-07 20:20:18

我目前正在尝试了解 TensorFlow 中长短期记忆 (LSTM) 的 BPTT。我知道该参数num_steps用于推出 RNN 和反向传播错误的范围。我有一个关于这是如何工作的一般性问题。

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

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

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

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

谢谢你的帮助!

2个回答

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

绝对,而且你最好有消失的梯度,否则你会遇到训练问题。

在这种情况下,梯度消失并不是一件坏事,而是一件好事(与前馈不同)。C()是当时评估的成本函数W()有时会成为网络的一部分. 在这种情况下,梯度消失意味着dC()/dW(-)随着你变得越来越大,它变得越来越小。这很好,因为dC()/dW==0n_sepsdC()/dW(-),所以如果梯度没有及时消失,那么梯度就会爆炸。所以W 即使时间梯度消失,也得到适当的非消失梯度,因为梯度为 W 是梯度的总和 W.

在 LSTM 中,梯度肯定会及时消失,因为激活函数是 sigmoid 和 tanh,因此它们的导数小于或等于 1,因此当它们相乘时,它们会慢慢变小。

这与通常所说的梯度消失问题相比,当梯度从顶层传递到底层时会消失,因为这意味着 dC/dW 为了 W 下层的消失,所以下层没有得到训练,只有上层得到训练。

此外,正如评论中提到的,上述内容适用于任何 RNN,而不仅仅是 LSTM。在这个问题上,LSTM 与普通 RNN 的区别在于门控功能,它允许 LSTM 控制它记住什么、忘记什么以及它接受多少新输入。虽然上述对于 LSTM 的实践是正确的(并且在理论上平均也是如此),理论上,一个人可以有一个时间步长 其中输出忽略了最后 10 个输入,仅取决于输入 11 个时间步长 (-11),在这种情况下,11 个时间步之前的权重梯度不会衰减。当然,这意味着在下一个时间步(+1) 11 步前的梯度 (+1-11=-10) 将为零,因为输入在 -10. 所以平均而言,它是平均的,对于 LSTM,你仍然有同样的情况。

我在论文“LSTM:搜索空间奥德赛” https://arxiv.org/abs/1503.04069)中找到了一个很好的解释。如果您想了解训练算法的历史,请阅读第 3 章。

有一个用于 LSTM 的截断 BPTT 版本,它首先被使用,其中单元状态被向后传播许多步,但沿 LSTM 其他部分的梯度被截断。后来的论文中,还使用了全梯度 BPTT,其中沿门等的梯度也及时反向传播。

希望这对你们有帮助!

干杯,托本