Cos'è Dropout e come si comporta durante l'addestramento e l'inferenza?
sobes.tech AI
Risposta dell'AI
Il dropout è un metodo di regolarizzazione nelle reti neurali profonde che aiuta a prevenire il sovrallenamento. Durante l'addestramento, una parte dei neuroni viene "spenta" casualmente (azzerata) con una probabilità data (ad esempio, 0,5), costringendo la rete a non fare troppo affidamento su neuroni singoli e migliorando la sua capacità di generalizzazione.
Nella fase di addestramento (train), il dropout è attivo: i neuroni vengono disattivati casualmente e i pesi vengono aggiornati tenendo conto di ciò.
Nella fase di inferenza (inference), il dropout viene disattivato, tutti i neuroni sono attivi e le uscite vengono scalate (di solito moltiplicate per la probabilità di mantenere il neurone) per compensare l'effetto della disattivazione durante l'addestramento.
Esempio 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 attivo
output_train = model(torch.randn(1, 10))
model.eval() # dropout disattivato
output_eval = model(torch.randn(1, 10))