用于时间序列预测的有状态 LSTM - 每个输入序列是否应移动 1 个时间步或“sequenceLength”时间步

数据挖掘 神经网络 rnn lstm
2022-03-13 09:39:43

我正在构建一个 LSTM 来尝试了解一些时间序列数据集的历史趋势(例如公司的每日股价)。在训练我的网络时,我采用大小为 1 的批次,每个批次包含 25 个连续的每日收盘价,然后在第 26 天预测价格。

假设用于训练的时期中的第一个序列开始于t=0并结束于t=24. 我正在使用有状态的 LSTM,因此获取一批的输出状态并将其输入到下一批的状态,这是否意味着我的第二批必须是[t=25,t=49]?

我可以改为“滑动”每批 1 个时间步,以便第二批是[t=1,t=25],或者这是否破坏了批次之间传递状态的目的?

1个回答

第二批应该是 [t=25,t=49] 因为有状态的 LSTM必须是顺序的,因为正如您正确地说的,如果您随后输入 t=2,网络的状态处于 t=24 的状态(或除 t=25 以外的任何东西),那么排序就搞砸了。

使用无状态 LSTM,您可以从任何起点创建序列,但使用无状态 LSTM,必须观察序列。

在随后的时期,您可以更改起始索引,以便输入不同的序列。没有错。我个人生成一个介于 0 和序列长度之间的随机数。