回答:
TLDR; 精度ではなく損失を監視する
受け取った回答は要点を逃し、誰かが同じ問題を抱えている可能性があると思うので、自分の質問に回答します。
最初に、ニューラルネットワークをトレーニングするときに早期停止を使用することは完全に正常であることを簡単に説明します(Goodfellow et alのディープラーニングブックの関連セクション、ほとんどのDLペーパー、およびkerasのEarlyStoppingコールバックのドキュメントを参照)。
ここで、監視する数量について:精度よりも損失を優先します。どうして?損失は、モデルが予測についてどの程度確実であるかを定量化します(基本的に、適切なクラスでは1に近く、他のクラスでは0に近い値です)。正確さは、正しい予測の数を説明するだけです。同様に、確率ではなくハード予測を使用するメトリックには同じ問題があります。
明らかに、最終的に選択するメトリクスは、トレーニングセットではなく検証セットで計算する必要があります(そうしないと、そもそもEarlyStoppingを使用するポイントが完全に失われます)。
私の意見では、これは主観的で特定の問題です。モデルをより焦点を絞って変更する方法を決定する可能性があるため、駆動メトリックとして、心の中で最も重要な要素は何でも使用する必要があります。
計算できるほとんどのメトリックは、多くの点で相関/類似しています。たとえば、損失にMSEを使用してから、MAPE(平均パーセント誤差)または単純な損失を記録すると、同等の損失曲線が得られます。
たとえば、レポート/上司などにF1スコアを報告する場合(そしてそれが上司に本当に重要であると想定している場合)、そのメトリックを使用することが最も理にかなっています。たとえば、F1スコアは、精度と再現率を考慮に入れています。つまり、F1スコアは、2つのより詳細なメトリック間の関係を記述しています。
これらをまとめると、通常の損失以外のスコアを計算することは、概要と、トレーニングの反復の過程で最終的なメトリックがどのように最適化されているかを確認するのに適しています。その関係はおそらくあなたに問題へのより深い洞察を与えるかもしれません、
ただし、通常はいくつかのオプションを試すことをお勧めします。検証の損失を最適化すると、トレーニングをより長く実行できるようになり、最終的には優れたF1スコアが生成される可能性があります。精度と再現率が一部の極小値を揺らぐ可能性があり、ほぼ静的なF1スコアが生成されるため、トレーニングを停止します。純粋な損失を最適化していた場合は、損失の変動を十分に記録して、より長くトレーニングできる可能性があります。
私は現在ニューラルネットワークをトレーニングしていますが、早期停止基準を実装するためにどちらを使用するかを決定できません:検証の損失、または精度/ f1score / auc /検証セットで計算されたものなどのメトリック。
ディープネットワークをトレーニングする場合は、アーリーストップを使用しないことを強くお勧めします。ディープラーニングでは、これはあまり一般的ではありません。代わりに、ドロップアウトなどの他の手法を使用して、一般化することもできます。それを主張する場合、基準の選択はタスクに依存します。不均衡なデータがある場合は、F1
スコアを使用して、相互検証データで評価する必要があります。データのバランスが取れている場合は、相互検証データに精度を使用するようにしてください。その他の手法は、タスクに大きく依存します。
私はあなたのデータに非常によく適合するモデルを見つけ、その後ドロップアウトすることを強くお勧めします。これは、ディープモデルで最も一般的に使用されるものです。
cross_entropy
、MSE
またはよりも損失がより好ましい候補ですMAE
。ラップアップのセクションチェックアウトこの記事を、そして統計上のこの記事。