Sobes.tech
Junior — Middle

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))