Ce este Dropout și cum se comportă în timpul antrenamentului și în inferență?
sobes.tech AI
Răspuns de la AI
Dropout este o metodă de regularizare în rețelele neuronale profunde, care ajută la prevenirea supraînvățării. În timpul antrenamentului, o parte din neuronii sunt "opriviți" aleatoriu (setați la zero) cu o probabilitate dată (de exemplu, 0,5), ceea ce forțează rețeaua să nu se bazeze prea mult pe neuroni individuali și îmbunătățește capacitatea sa de generalizare.
În faza de antrenament (train), dropout este activ: neuronii sunt dezactivați aleatoriu, iar greutățile sunt actualizate ținând cont de acest lucru.
În faza de inferență (inference), dropout este dezactivat, toți neuronii sunt activi, iar ieșirile sunt scalate (de obicei, înmulțite cu probabilitatea de păstrare a neuronului) pentru a compensa efectul dezactivării în timpul antrenamentului.
Exemplu în 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 activat
output_train = model(torch.randn(1, 10))
model.eval() # dropout dezactivat
output_eval = model(torch.randn(1, 10))