私は学習とニューラルネットワークを使って実験し、以下の問題についてより経験豊富な人から意見を持っていると思いますしています:早期停止基準として損失または正確さを使用すべきですか?
私はKerasでオートエンコーダ(「mean_squared_error」損失関数とSGDオプティマイザ)、検証を訓練するとき損失は徐々に低下しています。検証の精度が上がっています。ここまでは順調ですね。
しかし、しばらくすると、損失は減少し続けますが、突然精度は大幅に低下して、はるかに低いレベルに戻ります。
- 精度が非常に速く上昇し、急に戻ってくるのは正常な動作ですか?
- 検証の損失がまだ減少している場合でも、最大の精度でトレーニングを停止する必要がありますか?つまり、val_accまたはval_lossをメトリックとして使用して早期停止を監視しますか?
参照画像:
UPDATE: 以下のコメントは正しい方向に私を指摘し、私はそれをより良く理解していると思います。誰かが次のことが正しいことを確認できればうれしいです:
精度メトリックは、y_pred == Y_trueの%を測定し、分類にのみ意味があります。
私のデータは、実際の機能とバイナリ機能の組み合わせです。精度のグラフが非常に急峻になってから後退していく理由は、約5000年後には、おそらくネットワークがバイナリフィーチャの+/- 50%を正しく予測していたからです。訓練がエポック12000前後で継続すると、実際のフィーチャとバイナリフィーチャの予測が一緒になって改善されるため、損失は減少しますが、バイナリフィーチャの予測だけではそれほど正確ではありません。そのため、精度は低下し、損失は減少する。
分類タスクにMSEを使用していますか? –
これは興味深いプロットです。私はオートエンコーダーに関する経験はありませんが、これはオーバーフィッティングの極端なケースではないかと思います。ネットワークの複雑さを軽減する(より小さいかより多くのレギュレーション)(おそらく増加した検証サブセットでチェックすることを試みましたか?)私は想像することができます、それは異なって見えるでしょう。 – sascha
@MarcinMożejko:私はmseを使っていますが、オートエンコーダーであり、分類ではありません。 – Mark