【问题标题】:Time series forecast with recurrent Elman network in neurolab在神经实验室中使用递归 Elman 网络进行时间序列预测
【发布时间】:2016-06-22 14:55:20
【问题描述】:

我使用Elman recurrent network from neurolab 来预测连续值的时间序列。网络是从一个序列中训练出来的,输入是索引i处的值,目标是索引i+1处的值。

为了在下一个时间步之外进行预测,网络的输出作为输入反馈。例如,如果我打算预测 i+5 处的值,我将按照以下步骤进行。

  1. 输入来自i的值
  2. 获取输出并将其作为下一个输入值馈送到网络(例如i+1
  3. 再重复 1. 到 3. 四次
  4. 输出是i+5的值的预测值

因此,对于下一时间步之后的预测,必须使用先前激活的输出来激活循环网络。

然而,在大多数示例中,网络已经输入了一个完整的序列。例如,请参见上面链接后面示例中的函数 trainsim。第一个函数使用已经完整的示例列表训练网络,第二个函数使用完整的输入值列表激活网络。

在neurolab 中进行了一些挖掘之后,我发现函数step 可以为单个输入返回单个输出。然而,使用step 的结果表明,该函数不保留循环层的激活,这对循环网络至关重要。

如何在神经实验室中使用单个输入激活循环 Elman 网络,以便在下一次单个输入激活时保持其内部状态?

【问题讨论】:

  • pybrain 也会出现同样的问题。恐怕我不理解多步预测,或者它不是很好......

标签: python neural-network recurrent-neural-network neurolab


【解决方案1】:

事实证明,从先前输出生成的输出迟早会收敛到一个恒定值是很正常的。实际上,网络的输出不能依赖于它之前的输出。

【讨论】:

    【解决方案2】:

    我得到了同样的结果——常数。但是我注意到了一些事情:

    -> 如果您使用 0 和 1 数据,结果会提高。 0 - 减少 1 - 增加。结果不再是一个常数。

    -> 尝试使用另一个变量来解释目标变量,正如我们的一位同事已经提到的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-11
      • 2011-05-12
      • 2015-10-12
      • 2017-07-14
      • 2013-02-22
      • 2014-07-02
      • 2017-12-28
      相关资源
      最近更新 更多