R中神经网络的给定重复次数不收敛的算法

时间:2015-08-07 09:07:49

标签: r algorithm neural-network convergence

我是R中神经网络的新手。我试图模仿在java中使用neuroph实现的以下行为。

类型 - 多层感知器,输入 - 7,输出 - 1,隐藏 - 5个神经元,传递函数 - sigmoid,学习规则 - 反向传播,最大误差 - 0.01,学习速率 - 0.2

以下是我实施的R代码。

net.result <- neuralnet(Output ~ Input1 + Input2 + Input3 + Input4 + Input5 + Input6 + Input7, 
                        traindata, algorithm = "backprop", hidden = 5,
                        threshold = 0.01, learningrate = 0.2, act.fct = "logistic", 
                        linear.output = FALSE, rep =50, stepmax = 100)

数据相对较小(120行),以下是使用的训练数据样本。请注意,输入已标准化并在0和1之间缩放。

     Input1 Input2 Input3 Input4 Input5 Input6 Input7       Output
 1   0      0      0      0      0      0      0            0
 2   0      0      0      0      0      1      0.0192307692 0
 3   0      0      0      0      1      0      0.125        0
 4   0      0      0      0      1      1      0.0673076923 0
 5   0      0      0      1      0      0      0.1971153846 0
 6   0      0      0      1      0      1      0.2644230769 0.3333333333

以下是我执行上述命令时收到的警告。

Warning message:
algorithm did not converge in 50 of 50 repetition(s) within the stepmax

有关为何发生这种情况的任何澄清?

2 个答案:

答案 0 :(得分:1)

将“stepmax”从100增加到某个大值,以便为算法提供更多的收敛时间。但是,更好的方法是减少隐藏节点的数量,然后重新运行神经网络

答案 1 :(得分:0)

您可以更改隐藏图层/隐藏节点的数量,并通过反复试验尝试不同的组合。您可以尝试将MLP中隐藏层的数量增加到2.具有2个隐藏层的MLP很少使用,但它们在数据中的复杂模式的情况下确实有用。从理论上讲,具有2个隐藏层的MLP可用于近似任何函数。