Junior — Middle
Czym jest Dropout i jak zachowuje się podczas treningu i inferencji?
sobes.tech AI
Odpowiedź od AI
Dropout to metoda regularizacji w głębokich sieciach neuronowych, która pomaga zapobiec nadmiernemu dopasowaniu. Podczas treningu losowo wyłącza się (zeruje) część neuronów z określonym prawdopodobieństwem (np. 0,5), co zmusza sieć do niepolegania zbyt mocno na pojedynczych neuronach i poprawia jej zdolność do generalizacji.
Na etapie treningu (train) dropout jest aktywny: neurony są losowo wyłączane, a wagi są aktualizowane z uwzględnieniem tego.
Na etapie inferencji (inference) dropout jest wyłączony, wszystkie neurony są aktywne, a wyjścia są skalowane (zazwyczaj mnożone przez prawdopodobieństwo zachowania neuronu), aby zrekompensować efekt wyłączania podczas treningu.
Przykład w 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 włączony
output_train = model(torch.randn(1, 10))
model.eval() # dropout wyłączony
output_eval = model(torch.randn(1, 10))