Ich bin ein bisschen beunruhigt und verwirrt über die Idee, wie die Technik des frühen Stoppens definiert wird. Wenn Sie sich Wikipedia ansehen , ist es wie folgt definiert:
- Teilen Sie die Trainingsdaten in einen Trainingssatz und einen Validierungssatz auf, z. B. im Verhältnis 2 zu 1.
- Trainieren Sie nur auf dem Trainingssatz und bewerten Sie ab und zu den Fehler pro Beispiel auf dem Validierungssatz, z. B. nach jeder fünften Epoche.
- Beenden Sie das Training, sobald der Fehler im Validierungssatz höher ist als beim letzten Überprüfen.
- Verwenden Sie die Gewichte, die das Netzwerk in diesem vorherigen Schritt als Ergebnis des Trainingslaufs hatte.
Ich habe die Methode selbst in meinen Experimenten verwendet (mit 10-facher Kreuzvalidierung). Ich überprüfe den Validierungsfehler in jeder Epoche (und berechne auch die Validierungsgenauigkeit) und setze einen Geduldsparameter von 2. Das heißt, wenn der Validierungsfehler für 2 Epochen hintereinander zunimmt -> Training beenden. Dann habe ich die Ergebnisse der letzten Epoche verwendet, als das Modell fertig war.
Ian Goodfellow verwendet eine andere Definition in seinem Deep Learning-Buch . Als vierten Schritt schlägt er vor, die Gewichte des besten Arbeitsmodells zu verwenden (dh das Modell jedes Mal zu speichern, wenn der Validierungsfehler überprüft wird).
Ich brauche das gespeicherte Modell nicht, ich brauche nur die Ergebnisse für meine Arbeit. Für mich würde der vorgeschlagene vorzeitige Stopp bei Goodfellow bedeuten, dass ich nur die höchste Validierungsgenauigkeit nehme, die ich für mein Endergebnis erreicht habe? Irgendwie scheint das nicht legitim zu sein. Ich habe diese Informationen nicht in einer realen Situation, in der es keinen Entwicklungssatz gibt. Aber was ist in diesem Fall der Grund, überhaupt früh zu stoppen? Bestimmen Sie die Anzahl der Epochen, indem Sie beispielsweise die Anzahl der Epochen für die Falten mitteln und später für den Testlauf verwenden?