Bias-Variance Tradeoff
Il compromesso bias-varianza scompone l'errore di previsione atteso in bias, varianza e rumore, spiegando perché falliscono sia i modelli troppo semplici sia quelli troppo complessi.
Il compromesso bias-varianza descrive come l'errore atteso di un modello su nuovi dati si suddivida in due parti, che reagiscono in modo opposto alla complessità del modello. Il bias è l'errore dovuto a ipotesi troppo semplici per cogliere il pattern reale, che causa l'underfitting. La varianza è l'errore dovuto alla sensibilità ai particolari dati di addestramento, che causa l'overfitting. Rendere un modello più flessibile riduce in genere il bias e aumenta la varianza, quindi l'errore totale minimo si raggiunge con una complessità intermedia. Stuart Geman, Elie Bienenstock e René Doursat hanno introdotto questo concetto nell'apprendimento automatico con il loro articolo del 1992 "Neural Networks and the Bias/Variance Dilemma".
La scomposizione dell'errore#
La scomposizione considera la stessa famiglia di modelli addestrata molte volte, ogni volta su un nuovo insieme di addestramento estratto dalla stessa fonte. Con l'errore quadratico, l'errore atteso su un input si suddivide esattamente in tre termini. Il bias al quadrato è la differenza al quadrato tra la predizione media ottenuta su tutti quegli insiemi di addestramento e il valore reale; una regressione lineare adattata a una relazione curva mantiene un bias elevato indipendentemente dalla quantità di dati disponibili. La varianza misura quanto le predizioni si disperdono intorno alla propria media da un insieme di addestramento all'altro; è elevata negli alberi decisionali profondi e nelle reti neurali grandi non regolarizzate. Il terzo termine, il rumore irriducibile, è la casualità presente nelle etichette stesse, che nessun modello può eliminare.
Ripetere l'adattamento consente di misurare direttamente entrambi i termini. Questo esempio NumPy adatta polinomi di grado 1, 3 e 12 a 1.000 insiemi di addestramento, ciascuno formato da 20 punti rumorosi estratti da un'onda sinusoidale:
import numpy as np
rng = np.random.default_rng(0)
x = np.linspace(0, 1, 20) # 20 training inputs, evenly spaced
x_test = np.linspace(0, 1, 200)
true_curve = np.sin(2 * np.pi * x_test)
for degree in [1, 3, 12]:
# Fit the same polynomial degree to 1,000 training sets that differ only in their label noise
predictions = []
for _ in range(1000):
y = np.sin(2 * np.pi * x) + rng.normal(0, 0.3, x.size)
predictions.append(np.polyval(np.polyfit(x, y, degree), x_test))
predictions = np.array(predictions)
# Bias^2: squared gap between the average fit and the truth; variance: spread of fits around their average
bias_sq = np.mean((predictions.mean(axis=0) - true_curve) ** 2)
variance = np.mean(predictions.var(axis=0))
print(f"Degree {degree:2d}: bias^2 = {bias_sq:.3f}, variance = {variance:.3f}")Una retta ha un bias al quadrato di 0,205 e una varianza di appena 0,008. Un polinomio cubico approssima quasi perfettamente la sinusoide in media, riducendo il bias al quadrato a 0,005, mentre la varianza raddoppia a 0,016. Un polinomio di grado 12 non ha un bias misurabile, ma presenta una varianza di 0,074 perché si piega per seguire il rumore di ogni campione. Il cubico ha l'errore totale più basso e ogni modello è soggetto anche alla varianza del rumore irriducibile, pari a 0,09.
Come diagnosticare bias e varianza#
Gli errori di addestramento e validazione rivelano quale termine prevale. Un errore elevato per entrambi indica un bias. Un errore di addestramento basso e un errore di validazione molto più alto indicano una varianza elevata. Le curve di apprendimento, che tracciano entrambi gli errori in funzione della quantità di dati di addestramento, distinguono i due casi: il divario di un modello con varianza elevata si riduce man mano che i dati aumentano, mentre le due curve di un modello con bias elevato si incontrano presto a un livello di errore alto e vi rimangono. Nell'addestramento Ultralytics YOLO, l'argomento fraction addestra il modello su una parte della suddivisione di addestramento, ad esempio fraction=0.25 per il primo quarto delle immagini, mentre la validazione continua a usare l'intera suddivisione di validazione; quindi, alcune esecuzioni di YOLO26 su frazioni crescenti tracciano una curva di apprendimento per un dataset personalizzato.
Gestire il compromesso#
La varianza diminuisce con più dati, l'aumento dei dati, la regolarizzazione, per esempio il decadimento dei pesi e il dropout, l'arresto anticipato e la media di molti modelli, come avviene con il bagging e le foreste casuali. Il bias diminuisce con un modello più grande, una progettazione delle caratteristiche più ricca, una regolarizzazione più debole, un addestramento più lungo e il boosting, che aggiunge modelli per correggere gli errori dell'ensemble corrente. La regolazione degli iperparametri e la convalida incrociata consentono di scegliere l'impostazione in cui i due termini si bilanciano sui dati tenuti da parte.
La classica curva a U dell'errore di test in funzione della complessità vale per una famiglia di modelli fissa, come i polinomi di grado crescente. Le reti neurali fortemente sovraparametrizzate possono superare questo andamento: l'errore di test aumenta quando il modello si avvicina alla dimensione necessaria per adattarsi esattamente a ogni punto di addestramento, poi diminuisce di nuovo quando cresce ulteriormente; questo fenomeno è chiamato doppia discesa. Anche in questo caso bias e varianza concorrono all'errore, ma la varianza non cresce più in modo costante con il numero di parametri.
Bias statistico e altre forme di bias#
In questo compromesso, il bias è una proprietà dell'algoritmo di apprendimento applicato a un'attività. Il bias nell'IA si riferisce a un'iniquità sistematica nei confronti di gruppi di persone, mentre il bias del dataset riguarda dati di addestramento che rappresentano in modo errato il contesto di distribuzione, come nel caso di una scarsità di riprese del traffico notturno. Un modello può avere un bias statistico basso ed essere comunque iniquo, perché può adattarsi con precisione a un dataset distorto, inclusa la distorsione.










