学習損失は減少するのに検証損失が増加し続ける — DropoutとL2正則化を追加しても改善しない
問題:
- 学習損失(training loss)はエポックを重ねるごとに着実に減少
- 検証損失(validation loss)は最初は減少するものの、約10エポック後から増加し始める
- 学習精度は約95%に達するが、検証精度は約70%で頭打ちになる
すでに試したこと:
- 全結合層の後にDropout(p=0.5)を追加
- オプティマイザにL2正則化(weight decay 1e-4)を設定
- データ拡張(ランダム反転、回転、色調変化)を実施
- モデルの複雑さを削減(畳み込み層を減らした)
これらを行っても、学習と検証のパフォーマンスの差は完全には縮まりませんでした。
環境:
- フレームワーク: PyTorch 2.x
- オプティマイザ: Adam, lr=1e-3
- バッチサイズ: 32
- データセットサイズ: 約5000枚(比較的小規模)
質問:
データセットサイズが比較的小さいことを考慮すると、この問題はデータ拡張の不足、学習率スケジューリングの誤り、またはこのデータセット規模に対してまだ複雑すぎるアーキテクチャのいずれに起因する可能性が高いでしょうか? 実際の原因を特定するために役立つデバッグ手法(学習曲線の分析、特徴量の可視化など)があれば教えていただきたいです。
0 likes