Was ist Dropout und wie verhält es sich beim Training und bei der Inferenz?
sobes.tech KI
Antwort von AI
Dropout ist eine Regularisierungsmethode in tiefen neuronalen Netzen, die hilft, Überanpassung zu verhindern. Während des Trainings wird ein Teil der Neuronen zufällig "ausgeschaltet" (auf Null gesetzt) mit einer bestimmten Wahrscheinlichkeit (z.B. 0,5), was das Netzwerk dazu zwingt, sich nicht zu sehr auf einzelne Neuronen zu verlassen und seine Generalisierungsfähigkeit verbessert.
Im Trainingsmodus (train) ist Dropout aktiv: Neuronen werden zufällig deaktiviert, und die Gewichte werden unter Berücksichtigung dessen aktualisiert.
Im Inferenzmodus (inference) wird Dropout deaktiviert, alle Neuronen sind aktiv, und die Ausgaben werden skaliert (normalerweise multipliziert mit der Wahrscheinlichkeit, dass ein Neuron aktiv bleibt), um den Effekt des Deaktivierens während des Trainings auszugleichen.
Beispiel in PyTorch:
import torch
import torch.nn as nn
model = nn.Sequential(
nn.Linear(10, 20),
nn.Dropout(p=0.5),
nn.ReLU(),
nn.Linear(20, 1)
)
model.train() # Dropout aktiviert
output_train = model(torch.randn(1, 10))
model.eval() # Dropout deaktiviert
output_eval = model(torch.randn(1, 10))