neurolab 中循环 Elman 网络的时间序列预测

Time series forecast with recurrent Elman network in neurolab

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

处的值

为了预测 超越 紧接的下一个时间步长,网络的输出作为输入反馈。例如,如果我打算预测 i+5 处的值,我将按如下方式进行。

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

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

然而,在大多数例子中,网络被提供了一个已经完整的序列。例如,参见上面 link 后面示例中的函数 train and sim。第一个函数使用已经完整的示例列表训练网络,第二个函数使用完整的输入值列表激活网络。

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

如何在 neurolab 中使用单个输入激活循环 Elman 网络,使其在下一个单个输入激活时保持其内部状态?

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

我得到相同的结果 - 不变。但是我注意到了一些事情:

-> 如果使用 0 和 1 数据,结果会有所改善。 0 - 减少 1 - 增加。结果不再是常数。

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