2012-01-16 9 views
0

私は現在、Javaで自己実装されたニューラルネットワークで数日間はわからないという問題を抱えています。私のネットワークには、与えられたグレースケール画像のピクセルのx座標とy座標に対応する2つの入力ニューロンと、ピクセルのトーンを表す1つの出力があります。私が使っている学習アルゴリズムはRPROPです。私が抱えている問題は、訓練データセット全体をネットワークに供給することを何度も繰り返した後に、予想されるものから非常に離れたポイントに収束し、収束したネットワークの重量構造を分析した後、すべてのニューロン隠れたレイヤーでは入力の重さがまったく同じです。これは隠れた層のニューロンの数とは無関係に起こります。これは、ネットワーク内のすべての重みを同じ値で初期化しているためですか?私は体重を無作為化しようとしましたが、それ以上のことはしませんでした。私は、出力レイヤーを除くすべてのレイヤーでシグモイド(tanh)活性化関数を使用しています。私は実装のバグを作ったかどうか、または私がニューラルネットワークの学習プロセスの数学的記述の一部を誤解したかどうかはわかりません。誰かがこのような奇妙な行動を引き起こす原因を知っていますか?自己実現ニューラルネットワーク奇妙な収束

答えて

0

バイアスユニットを使用していますか?私はニューラルネットワークでバイアスユニットの使用を調べるでしょう。また、単純な実装を行っている場合は、既知のNNライブラリに対して作業の反復結果をテストすることができます。

0

ネットワークが行っていることの印刷物を使ってデバッグを試みてください。ユニット数が少ない場合は、アクティベーション、デルタ、ウェイト、およびウェイトの変更を印刷できます。あなたがたくさんいる場合は、その絶対値の平均値を試してみることができます。

これにより、問題が発生する可能性があります。

また、学習率/勢いで試してみましたか?