是否在LSTM中使用了多少次展开?

问题描述 投票:3回答:1

我不明白为什么在LSTM中,为了在训练或预测期间一次考虑的时间步数,非预订数量是非常重要的。无论是取消排序/时间步数是1还是100,LSTM状态在每个时间步都发生变异。这仅仅是在常规前馈神经网络中随机梯度下降与小批量梯度下降之间的差异吗?

  • 假设您有100,000个有序的训练示例。你可以按顺序一次训练他们一个例子。
  • 假设在预测时,你有一个“句子”(例如),有10个单词,你想要预测第11个单词。您可以在展开的网络中一次将10个单词提供给LSTM,或者您可以一次向LSTM提供一个单词,然后观察第10个单词后面的预测。我怀疑,如果我们试图预测不同长度的句子的下一个单词,那么一次一个例子的网络会有问题(因为理想情况下我们会在不同句子的预测之间重置短期记忆)但是我对此非常朦胧,并会感谢回答者的任何见解。
machine-learning lstm
1个回答
2
投票

展开仅针对培训进行定义。在评估期间,没有展开这样的东西,您只需输入数据并保持隐藏状态。但是,对于培训来说,它会产生巨大的影响。为了更好地理解这一点,让我们看一下unrol 3的下图。

                       UPDATE
                          |
                          v
LSTM_t-LSTM_t+1-LSTM_t+2     LSTM_t+3-LSTM_t+4-LSTM_t+5 .... 
 |      |        |            |        |        |
x_t    x_t+1    x_t+2        x_t+3    x_t+4    x_t+5

在反向传播期间,LSTMt + 3和LSTMt + 2之间没有信号,因为前向循环中使用的参数已经更新。为了从LSTMt + 3和LSTMt + 2获得信息的“流”,你必须在内存中存储xt + 2才能计算偏导数,但是没有流到LSTMt + 1,所以你在内存中也需要xt + 1,依此类推。另一方面,长时间展开可能会使梯度流动变得困难,从而导致问题。

这是一个比仅仅决定批量大小更大的问题:在这种情况下,你实际上在一个案例中处理缺乏学习信号,而在另一个案例中可能更难训练。此外,在许多应用程序中,您只是无法展开直到序列结束,因为某些序列可能是无限的,或者需要实际使用模型执行其他操作(例如在RL中,其中一方面适合模型,但是,另一方面,您使用相同的模型来收集新数据)。

© www.soinside.com 2019 - 2024. All rights reserved.