2

R のニューラル ネットワークは初めてです。Java でニューロフを使用して実装された次の動作をエミュレートしようとしています。

タイプ - 多層パーセプトロン、入力 - 7、出力 - 1、非表示 - 5 ニューロン、伝達関数 - シグモイド、学習規則 - 逆伝播、最大誤差 - 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

なぜこれが起こっているのかについての説明はありますか?

4

2 に答える 2

1

アルゴリズムが収束するためにより多くの時間を与えるために、「stepmax」を 100 から大きな値に増やします。ただし、隠しノードの数を減らしてから、ニューラル ネットワークを再実行することをお勧めします。

于 2015-08-08T12:50:00.560 に答える
0

隠しレイヤー/隠しノードの数を変更し、試行錯誤しながらさまざまな組み合わせを試すことができます。MLP の隠れ層の数を 2 に増やしてみることができます。2 つの隠れ層を持つ MLP はめったに使用されませんが、データ内の複雑なパターンの場合には用途があります。理論的には、2 つの隠れ層を持つ MLP を使用して任意の関数を近似できます。

于 2015-08-12T08:41:15.403 に答える