Regularisierung
Techniken, die verhindern, dass ein KI-Modell Trainingsdaten auswendig lernt (Overfitting), indem sie die Modellkomplexität einschränken.
Zwei fundamentale Probleme beim Machine Learning: Overfitting bedeutet, das Modell lernt Trainingsdaten auswendig; Underfitting bedeutet, es lernt zu wenig.
Overfitting und Underfitting sind die zwei häufigsten Probleme beim Training von KI-Modellen. Sie beschreiben, wie gut ein Modell von Trainingsdaten auf neue, ungesehene Daten generalisiert – und das ist letztlich das Ziel jedes ML-Projekts.
Ein overfittetes Modell hat die Trainingsdaten auswendig gelernt, statt das zugrundeliegende Muster zu verstehen. Es performt auf Trainingsdaten hervorragend, auf neuen Daten aber schlecht. Ein underfittetes Modell ist zu simpel – es hat nicht genug Kapazität, das Muster zu lernen, und performt überall schlecht. Der Sweet Spot dazwischen ist das Ziel: ein Modell, das generalisiert. Techniken wie Regularisierung, Dropout und Cross-Validation helfen, diesen Sweet Spot zu finden.
Der Vergleich:
| Aspekt | Underfitting | Gute Generalisierung | Overfitting |
|---|---|---|---|
| Training-Performance | Schlecht | Gut | Sehr gut |
| Test-Performance | Schlecht | Gut | Schlecht |
| Problem | Zu einfach | Optimal | Zu komplex |
| Lösung | Mehr Kapazität | Beibehalten | Regularisierung |
Das fundamentale Konzept hinter Overfitting/Underfitting:
Loss
│
│ Underfitting Gut Overfitting
│ ████████████████ ████ ████
│ Train ≈ Val (hoch) ██ ██ ██ ████ Val
│ ██████████ ████████
│ Train ≈ Val (niedrig) ██████████ Train
└──────────────────────────────────────────────────────────── Epochs
best_val_loss = float('inf')
patience = 5
patience_counter = 0
for epoch in range(100):
train_loss = train_one_epoch(model, train_loader)
val_loss = evaluate(model, val_loader)
if val_loss < best_val_loss:
best_val_loss = val_loss
patience_counter = 0
torch.save(model.state_dict(), 'best_model.pt') # Bestes Modell speichern
else:
patience_counter += 1
if patience_counter >= patience:
print(f"Early stopping at epoch {epoch}")
break
# Bestes Modell laden
model.load_state_dict(torch.load('best_model.pt'))
| Technik | Wirkung | Typische Werte |
|---|---|---|
| Dropout | Zufällig Neuronen deaktivieren | 0.1-0.5 |
| L2 (Weight Decay) | Große Gewichte bestrafen | 1e-4 bis 1e-2 |
| L1 | Sparsity fördern | 1e-5 bis 1e-3 |
| Data Augmentation | Künstliche Datenvielfalt | - |
| Label Smoothing | Weichere Targets | 0.1 |
Overfitting ist wie ein Schüler, der Antworten auswendig lernt statt das Prinzip zu verstehen – bei neuen Aufgaben versagt er. Underfitting ist wie ein Schüler, der den Stoff gar nicht erst gelernt hat.
Overfitting: Modell performt auf Trainingsdaten gut, aber schlecht auf neuen Daten
Underfitting: Modell performt weder auf Trainings- noch auf Testdaten gut
Das Ziel ist die Balance dazwischen – gute Generalisierung
Modell-Diagnose
Erkennung und Behebung von Overfitting/Underfitting durch Loss-Kurven-Analyse
Hyperparameter-Tuning
Anpassung der Modellkomplexität für optimale Generalisierung
Datenqualität
Identifikation, ob mehr oder bessere Daten benötigt werden
Wenn der Training Loss sinkt, aber der Validation Loss steigt oder stagniert. Die Lücke zwischen beiden wird größer. Das Modell hat die Trainingsdaten auswendig gelernt, statt allgemeine Muster zu erkennen.
Mehr Trainingsdaten, Regularisierung (Dropout, Weight Decay), Data Augmentation, frühzeitiges Stoppen (Early Stopping), einfacheres Modell oder Cross-Validation.
Komplexeres Modell, mehr Features, längeres Training, weniger Regularisierung oder bessere Feature Engineering.