我试图实现一个神经网络来识别一个非线性系统。我已经在simulink中实现了一个非常简单的系统,根据它的输入和输出的例子,我想让NN来模拟它的行为。该系统如下
顶部的模式(以随机数作为输入)生成训练集,而第二个模式(以ramp作为输入)用于检查NN是否运行正常。该网络是一个具有隐层的tanh节点和线性输出层的两层网络。我已经实现了网络的两个版本,一个使用随机梯度下降(每个步骤更新),另一个在批处理中执行更新。目前,我的重点是迭代解。我还实现了在这个职位中描述的列车验证测试过程。
在这里,网络的参数:
我使用80%的示例集来训练NN,10%用于计算错误,其余的10%用于生成如下所示的输出。但是,我不能让网络对不同类型的输入泛化系统。
前两幅图显示了培训阶段。左边是训练过程最后一次迭代的输出,右边是每个训练阶段结束时误差平均值的图。最后两幅图显示了网络在看不见的数据上的性能。右边的图是从没有以任何方式进行训练的示例集中作为输入数据获得的。右边的输入是使用ramp作为输入,并将其与系统对同一输入的输出进行比较。
我做错了什么?完整的代码可以找到这里
问候
安德里亚
发布于 2015-04-20 08:50:57
事实证明,这个问题是一个正常化问题。事实上,我把神经网络训练成一个经过预处理的参考信号和一个用非归一化信号得到的输出信号。这就引起了非线性系统的问题。现在,我使用规范化的输入生成培训输出,一切都很好。
如果有人需要更多细节,请随时与我联系。
问候安德里亚
https://stackoverflow.com/questions/29718582
复制