我正在训练一个具有 1 个 sigmoid 隐藏层和一个线性输出层的神经网络。该网络只是近似于一个余弦函数。权重根据 Nguyen-Widrow 初始化进行初始化,偏差初始化为 1。我使用 MATLAB 作为平台。
在不更改任何参数的情况下多次运行网络,我得到的结果(均方误差)范围从 0.5 到 0.5*10^-6。我无法理解结果如何变化如此之大,我想至少会有一个更窄、更一致的错误窗口。
什么可能导致如此大的差异?
我正在训练一个具有 1 个 sigmoid 隐藏层和一个线性输出层的神经网络。该网络只是近似于一个余弦函数。权重根据 Nguyen-Widrow 初始化进行初始化,偏差初始化为 1。我使用 MATLAB 作为平台。
在不更改任何参数的情况下多次运行网络,我得到的结果(均方误差)范围从 0.5 到 0.5*10^-6。我无法理解结果如何变化如此之大,我想至少会有一个更窄、更一致的错误窗口。
什么可能导致如此大的差异?
一般来说,不能保证诸如多层感知器网络之类的人工神经网络会收敛到全局最小平方误差 (MSE) 解决方案。网络的最终状态在很大程度上取决于网络权重的初始化方式。由于大多数初始化方案(包括 Nguyen-Widrow)使用随机数来生成初始权重,因此某些初始状态很可能会导致收敛于局部最小值,而其他初始状态将收敛于 MSE 解。
我问了一个类似的问题:
https://stats.stackexchange.com/q/140406/70282
我最终做的是有一个 while 循环可重复地创建小尺寸的 NN,以寻找最佳的均方根误差。
本质上:对于 1 到 10 的隐藏层大小,请执行 1 到 10 的试验:创建 NN 并使用测试数据测试 rmse。记住特定隐藏层大小的 NN 和最佳 rmse。为完成。为完成。查看结果,选择具有较小 rmse 的最小隐藏层大小。
通过将您的数据分为训练数据和 tedtinh 数据,您不会选择过度拟合的 NN。