Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Überanpassung erkennen und verringern

Nach dieser Lektion: Ich kann Überanpassung an zwei Verlustkurven erkennen und verringern.

Lektion, 55 Min.1 BefehlJupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Ein Netz, das nur die Übungsdaten auswendig lernt

Überanpassung heißt: Ein Netz liegt auf den Daten, mit denen es trainiert wurde, sehr gut und auf neuen Daten schlecht. Es hat die Beispiele auswendig gelernt, statt das Muster zu finden.

Wer das erkennt, kann es verringern, zum Beispiel mit frühem Stoppen. Sonst glaubt ein Verleih einer Vorhersage, die im Alltag nicht hält.

Am Ende dieser Lektion

Notiz

Ich kann Überanpassung an zwei Verlustkurven erkennen und verringern.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Trainingsdatendie Zeilen, aus denen das Netz lernt
Validierungsdatenzurückgehaltene Zeilen, die nur prüfen
Überanpassunggut auf bekannten Daten, schlecht auf neuen
Epocheein Durchlauf über alle Trainingszeilen
Frühes Stoppendas Training beenden, wenn die Validierung nicht mehr besser wird
Geduldwie viele Epochen ohne Besserung abgewartet werden2

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Zwei Datenmengen zeigen, ob ein Netz wirklich lernt

Man teilt die Zeilen in zwei Mengen. Die Trainingsdaten benutzt das Netz zum Lernen. Die Validierungsdaten sieht es nie beim Lernen. Es wird nur daran geprüft.

Nach jeder Epoche misst man den Verlust auf beiden Mengen. Der Verlust auf den Trainingsdaten sinkt fast immer. Der Verlust auf den Validierungsdaten sagt, wie gut das Netz mit neuen Zeilen umgeht.

Beispiel: Verlust nach jeder Epoche

EpocheTrainingValidierungBild
10,900,95Beide sinken
20,600,70Beide sinken
30,420,55Beide sinken
40,300,50Bester Wert der Validierung
50,220,52Validierung steigt wieder
60,160,58Lücke wächst
80,090,75Deutliche Überanpassung

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Die beste Epoche finden

Code: python
# Verlust je Epoche: Training und Validierung.
training = [0.90, 0.60, 0.42, 0.30, 0.22, 0.16, 0.12, 0.09]
validierung = [0.95, 0.70, 0.55, 0.50, 0.52, 0.58, 0.66, 0.75]
beste = 0
for n in range(len(validierung)):
    if validierung[n] < validierung[beste]:
        beste = n
print("Beste Epoche:", beste + 1)
print("Validierungsverlust dort:", validierung[beste])
print("Trainingsverlust am Ende:", training[-1])
# Ändern Sie 0.52 in 0.45 und starten Sie erneut.

Frühes Stoppen beendet das Training zur rechten Zeit

Beim frühen Stoppen beobachtet man den Validierungsverlust. Wird er mehrere Epochen lang nicht besser, hört das Training auf.

Die Zahl dieser Epochen heißt Geduld. Mit Geduld 2 stoppt das Training in der Tabelle in Epoche 6, denn Epoche 5 und 6 waren nicht besser als Epoche 4. Behalten wird das Netz aus Epoche 4.

Weitere Mittel gegen Überanpassung

Mehr Trainingsdaten helfen am meisten. Ein kleineres Netz hat weniger Parameter zum Auswendiglernen. Bei Dropout schaltet man beim Training zufällig einige Neuronen ab, damit sich keines auf ein anderes verlässt.

Auch ein größeres Netz ist nicht automatisch besser. Das Lab zeigt es gleich.

Drei Netzgrößen an den Tagen des Verleihs

Befehl
docker exec jupyter python3 steps/network.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele halten den Trainingsverlust für das Maß der Güte. Er sinkt aber auch bei Überanpassung weiter. Beurteilen Sie ein Netz darum immer an Daten, die es beim Lernen nie gesehen hat.

Über dieses Lab und seinen Quellcode: JupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.