3

MATLAB で教師付き分類タスク用のニューラル ネットワークを実装しています。

結果を評価するためのトレーニング セットとテスト セットがあります。問題は、同じトレーニング セットでネットワークをトレーニングするたびに、同じテスト セットで非常に異なる結果が得られることです (分類精度が 95% の場合もあれば、60% の場合もあります)。

これは、異なる初期重みを取得したためであり、「シード」を使用して同じ初期重みを設定できることがわかっていますが、問題は、これが私のデータについて何を示しているか、そしてこれを見る正しい方法は何ですか? 設計した ANN を使用して得られる精度を定義するにはどうすればよいですか? このためのプロトコルはありますか (ANN を 50 回実行して平均精度などを取得するなど)?

ありがとう

4

2 に答える 2

2

テスト セットがトレーニング セットと比較して十分に大きいことを確認し (たとえば、全体のデータの 10%)、多様性について確認します。テスト セットが非常に特殊なケースのみをカバーしている場合、これが理由である可能性があります。また、常に同じテスト セットを使用するようにしてください。または、クロスバリデーションという用語をグーグルで検索する必要があります。

さらに、トレーニング セットの精度が高く、テスト セットの精度が低い場合は、オーバーフィッティングの兆候です。単純な L2 重み減衰のような正則化を適用してみてください (単純に、重みを更新するたびに重み行列に 0.999 を掛けるだけです)。データによっては、ドロップアウトまたは L1 正則化も役立つ場合があります (特に、入力データに多くの冗長性がある場合)。また、より小さなネットワーク トポロジを選択してみてください (層数が少ない、および/または層あたりのニューロン数が少ない)。

トレーニングを高速化するために、単純なバックプロパゲーションの代わりに、RPROP+、RPROP-、または RMSPropなどの代替学習アルゴリズムを試すこともできます。

于 2013-03-23T19:22:41.767 に答える
0

ANN が最適な重みのセットに収束していないようです。ANN モデルの詳細がわからないと、問題を特定することはできませんが、反復回数を増やしてみます。

于 2013-03-15T23:07:34.857 に答える