web-dev-qa-db-ja.com

ディープニューラルネットのトレーニング中に精度が突然低下する

Mxnetを使用して11クラスの画像分類器をトレーニングしています。奇妙な行動のトレーニングの精度がゆっくりと上昇し、39%まで上昇し、次のエポックでは9%まで低下し、残りのトレーニングでは9%近くにとどまることがわかりました。他のすべてのパラメーターを同じに保ちながら、保存されたモデル(39%のトレーニング精度)でトレーニングを再開しました。現在、トレーニングの精度は再び向上しています。ここでの理由は何でしょうか?理解できません。また、トレーニングの精度値を常に確認する必要があるため、この方法でモデルをトレーニングするのは難しくなっています。

学習率は0.01で一定です

11
sau

ご覧のとおり、遅い精度はほぼランダムです。この種の場合、2つの一般的な問題があります。

  • あなたの学習率は高いです。それを下げてみてください
  • 使用しようとしているエラー(またはエントロピー)は、NaN値を提供しています。対数関数でエントロピーを使用しようとしている場合は、それらを正確に使用する必要があります。
13
mrphoenix13

ニューラルネットワークのトレーニング中に、精度がしばらく向上してから悪化することはよくあります。一般に、これは過剰適合が原因です。また、ネットワークが「不運になり」、精度の突然の低下に対応するパラメータスペースの悪い部分にノックされることもかなり一般的です。これからすぐに回復できる場合もあれば、そうでない場合もあります。

一般に、学習率を下げることは、この種の問題に対する良いアプローチです。また、 FactorScheduler のような学習率スケジュールを設定すると、数エポックごとに学習率を下げることで、より安定した収束を実現できます。実際、これにより、高すぎる初期学習率を選択する際の間違いが隠蔽されることがあります。

3
Leopd

同じ問題に直面しましたが、クロスエントロピー関数の代わりに(y-a)^ a損失関数を使用して解決しました(log(0)のため)。この問題のより良い解決策があることを願っています。

0
ChenJianfeng