1

ANN をトレーニングしようとしています (このライブラリを使用します: http://leenissen.dk/fann/ )。結果はやや不可解です。基本的に、トレーニングに使用したのと同じデータでトレーニング済みネットワークを実行すると、出力は次のようになります。トレーニングセットで指定されたものではなく、乱数です。

たとえば、トレーニング ファイルの最初のエントリは次のようになります。

88.757004 88.757004 104.487999 138.156006 100.556000 86.309998 86.788002 
1

最初の行は入力値で、2 行目は目的の出力ニューロンの値です。しかし、まったく同じデータを訓練されたネットワークにフィードすると、訓練の試行ごとに異なる結果が得られ、それらは 1 とはまったく異なります。たとえば、次のようになります。

Max epochs   500000. Desired error: 0.0010000000.
Epochs            1. Current error: 0.0686412785. Bit fail 24.
Epochs          842. Current error: 0.0008697828. Bit fail 0.
my test result -4052122560819626000.000000

そして、別の試みで:

Max epochs   500000. Desired error: 0.0010000000.
Epochs            1. Current error: 0.0610717005. Bit fail 24.
Epochs          472. Current error: 0.0009952184. Bit fail 0.
my test result -0.001642

トレーニング セットのサイズが不十分である可能性があることは認識していますが (これまでのところ、入力/出力のペアは約 100 しかありません)、少なくともトレーニング データが正しい出力値をトリガーするべきではありませんか? 同じコードは、FANN の Web サイトで説明されている「はじめに」の XOR 関数でも問題なく機能します (1 リンクの制限を既に使い果たしています)。

4

2 に答える 2

3

短い答え: いいえ

より長い答え(ただし、おそらく正しいとは限りません):

1 つ目: トレーニングの実行は、テストデータのように出力に影響を与える位置に向かってニューロンの重みのみを移動します。いくつかまたは多くの反復の後、出力は予想される出力に近くなるはずです。神経回路網がその任務を遂行できれば、私は

2 番目: すべての問題に対してすべての神経回路網が機能するわけではありません。単一のニューロンの場合、単一のニューロンでは近似できない単純な関数を考え出すのは非常に簡単です。見るのは簡単ではありませんが、すべてのニューラル ネットワークに同じ制限が適用されます。このような場合、結果は乱数のように見える可能性が非常に高くなります。コメント後に編集: 多くの場合、これはネットワークにニューロンを追加することで修正できます。

3 番目: 実際には、最初のポイントはニューラル ネットワークの強みです。これにより、ネットワークは異常値を適切に処理できるようになるからです。

4位:自分の音楽理解不足は3のせい。それは私の脳に合わないだけです;-)

于 2009-09-02T18:16:38.447 に答える
2

いいえ、ANN がトレーニング データで完全に機能するようになった場合は、問題が非常に簡単であるか、過剰適合している可能性があります。

于 2009-09-02T18:29:33.927 に答える