我无法理解为什么在LSTM中,展开次数,即在训练或预测期间立即考虑的时间步数,这一点非常重要。无论是取消排序/时间步数是1还是100,LSTM状态在每个时间步都发生变异。这仅仅是在常规前馈神经网络中随机梯度下降与小批量梯度下降之间的差异吗?
假设您有100,000个有序的培训示例。你可以按顺序一次训练他们一个例子。
假设在预测时,你有一个"句子" (例如)10个单词,你想预测第11个单词。您可以在展开的网络中一次将10个单词提供给LSTM,或者您可以一次向LSTM提供一个单词,然后观察第10个单词后面的预测。我怀疑,如果我们试图预测不同长度的句子的下一个单词,那么一次一个例子的网络会有问题(因为理想情况下我们会在不同句子的预测之间重置短期记忆)但我对此非常朦胧,并感谢回答者的任何见解。
答案 0 :(得分:2)
仅针对培训定义展开。在评估期间,没有展开这样的东西,您只需输入数据并保持隐藏状态。但是,对于培训,它具有巨大的效果。为了更好地理解这一点,让我们看看下面的图表,展开3。
mainline
在反向传播期间,LSTM t + 3 和LSTM t + 2 之间存在 no 信号,因为前向循环中使用的参数具有已经更新。为了从LSTM t + 3 和LSTM t + 2 获得信息的“流”,你必须存储x t + 2 在内存中能够计算偏导数,但是没有流到LSTM t + 1 ,所以你在内存中也需要x t + 1 ,并且等等。另一方面,长时间展开可能会使梯度流动变得困难,从而导致问题。
这是一个比仅仅决定批量大小更大的问题:在这种情况下,你实际上在一个案例中处理缺乏学习信号,而在另一个案例中可能更难以进行培训。此外,在许多应用程序中,您只是无法展开直到序列结束,因为某些序列可能是无限的,或者需要实际使用模型执行其他操作(例如在RL中,其中一方面适合模型,但是,另一方面,您使用相同的模型来收集新数据)。