何时使用有状态 LSTM?

数据挖掘 时间序列 rnn lstm 生成模型
2021-09-27 04:27:55

我正在尝试在时间序列数据上使用 LSTM,以生成在值和进展方向方面看起来像原始序列的未来序列。我的做法是:

  • 训练 RNN 以根据 25 个过去值预测一个值,然后使用该模型通过将预测值附加到原始序列并移动旧值来递归地生成未来预测......

在使用 LSTM 单元时,我发现该模型无法学习生成看起来像原始数据的序列。它只预测下一个值,然后开始收敛到一个“平衡”或静态值,无论输入序列是什么,它都是相同的。

我想知道有状态 LSTM 是否有助于从过去的值中更好地学习并尝试预测接近它已有的东西?我的目标是生成看起来像模型已经看到的序列。

请让我知道我是否遗漏了什么,或者您是否有类似的情况,并且您找到了生成时间序列序列的最佳方法,该方法看起来像模型过去所学的那样。

2个回答

至于有状态的LSTM及其理解,参考这里从那里引用一个答案:

我得到了一个大序列(例如时间序列),我将其拆分为更小的序列来构建我的输入矩阵 X。LSTM 是否有可能找到序列之间的依赖关系?

不,除非您选择有状态的 LSTM,否则这是不可能的。大多数问题都可以使用无状态 LSTM 解决,因此如果您选择有状态模式,请确保您确实需要它。在无状态模式下,长期记忆并不意味着 LSTM 会记住之前批次的内容。”

因此,如果您希望为下一次训练保存神经元的状态而不是重置它,则有状态很有用。

“我的目​​标是生成看起来像模型已经看到的序列。”

那么也许这个 sequence2sequence (seq2seq) LSTM 编码器-解码器正是你所需要的。

看到这篇文章:https ://stackoverflow.com/questions/47594861/predicting-a-multiple-time-step-forward-of-a-time-series-using-lstm

您应该在 Y 的移动 X 上进行训练。然后通过新的 weights.h5 并如图所示进行预测。