测试简单的递归神经网络的好方法是什么

机器算法验证 时间序列 机器学习 神经网络 验证
2022-03-24 01:16:35

我在 theano 中编写了一个简单的实值回归 RNN。

  1. 我应该在什么样的数据集上进行测试?
  2. 我应该如何进行测试?

我的结构是:

  • 单变量(目前)时间序列,xin(t)
  • nInputNodes由〜相等的时间步长分开,tstep. 在哪里,nInputNodes应该足够大以捕获数据中的重复
  • nHiddenNodes=nInputNodes
  • 最终输入节点之后的预测时间延迟,ltstep, 在哪里l是一个整数
  • 一个输出节点取自最终隐藏节点,给出预测,在tp=t+ltstep
  • xp(tp)是预测xin(tp)在训练数据中
  • RMSE 误差(xin(tp)xp(tp))2
  • 最后,隐藏层中的每个节点都会在下一个时间步传递给权重

经过测试y=sin(t)+0.2ϵ, 在哪里ϵN(0,1),在滑动窗口中。我使用了 5 个数据点的历史滞后,y(t5,t4,...,t),并试图预测曲线中的以下点,y(t+1).

我只使用了 100 个噪音版本sin(x)超过 100 个 epoch 进行训练。结果还不错……

图像

谢谢您的帮助。代码似乎没有错误,因此我将针对 GPU 和小批量进行优化,并使用更多最新算法对其进行升级。

2个回答

验证代码正确性的一个非常简单的时间序列是由函数 sin(x) 引起的。它的周期性特性使它成为一个很好的测试功能。只需打印(或绘制)网络的输出激活并将其与所需值进行比较即可查看性能。

或者,您可以像 Elman 在他的原始论文中所做的那样测试 XOR :

101 000 011 110 101 ...

Hochreiter 的论文中有一个很好的测试列表另请查看Schmidhuber 演示文稿中的这张幻灯片和下一张幻灯片。