Regularisierung
Techniken, die verhindern, dass ein KI-Modell Trainingsdaten auswendig lernt (Overfitting), indem sie die Modellkomplexität einschränken.
Eine Regularisierungstechnik, die während des Trainings zufällig Neuronen deaktiviert – verhindert Overfitting und macht Modelle robuster.
Dropout schaltet beim Training zufällig Neuronen aus. Das zwingt das Netzwerk, robuster zu lernen.
Training (Dropout = 0.5):
[●] [○] [●] [○] [●] ← 50% zufällig aus
│ │ │
[●] [●] [○] [●] [○]
│ │ │
[●] [○] [●] [●] [○]
Inferenz (kein Dropout):
[●] [●] [●] [●] [●] ← Alle aktiv, Gewichte skaliert
import torch.nn as nn
class Model(nn.Module):
def __init__(self):
super().__init__()
self.fc1 = nn.Linear(784, 256)
self.dropout = nn.Dropout(p=0.5)
self.fc2 = nn.Linear(256, 10)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.dropout(x) # Nur aktiv wenn model.train()
x = self.fc2(x)
return x
# Training
model.train() # Dropout aktiv
# Inferenz
model.eval() # Dropout aus
| Variante | Beschreibung |
|---|---|
| Standard | Neuronen zufällig aus |
| Spatial | Ganze Feature Maps aus (CNNs) |
| DropConnect | Gewichte statt Neuronen |
| DropBlock | Zusammenhängende Regionen |
Dropout ist wie ein Team, das trainiert, auch wenn zufällig Spieler fehlen. So wird jeder Spieler wichtig und das Team funktioniert auch bei Ausfällen.
Zufällig p% der Neuronen pro Batch deaktivieren
Nur beim Training, nicht bei Inferenz
Typische Werte: 0.1-0.5 (10-50%)
Overfitting verhindern
Modell generalisiert besser
Ensemble-Effekt
Implizit viele Subnetze trainieren
Uncertainty Estimation
Monte Carlo Dropout für Unsicherheit
Verhindert Co-Adaptation: Neuronen können sich nicht auf andere verlassen. Jedes Neuron muss nützliche Features lernen.
Aus! Aber Gewichte werden skaliert (×(1-p)) um den Erwartungswert gleich zu halten.