Early Stopping

Early Stopping ist eine Methode zur Regularisierung von Modellen und verhindert im Wesentlichen die Überanpassung an die Trainingsdaten – also das sogenannte Overfitting. Early Stopping kann dabei jedoch nur bei Modellen verwendet werden, die im Training mit Iterationen arbeiten. Am verbreitesten ist die Verwendung beim Training von Neuronalen Netzen im Deep Learning Bereich, die andernfalls aufgrund ihrer Komplexität und Größe zum Overfitting neigen.

Funktionsweise #

Early Stopping überwacht während des Trainings die Entwicklung von festgelegten Metriken bzw. Verlustfunktionen im Falle von Neuronalen Netzwerken. Um ein Overfitting zu vermeiden, sollte immer die Metrik der Validationdaten überwacht werden, da diese Aufschluss über Overfitting geben kann. Das Grundprinzip sieht dabei wie folgt aus: Falls sich die überwachte Metrik über n Epochen bzw. Iterationen (das n kann individuell festgelegt werden), wird das Training abgebrochen. Dahinter steckt die simple Annahme, dass die ausbleibende Verbesserung auf den Validationdaten auf eine Überanpassung auf die Trainingsdaten hindeutet. Das Training wird daher nicht weiter fortgesetzt.

Trainingshistorie eines Neuronalen Netzwerkes, die auf Overfitting hindeutet

In der obigen Abbildung ist die Trainingshistorie eines Neuronalen Netzwerkes zu sehen, bei dem im Training kein Early Stopping genutzt wurde. Es ist zu erkennen, dass sich die Genauigkeit auf den Trainingsdaten langsam weiter verbessert, während die Genauigkeit auf den Validationdaten sich nicht weiter verbessert. Im Falles des Losses nimmt dieser zum Ende des Trainings wieder zu. Mit Verwendung von Early Stopping wäre das Training bereits deutlich eher beendet worden, da sich der Validation Loss nicht weiter verringert.

Das Early Stopping lässt sich mit den folgenden Parametern steuern:

  • monitor: Angabe, welche Metrik bzw. welcher Parameter überwacht werden soll
  • patience: Anzahl an Epochen ohne Verbesserung des Scores, nach denen das Training abgebrochen werden soll
  • min_delta: Minimale Änderung des überwachten Parameters, die als Verbesserung gelten soll. Falls die Änderung unterhalb des Deltas liegt, wird das Training abgebrochen.
  • mode: Modus zur Bestimmung, was als Verbesserung gilt. Beim Loss ist eine geringere Zahl eine Verbesserung, bei z.B. Genauigkeit ist eine höhere Zahl eine Verbesserung.
  • restore_best_weights: Gibt an ob die Gewichte zum Zeitpunkt der besten Metrik bzw. des minimales Verlusts wiederhergestellt werden sollen.

Anwendung #

Der nachfolgende Codeblock zeigt beispielhaft, wie Early Stopping in TensorFlow genutzt werden kann. Die Variable model steht dabei für ein TensorFlow Modell, das vorher erstellt wurde.


# Import callbacks module
from tensorflow.keras import callbacks

# Create callback
stopping = callbacks.EarlyStopping(monitor='val_loss', patience=5, restore_best_weights=True)

# Train the model
history = model.fit(X_train, y_train, validation_split=0.3, batch_size=64, epochs=1000, callbacks=[stopping])

In diesem Fall überwacht das Early Stopping den Verlust der Validationdaten und bricht das Training ab, falls über 5 Epochen keine Verbesserung stattgefunden hat. Zusätzlich werden die Gewichte des Netzwerkes zu dem Zeitpunkt des minimales Verlusts wieder hergestellt.

Weiterführende Links:
Keras EarlyStopping: https://keras.io/api/callbacks/early_stopping/
EarlyStopping in Practice: https://towardsdatascience.com/a-practical-introduction-to-early-stopping-in-machine-learning-550ac88bc8fd
EarlyStopping to avoid Overfitting: https://machinelearningmastery.com/early-stopping-to-avoid-overtraining-neural-network-models/

Schreibe einen Kommentar