据说 RNN 在面对长记忆条件时会遭受梯度消失的困扰,而 LSTM 是一种解决方案,因为它可以同时保留长期和短期记忆。但我无法理解两个基本的东西:
1- LSTM 单元的两个输出(单元状态和隐藏值)都是根据单元状态、隐藏值和输入的先前值计算的。这样的递归操作将使单元状态和隐藏变量都具有长记忆。有什么不同?
2- 我们怎么能说 LSTM 减少了梯度消失的机会?如果门允许长记忆,消失的梯度也会发生。如果他们不这样做,因此他们阻塞了长内存链,我们怎么能说我们有长内存操作呢?
据说 RNN 在面对长记忆条件时会遭受梯度消失的困扰,而 LSTM 是一种解决方案,因为它可以同时保留长期和短期记忆。但我无法理解两个基本的东西:
1- LSTM 单元的两个输出(单元状态和隐藏值)都是根据单元状态、隐藏值和输入的先前值计算的。这样的递归操作将使单元状态和隐藏变量都具有长记忆。有什么不同?
2- 我们怎么能说 LSTM 减少了梯度消失的机会?如果门允许长记忆,消失的梯度也会发生。如果他们不这样做,因此他们阻塞了长内存链,我们怎么能说我们有长内存操作呢?
关于问题(2),消失/爆炸梯度也发生在 LSTM 中。
在普通 RNN 中,梯度是一个依赖于取幂的因子(是您执行反向传播的步数)[1]。这意味着大于 1 的值会爆炸,小于 1 的值会快速收缩。
另一方面,LSTM 中的梯度没有与 [2] 取幂的项。因此,梯度仍然会收缩/爆炸,但速度低于普通 RNN。
[1]:Pascanu, R., Mikolov, T., Bengio, Y.,关于训练循环神经网络的难度,2013 年 2 月 - https://arxiv.org/pdf/1211.5063.pdf
[2]:拜耳,贾斯汀·西蒙。学习序列表示。迪斯。München, Technische Universität München, Diss., 2015, 2015 - 在https://stats.stackexchange.com/a/263956/191233中提到
LSTM 网络的基本单元是具有多个 LSTM 单元的 LSTM 层。
细胞确实有内部细胞状态,通常缩写为“c”,细胞输出是所谓的“隐藏状态”,缩写为“h”。
常规 RNN 确实只有隐藏状态,没有单元状态。事实证明,RNN 很久以前就难以访问信息。
例如,检查这两个长句子:
奶牛,吃绿绿的……绿草还可以。
牛,那吃绿绿……绿草还行。
RNN 很难学习单数/复数依赖,但 LSTM 有能力做到这一点。