トレーニング損失は時間とともに増加します[複製]


21

モデル(リカレントニューラルネットワーク)をトレーニングして、4種類のシーケンスを分類しています。トレーニングを実行すると、トレーニングバッチのサンプルの90%以上を正しく分類するまで、トレーニングの損失が減少します。しかし、数エポック後に、トレーニングの損失が増加し、精度が低下することに気付きました。トレーニングセットでは、パフォーマンスが時間の経過とともに悪化することなく改善されると予想されるため、これは私にとって奇妙に思えます。クロスエントロピー損失を使用しており、学習率は0.0002です。

更新:学習率が高すぎることが判明しました。学習率が十分に低い場合、この動作は観察されません。しかし、私はまだこの奇妙なことを見つけます。これが起こる理由についての良い説明は大歓迎です

損失は​​減少してから増加します

回答:


6

CNNをトレーニングするとき、このような同様の動作がありました。これは、誤差計算に学習率の減衰を伴う勾配降下を使用したためです。反復回数を大幅に増やして、新しい低学習率でこの動作がずっと遅くなるかどうかを確認しましたか?


しかし、実際には、学習率が十分に低い場合、再び上昇することは決してないという点があります。私はこれがなぜ起こるのかについて理論的に健全な説明を探しています
-dins2018

どの最適化アルゴリズムを使用しますか?
フロイントリッヒ

私はlr = 0.00001、
betas

1
この小さな学習率は局所的な最小値に非常にゆっくりと近似しているので、損失値が再びわずかに増加する点(最小値を超えているため)には多くの反復が必要です。この損失値の増加はアダムによるものです。これは、極小値を超えて特定の反復回数が発生した時点で、小さな数値がさらに小さな数値で除算され、損失値が爆発します。
フロイントリッヒ

2
beta1 = 0.9およびbeta2 = 0.999に設定できます。これは、この動作に対して機能しなければならない一般的な値です。
フロイントリッヒ

1

学習率が大きすぎるため、発散し、​​損失関数の最小値を見つけることができないためです。特定のエポック後に学習率を下げるためにスケジューラを使用すると、問題の解決に役立ちます


0

学習率が高いと、勾配と反対の方向に動きすぎて、損失を増やす可能性のある局所的な最小値から遠ざかる可能性があります。学習率のスケジューリングと勾配クリッピングが役立ちます。


CVへようこそ。賛成票を得るには、より完全な回答を提供するのが最善です。stats.stackexchange.com/ help / how-to-answerでガイダンスをご覧ください。
ReneBt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.