Frühzeitiger Stopp bei Validierungsverlust oder Genauigkeit?


9

Ich trainiere derzeit ein neuronales Netzwerk und kann mich nicht entscheiden, welches zur Implementierung meiner Early-Stop-Kriterien verwendet werden soll: Validierungsverlust oder Metriken wie Genauigkeit / f1score / auc / was auch immer auf dem Validierungssatz berechnet.

Bei meinen Recherchen stieß ich auf Artikel, die beide Standpunkte verteidigten. Keras scheint standardmäßig den Validierungsverlust zu verwenden, aber ich habe auch überzeugende Antworten für den umgekehrten Ansatz gefunden (z . B. hier ).

Hat jemand Anweisungen, wann vorzugsweise der Validierungsverlust verwendet werden soll und wann eine bestimmte Metrik verwendet werden soll?

Antworten:


5

TLDR; Überwachen Sie eher den Verlust als die Genauigkeit

Ich werde meine eigene Frage beantworten, da ich denke, dass die erhaltenen Antworten den Punkt verfehlt haben und jemand eines Tages das gleiche Problem haben könnte.

Lassen Sie mich zunächst schnell klarstellen, dass die Verwendung von Early Stop beim Training neuronaler Netze völlig normal ist (siehe die entsprechenden Abschnitte im Deep Learning-Buch von Goodfellow et al., Die meisten DL-Artikel und die Dokumentation zum EarlyStopping-Rückruf von Keras).

Nun zur zu überwachenden Menge: Ziehen Sie den Verlust der Genauigkeit vor. Warum? Der Verlust quantifiziert, wie sicher das Modell über eine Vorhersage ist (im Grunde genommen mit einem Wert nahe 1 in der richtigen Klasse und nahe 0 in den anderen Klassen). Die Genauigkeit berücksichtigt lediglich die Anzahl der korrekten Vorhersagen. In ähnlicher Weise haben alle Metriken, die harte Vorhersagen anstelle von Wahrscheinlichkeiten verwenden, das gleiche Problem.

Unabhängig davon, welche Metriken Sie letztendlich auswählen, muss sie natürlich anhand eines Validierungssatzes und nicht anhand eines Trainingssatzes berechnet werden (andernfalls fehlt Ihnen der Sinn, EarlyStopping überhaupt zu verwenden, völlig).


Wenn die Werte zwischen 0 und 1 liegen, ist der cross_entropyVerlust ein bevorzugterer Kandidat als MSEoder MAE. Lesen Sie den Abschnitt "Zusammenfassung" dieses Artikels und diesen Beitrag zu Statistiken .
Esmailian

@Esmailian es ist keine Frage der Präferenz; Für Klassifizierungsprobleme sind MSE & MAE einfach nicht geeignet.
Desertnaut

4

Meiner Meinung nach ist dies subjektiv und problemspezifisch. Sie sollten den wichtigsten Faktor in Ihrem Kopf als Fahrmetrik verwenden, da dies Ihre Entscheidungen darüber, wie Sie das Modell ändern möchten, besser fokussieren kann.

Die meisten Metriken, die berechnet werden können, sind in vielerlei Hinsicht korreliert / ähnlich: Wenn Sie beispielsweise MSE für Ihren Verlust verwenden und dann MAPE (mittlerer durchschnittlicher prozentualer Fehler) oder einfachen Verlust aufzeichnen , erhalten Sie vergleichbare Verlustkurven.L1

Wenn Sie beispielsweise einen F1-Score in Ihrem Bericht / an Ihren Chef usw. melden (und davon ausgehen, dass dies das ist, was ihn wirklich interessiert), kann die Verwendung dieser Metrik am sinnvollsten sein. Der F1-Score berücksichtigt beispielsweise Präzision und Rückruf , dh er beschreibt die Beziehung zwischen zwei feinkörnigeren Metriken.

Wenn Sie diese Dinge zusammenführen, kann es hilfreich sein, andere Ergebnisse als den normalen Verlust zu berechnen, um einen Überblick zu erhalten und zu sehen, wie Ihre endgültige Metrik im Verlauf der Trainingsiterationen optimiert wird. Diese Beziehung könnte Ihnen vielleicht einen tieferen Einblick in das Problem geben,

In der Regel ist es jedoch am besten, mehrere Optionen auszuprobieren, da durch die Optimierung des Validierungsverlusts das Training möglicherweise länger dauern kann, was letztendlich auch zu einem überlegenen F1-Score führen kann . Präzision und Rückruf können sich um einige lokale Minima bewegen und einen fast statischen F1-Score erzeugen - Sie würden also mit dem Training aufhören. Wenn Sie für den reinen Verlust optimiert haben, haben Sie möglicherweise genügend Verlustschwankungen registriert, um länger trainieren zu können.


Warum sollte die Verwendung von Validierungsverlust ein längeres Training ermöglichen als die Verwendung von Metriken? Können Sie auch den Unterschied zwischen den beiden Optionen erläutern? Sehen Sie einen Fall, in dem es eine schlechte Idee wäre, eine Metrik anstelle des Verlusts zu verwenden?
Qmeeus

@ id-2205 - siehe meine bearbeitete Antwort.
n1k31t4

interessanter Punkt! Ich verwende derzeit die Genauigkeit für das frühzeitige Stoppen, werde jedoch versuchen, den Validierungsverlust zu verwenden. Ich erwarte jedoch keine Änderungen im Trainingsprozess! Vielen Dank für Ihre Antwort
qmeeus

1

Ich trainiere derzeit ein neuronales Netzwerk und kann mich nicht entscheiden, welches zur Implementierung meiner Early-Stop-Kriterien verwendet werden soll: Validierungsverlust oder Metriken wie Genauigkeit / f1score / auc / was auch immer auf dem Validierungssatz berechnet.

Wenn Sie ein tiefes Netzwerk trainieren, empfehle ich Ihnen dringend, keinen frühen Stopp zu verwenden. Beim tiefen Lernen ist es nicht sehr üblich. Stattdessen können Sie andere Techniken wie Drop-Out verwenden, um gut zu verallgemeinern. Wenn Sie darauf bestehen, hängt die Auswahl des Kriteriums von Ihrer Aufgabe ab. Wenn Sie unausgeglichene Daten haben, müssen Sie die F1Punktzahl verwenden und diese anhand Ihrer Kreuzvalidierungsdaten auswerten. Wenn Sie ausgeglichene Daten haben, versuchen Sie, die Genauigkeit Ihrer Kreuzvalidierungsdaten zu verwenden. Andere Techniken hängen stark von Ihrer Aufgabe ab.

Ich empfehle Ihnen dringend, ein Modell zu finden, das sehr gut zu Ihren Daten passt, und danach einen Ausfall durchzuführen. Dies ist die üblichste Sache, die Menschen für tiefe Modelle verwenden.


2
Ich benutze auch Dropout. Ich kann jedoch keinen Grund finden, warum frühes Stoppen nicht verwendet werden sollte ...
qmeeus

Early Stop versucht, sowohl Lern- als auch Generalisierungsprobleme zu lösen. Auf der anderen Seite versucht Dropout nur, das Generalisierungsproblem zu überwinden.
Medien

1
Sie beantworten meine Frage nicht ... Ich bestreite nicht, dass ein Ausfall nützlich ist und zum Schutz vor Überanpassung verwendet werden sollte. Mehr kann ich nicht sagen. Meine Frage ist: Warum sagen Sie, dass ein früher Stopp nicht mit ANN verwendet werden sollte? (Siehe Ihren ersten Satz: Wenn Sie ein tiefes Netzwerk trainieren, empfehle ich Ihnen dringend, keinen frühen Stopp zu verwenden.)
Qmeeus

Hast du meinen letzten Kommentar gelesen? Es beantwortet genau Ihre Frage. Es ist ein berühmtes Zitat von pr. Ng in seiner Deep-Learning-Klasse, zweiter Kurs. Der letztere Fall ist eine einfachere Aufgabe, da es nicht schwierig ist, mehrere Aufgaben gleichzeitig zu lösen.
Medien

3
Und um es zu finden und den richtigen Satz von Hyperparametern zu finden, verwende ich aus den oben erläuterten Gründen eine Art gerichtete Rastersuche mit frühem Stopp. Punkt genommen und sobald ich das endgültige Modell ausgewählt habe und es trainieren werde, werde ich keinen frühen Stopp verwenden. Vielen Dank für diese interessante Diskussion und für
Ihren
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.