我不明白为什么在LSTM中,为了在训练或预测期间一次考虑的时间步数,非预订数量是非常重要的。无论是取消排序/时间步数是1还是100,LSTM状态在每个时间步都发生变异。这仅仅是在常规前馈神经网络中随机梯度下降与小批量梯度下降之间的差异吗?
展开仅针对培训进行定义。在评估期间,没有展开这样的东西,您只需输入数据并保持隐藏状态。但是,对于培训来说,它会产生巨大的影响。为了更好地理解这一点,让我们看一下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中,其中一方面适合模型,但是,另一方面,您使用相同的模型来收集新数据)。