13000のトレーニング画像と3000の検証画像を使用して11クラスの画像分類器を構築しようとしています。私はmxnetを使用してトレーニングされているディープニューラルネットワークを使用しています。トレーニングの精度は向上し、80%を超えていますが、検証の精度は54〜57%の範囲になり、向上していません。ここで問題になるのは何ですか?画像の数を増やす必要がありますか?
ここでの問題は、ネットワークがある時点で有用な一般機能の学習を停止し、トレーニングセットの特性に適応し始めることです(結果として過剰適合)。便利な機能を学習し続けるためにネットワークを「強制」したいのですが、ここにはいくつかのオプションがあります。
残念ながら、よく一般化されたネットワークのトレーニングプロセスには、多くの実験と、少しの人間の監督によるパラメータ空間のほぼブルートフォース探索が含まれます(このアプローチを採用した多くの研究が見られます)。各パラメーターに3〜5の値を試して、それがどこかにつながるかどうかを確認することをお勧めします。
反復回数の関数としてプロットの精度/コスト/ f1を実験し、それがどのように動作するかを確認します。多くの場合、テストセットの精度がピークに達し、その後継続的に低下します。したがって、優れたアーキテクチャ、正則化、破損などとは別に、最良の結果をもたらす十分な数の反復も探しています。
もう1つのヒント:各トレーニングエポックが画像の順序をランダム化することを確認してください。
これは、モデルが特定の値に固定されるまで段階的に検証の精度が向上していたため、モデルがトレーニングセットに適合しているケースのように見えます。学習率がもう少し高い場合は、トレーニングセットの精度が高くなるにつれて、検証の精度が低下することになります。
トレーニングセットの数を増やすことが、この問題の最善の解決策です。また、既存の画像セットにさまざまな変換(フリッピング、少し大きい画像からランダムな部分を切り抜く)を適用して、モデルがよりよく学習しているかどうかを確認することもできます。