machine-learning - 神经网络系统识别

标签 machine-learning neural-network

我正在尝试实现一个神经网络来识别非线性系统。我在 simulink 中实现了一个非常简单的系统,并根据其输入和输出的示例,我希望神经网络能够模仿其行为。系统如下enter image description here

顶部的模式(以随机数作为输入的模式)生成训练集,而第二个模式(以斜坡作为输入)用于检查神经网络是否表现正常。 该网络是一个两层网络,具有 tanh 节点的隐藏层和线性输出层。我已经实现了两个版本的网络,一个版本使用随机梯度下降(每一步更新),另一个版本则批量执行更新。目前我专注于迭代解决方案。 我还实现了 this post 中描述的训练验证测试程序。 .

这里是网络参数:

  • 学习率:1e-3;
  • 隐藏单元数量:15
  • 样本数量:10002
  • 最大纪元:1000
  • 错误阈值:0.07

我使用示例集的 80% 来训练神经网络,10% 来计算误差,剩下的 10% 来生成如下所示的输出。但是,我无法使网络针对不同类型的输入概括系统。

output during the last training cycle

test against remaining samples and different input

前两张图显示了训练阶段。左边是训练过程最后一次迭代的输出,右边是每个训练周期结束时误差平均值的图。最后两张图显示了网络在未见过的数据上的性能。右侧的图是使用来自示例集的输入数据获得的,该示例集未以任何方式用于训练。右边的结果是使用斜坡作为输入并将其与相同输入的系统输出进行比较而生成的。

我做错了什么? 完整代码可见here

问候

安德里亚

最佳答案

原来问题是归一化问题。事实上,我使用经过预处理的引用信号和使用非标准化信号获得的输出信号来训练神经网络。这会在非线性系统中引起问题。现在,我使用标准化输入生成训练输出,一切正常。

如果有人需要更多详细信息,请随时与我联系

问候 安德里亚

关于machine-learning - 神经网络系统识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29718582/

相关文章:

machine-learning - 如何测试受限玻尔兹曼机的实现?

python - SGDClassifier 在 MNIST 上的使用

python - keras 编码器和解码器上的分割自动编码器

matlab - Matlab 中的特征包和神经网络

tensorflow - 在 Keras 中 Flatten 层是如何工作的?

python - 无论输入如何,Keras 上的 CNN 都会收敛到相同的值

python - 如何训练单输入多输出的回归模型?

matlab - Matlab 中的“内存不足”错误

python - 为什么我的非常简单的神经网络表现不佳?

tensorflow - Keras image_gen.flow_from_directory()中的class_mode参数表示什么?