(come giocare con i palloncini e, nel frattempo, validare le reti neurali)

Abbiamo appena finito di addestrare il nostro modello. Ma il lavoro non è ancora concluso. Adesso dobbiamo capire se l’addestramento è andato a buon fine.

Quando si valuta sia l’andamento della fase di training sia lo stato finale raggiunto dal modello, entrano in gioco due concetti fondamentali: overfitting e underfitting.

Nel primo caso il modello si è adattato eccessivamente ai dati di addestramento. Nel secondo, invece, non è riuscito ad “apprendere” a sufficienza. In entrambi i casi ci troviamo di fronte a un modello incapace di generalizzare.

In altre parole, dobbiamo chiederci come si comporterà di fronte a dati che non ha mai visto prima. Se le sue prestazioni peggiorano sensibilmente, significa che il processo di apprendimento non ha raggiunto il giusto equilibrio.

Per descrivere questa situazione si ricorre spesso a un paragone con lo studio scolastico. Se studio esclusivamente a memoria, finirò per conoscere il testo senza comprenderlo davvero. Avrò imparato una sequenza di informazioni, ma difficilmente saprò collegarle, ragionarci sopra o applicarle a un contesto diverso. Durante un’interrogazione, quindi, mi troverò facilmente in difficoltà non appena mi verrà posta una domanda leggermente diversa da quelle che avevo preparato.

All’estremo opposto c’è uno studio superficiale e frammentario. In questo caso non avrò acquisito nemmeno le conoscenze di base e le mie risposte saranno spesso incomplete o insufficienti.

L’analogia è efficace perché descrive bene le due condizioni in cui può trovarsi un modello. Eppure c’è un aspetto che considero fuorviante.

Ancora una volta ritorna una prospettiva profondamente antropocentrica. Protagora sosteneva che «l’uomo è misura di tutte le cose» e, sotto molti aspetti, questa idea continua ancora oggi a influenzare il nostro modo di spiegare il cosiddetto “apprendimento delle macchine”.

Magari è così, si tratta di una vera forma di apprendimento. Intanto però, provare altri punti di vista male non fa, non è detto che tutto possa convivere in qualche modo.

Giocare con i palloncini è una cosa seria

In particolare trovo molto interessante e divertente capire come in un sistema il passaggio micro → macro condizioni l’incertezza e l’equilibrio del sistema stesso

Prendiamo per esempio un palloncino. Immaginiamo di usare un manometro per misurare la pressione interna, fino a vedere l’ago dello strumento fermarsi su $1.2$ atmosfere.

Dietro quel numero fermo, ci sono miliardi di miliardi di molecole d’aria che colpiscono la membrana dello strumento, miliardi di volte al secondo. Ogni molecola impatta con la sua propria forza e velocità, e non ha senso tentare di misurare ognuna, tanto più che l’ago è molto più lento di una molecola.

Quindi alla fine, quello che vediamo nella misura è il risultato dell’effetto combinato di tutte le molecole.

Ora, facciamo un esperimento mentale, rimpiccioliamo il palloncino fino ad un puntino molto piccolo. Deve essere piccolo abbastanza da poter contenere solo una manciata di molecole ben distinguibili. Se provassimo ad effettuare adesso la misura (rimpicciolendo opportunamente il manometro), vedremmo l’ago dello strumento muoversi irregolarmente. Le molecole non si compensano più, ognuna colpisce con la sua forza e con la sua velocità.

Stesso gas, stessa pressione, nel sistema cambia solo quante molecole si leggono in una volta.

A sinistra, il palloncino grande contiene molte molecole, i loro urti si compensano e l'ago del manometro resta fermo. A destra, il palloncino ridotto a pochissime molecole, ogni urto pesa per conto suo e l'ago oscilla.

Segue quindi che la fiducia nel sistema di misurazione non arriva dal conoscere le molecole una ad una, ma da quante ne riesco a misurare in una volta.

In un modello gli strumenti di misurazione sono le fasi di validazione e test (il primo avviene in fase di training, il secondo a training completato). Se su un modello di classificazione raggiungo una determinata percentuale di l’accuratezza, questo da cosa dipende?

Il modello è lo stesso, ma la stabilità dipende molto anche dal numero di campioni.

Alcune cose sono molto più vicine alla certezza di altre

La citazione completa di Bertrand Russell è questa: “Quando si ammette che nulla è certo, bisogna anche aggiungere che alcune cose sono molto più vicine alla certezza di altre”.

Ho detto che considero fuorviante l’esempio dello studio e credo che questa citazione ci metta nella giusta posizione per guardare al punto in cui voglio arrivare. Non è tanto importante guardare alla “performance” in sé quanto al concetto di errore e farlo nel modo meno assoluto.

Anche se la certezza assoluta è rara o irraggiungibile, esistono diversi gradi di affidabilità della conoscenza.

Se vogliamo capire da cosa è fatto l’errore che un modello commette su nuovi dati, dobbiamo cominciare dall’accettare l’idea che nella pratica non arriveremo mai alla risposta ideale.

Mi spiego meglio. Abbiamo parlato del teorema di approssimazione universale e più volte abbiamo indicato i termini accettabile e trascurabile come i più importanti di tutto il mondo dell’AI.

E potrei cominciare la frase che segue scrivendo: “Il problema infatti è…”, ma non mi va proprio di usare la parola “problema”. Preferisco scrivere che si tratta di un dato di fatto, perché abbiamo solo dati che rappresentano di per sé risposte “sporche” e imperfette. Ma tutto ciò non significa che avremo a che fare in assoluto con un sistema precario a prescindere.

Non è la prima volta che sottolineo questo aspetto dell’AI, ma lo reputo importante e in ogni articolo vorrei cercare di far comprendere quanto sia ampio l’intorno descritto dalle parole trascurabile e accettabile.

In fisica questa condizione è la norma, non l’eccezione. Quando Millikan misurò la carica dell’elettrone, non la “vide”, ma osservò minuscole gocce d’olio sospese tra due piastre cariche e ne dedusse il valore, goccia per goccia, ognuna con la sua incertezza sperimentale.

Si stima la grandezza vera $\mu$ da misure imperfette, avvicinandola sempre di più. Millikan ci arrivò con un piccolo errore sistematico, corretto dai fisici che vennero dopo, fino alla precisione altissima di oggi. Ogni dato $\mu + \varepsilon$ è il valore ideale più un errore di misura $\varepsilon$ che non si sa isolare.

Misurare significa inferire una grandezza non direttamente osservabile a partire da osservazioni affette da errore.

Addestrare un modello sui dati è esattamente questo, ovvero inseguire una grandezza che non si osserva mai in chiaro, attraverso misure che la nascondono nell’atto stesso di rivelarla.

Questo è il primo di tre articoli. Nei primi due proveremo a riflettere sul concetto di errore in un modello, e su come quest’ultimo quando diventa troppo “capace”, diventi come un gas troppo libero finendo col “disperdersi” in troppe configurazioni possibili.

Nell’ultimo articolo ci chiederemo come si confina un gas e come in un modello questo confinamento permetta di generalizzare.

Misurare le performance

Prima di procedere credo serva un chiarimento su come si misura un modello.

Il dataset disponibile viene suddiviso in tre sottoinsiemi disgiunti, ciascuno dei quali svolge una funzione specifica nel processo di addestramento e valutazione del modello.

  • Training set: è il sottoinsieme utilizzato per ottimizzare i parametri del modello $\phi$. A ogni iterazione dell’algoritmo di ottimizzazione, i parametri vengono aggiornati minimizzando una funzione di loss calcolata sugli esempi del training set. Generalmente rappresenta la porzione più ampia del dataset, pari a circa il 70% o l'80% dei dati disponibili.
  • Validation set: è il sottoinsieme utilizzato per stimare le prestazioni del modello durante l’addestramento. Al termine di ogni epoca (un ciclo di training) viene calcolata la loss, ed eventualmente altre metriche, sul validation set senza aggiornare i parametri $\phi$. Le informazioni ottenute vengono impiegate per guidare il processo di addestramento, ad esempio nella selezione degli iperparametri e nella scelta del modello migliore. Di conseguenza, pur non contribuendo direttamente all’ottimizzazione dei parametri, il validation set influenza indirettamente il modello.
  • Test set: è il sottoinsieme utilizzato esclusivamente al termine dell’addestramento per stimare la capacità di generalizzazione del modello. I suoi esempi non vengono utilizzati né per l’ottimizzazione dei parametri né per la selezione degli iperparametri. Per questo motivo, le prestazioni misurate sul test set costituiscono una stima il più possibile imparziale delle prestazioni attese su dati non osservati durante lo sviluppo del modello.

Poche molecole ma buone

L’idea di rimpicciolire un palloncino fino a poter osservare il comportamento di poche molecole offre un ottimo suggerimento.

Seguiamolo cercando di replicare lo stesso esperimento (questa volta direi più artificiale che mentale) inserendolo in una regressione in una sola dimensione. Un problema, quindi, di apprendimento supervisionato in cui si vuole stimare una funzione che descriva la relazione tra una singola variabile indipendente $x$ e una variabile dipendente continua $y$.

L’obiettivo è quello di apprendere una funzione $f(x)$ a partire da un insieme di coppie di osservazioni $(x_i, y_i)$.

$$ y = f(x) + \varepsilon, $$

dove $\varepsilon$ rappresenta il termine di errore che tiene conto del rumore e delle componenti non spiegate dal modello. Una volta appresa, la funzione può essere utilizzata per prevedere il valore di $y$ per nuovi valori di $x$.

Ma l’aspetto che di questo modello ci interessa maggiormente è la loss che andremo a scegliere, ovvero lo scarto quadratico:

$$ \mathcal{L} = \big( f(x, \phi) - y\big)^2 $$

In questo modo manteniamo i passaggi ben visibili.

Il quadrato rende l’errore sempre positivo e permette una scomposizione del quadrato della somma particolarmente semplice: $(a + b)^2 = a^2 + 2ab + b^2$

In pratica stiamo descrivendo un modello simile a quello visto nei primi articoli (il caso più semplice è la regressione lineare, in cui si assume che la relazione tra le due variabili sia approssimativamente una retta).

In questo esperimento, però, invece di cercare dati, assumiamo che siano stati ottenuti da una funzione semplice che genera le risposte, a cui si aggiunge un rumore casuale..

Una sola dimensione. In questo modo sarà più facile capire come interagiscono, in uno spazio meno denso, i fattori che determinano l’errore di un modello.

Nulla di nuovo né di originale, è un metodo già usato in tanti libri didattici. Qui però voglio inserirlo in un contesto molto più ampio e strano del solito.

Quindi riassumendo, l’idea è sostanzialmente quella di partire da una funzione ideale a disposizione, per poi cercare di misurare quanto il modello se ne discosti punto per punto. Possiamo definirlo come un banco di prova controllato, da cui provare a trarre conclusioni valide per casi reali dove questa funzione ideale non la conosciamo.

Micro e Macro

Fissiamo questa immagine, l’abbiamo già vista in un altro articolo: una molecola di gas non ha una posizione fissa ma una rosa di stati possibili che il moto caotico rende incerti.

In un modo simile, il valore osservato $y$ non avrà un valore fisso, ma una distribuzione e il rumore sarà l’agitazione termica del dato. Le ragioni sono tutte molto concrete, ovvero errori di misura, etichette imperfette e più in generale condizioni a contorno dettate da variabili che influenzano il risultato ma che non abbiamo modo di osservare.

Le parole chiave sono queste:

  • microscopico (l’inaccessibile): qui le equazioni della dinamica classica sono deterministiche (ad esempio le equazioni di Newton per ogni molecola)
  • macroscopico (ciò che si osserva): dove si perde informazione sulle condizioni iniziali di tutte le particelle e non è più possibile prevedere uno stato singolo, ma solo una distribuzione di probabilità

Ora, cominciamo con l’indicare i tre attori in gioco:

  • $f(x, \phi)$ è il modello, ovvero la previsione prodotta a partire dall’input $x$
  • $\mathcal{I}(x) = \mu$ è la funzione ideale, la grandezza vera che vorremmo raggiungere
  • $y$ è il valore osservato, il dato che misuriamo

Dopodiché proviamo a modellare matematicamente questa situazione dividendola in tre parti.

Prima parte. Il valore osservato si scrive come:

$$ y = \mu + \varepsilon $$

La forma l’abbiamo già incontrata lungo l’articolo, ma qui la leggeremo in modo leggermente diverso. In questo caso il valore osservato $y$ è dato dalla somma del valore ideale atteso $\mu$ con una perturbazione casuale $\varepsilon$.

Seconda parte. Il valore atteso del rumore è nullo,

$$ \mathbb{E}(\varepsilon) = 0 $$

Il simbolo $\mathbb{E}$ indica il valore atteso, cioè la media di una quantità calcolata su tutti i suoi possibili valori. Ma perché uguale a zero e non un numero qualsiasi?

Partiamo dalla definizione di rumore. Il rumore è lo scarto tra il valore osservato $y$ e il valore ideale $\mu$,

$$ \varepsilon = y - \mu $$

A sua volta, il valore ideale $\mu$ è per definizione la media degli output osservati per un dato input $x$. Quindi possiamo scrivere

$$ \mathbb{E}(y) = \mu $$

Osserviamo inoltre che $\mu$, fissato un input $x$, è una costante. La media di una costante è la costante stessa, quindi

$$ \mathbb{E}(\mu) = \mu $$

Mettendo insieme quanto sviluppato finora otteniamo

$$ \mathbb{E}(\varepsilon) = \mathbb{E}(y - \mu) = \mathbb{E}(y) - \mathbb{E}(\mu) = \mu - \mu = 0 $$

L’intuizione dietro questa espressione in realtà è piuttosto semplice. Il rumore è ciò che resta dopo aver sottratto la media, e ciò che resta dopo aver sottratto la media ha media zero.

Facciamo un esempio per capire bene cosa si è appena descritto. Supponiamo di pesare più volte uno stesso oggetto che sappiamo pesa $1000$ g.

Con una bilancia buona otteniamo letture come $998$, $1002$, $999$, $1001$. I valori oscillano attorno a $1000$, la loro media. Gli scarti rispetto a $1000$ sono a volte positivi e a volte negativi, e sommandoli tendono a compensarsi. Questo è rumore a media zero.

Consideriamo ora una bilancia non funzionante con la tara che aggiunge sempre $5$ g. Le letture diventano $1003$, $1007$, $1004$ e così via. Se continuassimo a considerare $1000$ come valore ideale, lo scarto avrebbe media $+5$ invece che zero. Il punto è che quel $+5$ non è casuale. È presente in ogni singola misura e non si compensa mai, quindi è un effetto sistematico e non una perturbazione accidentale.

Un effetto sistematico di questo tipo va considerato segnale, non rumore. La definizione di $\mu$ come media degli output osservati ne tiene conto in modo automatico. Con la bilancia non funzionante la media delle letture non è più $1000$ ma $1005$, quindi $\mu = 1005$. Rispetto a questo nuovo valore gli scarti tornano a distribuirsi attorno allo zero, e ritroviamo un rumore a media zero.

A sinistra, una bilancia corretta dove le letture oscillano simmetricamente attorno al valore vero (rumore puro, media zero). A destra, una bilancia non funzionante con le letture che si spostano tutte nella stessa direzione rispetto al valore vero (bias), pur mantenendo una loro dispersione attorno al nuovo centro spostato.

La morale è la distinzione tra due fenomeni diversi. L’errore sistematico sul peso corrisponde al bias, cioè un errore costante che sposta tutte le misure nella stessa direzione. La variazione delle letture corrisponde al rumore, cioè la parte imprevedibile che cambia da una misura all’altra. Sono due cose che vanno rigorosamente separate.

Terza parte. La varianza del rumore è

$$ var(\varepsilon) = \sigma^2 $$

$\sigma^2$ rappresenta quanto è grande in media lo spazio all’interno del quale avvengono le variazioni casuali.

Chiamiamo $\mathbb{E}_y$ il valore atteso (media) rispetto al rumore sul valore osservato $y$ e riscriviamo come segue:

$$ \sigma^2 = \mathbb{E}_y \big((\mu - y)^2 \big) $$

Possiamo definire la varianza del rumore come la media dei quadrati degli scarti.

A questo punto potremmo definire la funzione ideale come la media degli output.

Fissato $x$, la rosa dei valori possibili di $y$ diventa una distribuzione di probabilità di $y$ dato $x$, cioè $Pr(y|x)$.

La funzione ideale diventa così il baricentro di questa distribuzione:

$$ \mathcal{I}(x) = \mathbb{E}_y(y) = \int y \cdot Pr(y|x) \, dy $$

Potremmo leggere la formula così: si prendono tutti i valori possibili di $y$ (se non si ha familiarità con il simbolo, il segno di integrale $\int$ non è che un modo per sommare infinite quantità), si pesa la probabilità di ciascuno e si sommano. Il risultato sarà il valore attorno a cui i dati si bilanciano.

Una nota riscrittura moderna di un passo della Metafisica di Aristotele dice che “il tutto è più della somma delle sue parti”.

Ossia, quando gli elementi vengono combinati e interagiscono tra loro emergono proprietà, comportamenti o caratteristiche che non sono presenti nelle singole parti considerate isolatamente.

Quale descrizione migliore per definire il concetto $\text{micro} \rightarrow \text{macro}$. Non descriviamo la singola molecola (il singolo dato rumoroso), ma una proprietà d’assieme (la media).

La funzione ideale è una grandezza macroscopica che emerge dal caos microscopico.

Abracadabra

Un modello, lo ripeto, è una funzione $f(x, \phi)$ che, dato $x$, produce una previsione.

I parametri $\phi$ non sono però scelti a mano. Si arriva ad uno stato in cui i parametri assumono valori accettabili, minimizzando l’errore sul dataset $\mathcal{D}$.

L’addestramento cerca i $\phi$ che fanno avvicinare l’output del modello ai punti di $\mathcal{D}$. Il rapporto di dipendenza risulta immediato, le proprietà di $\phi$ emergono dalla coppia modello-dataset. È sostanzialmente questo aspetto a determinare la varianza.

In definitiva l’obiettivo che vogliamo raggiungere è dimostrare che è possibile “spezzare” il valore atteso della loss (l’errore medio, tenendo conto sia del rumore sui dati sia del dataset) nelle tre parti sopra citate:

$$ \text{errore atteso} = \text{varianza} + \text{bias}^2 + \text{rumore} $$

E allora diamo spazio alla magia.

Cominciamo riprendendo la loss:

$$ \mathcal{L}(x) = \big( f(x,\phi) - y \big)^2 $$

Non li vediamo, ma ci sono due errori ben distinti. Uno dipende dal modello ed è dato da quanto quest’ultimo si discosta dalla funzione ideale $\mathcal{I}(x)$. L’altro errore dipende dai dati e da quanto questi sono “rumorosi”, sempre rispetto alla funzione ideale.

Aggiungiamo e sottraiamo la funzione ideale alla loss:

$$ \mathcal{L}(x) = \big( f(x,\phi) - y \big)^2 = \big[ \underbrace{(f(x, \phi) - \mathcal{I}(x))}_{a} + \underbrace{(\mathcal{I}(x) - y)}_b \big]^2 $$

Possiamo farlo, perché se aggiungiamo e togliamo la stessa quantità da un’espressione, il risultato di quest’ultima non cambia.

Guardiamo cosa abbiamo ottenuto. Il termine $a$ è lo scarto tra il modello e la funzione ideale, mentre il termine $b$ è il rumore.

Espandiamo il quadrato:

$$ \begin{align} \mathcal{L}(x) &= \big( f(x, \phi) - y \big)^2 \\ &= \big( f(x,\phi) - \mathcal{I}(x) \big)^2 + 2 \big( f(x,\phi) - \mathcal{I}(x) \big) \big( \mathcal{I}(x) - y \big) + \big( \mathcal{I}(x) - y \big)^2 \end{align} $$

Ci interessa il comportamento medio, quindi applichiamo $\mathbb{E}_y$ (per brevità usiamo solo $f$ per il modello e $\mathcal{I}$ per la funzione ideale):

$$ \mathbb{E}_y [\mathcal{L}(x)] = \underbrace{\mathbb{E}_y [(f - \mathcal{I})^2]}_{t_1} + \underbrace{2\mathbb{E}_y [(f - \mathcal{I})(\mathcal{I} - y)]}_{t_2} + \underbrace{\mathbb{E}_y [(\mathcal{I} - y)^2]}_{t_3} $$

Vediamo cosa accade ad ogni parte dell’equazione.

Il primo termine $t_1$ non contiene $y$ e quindi va considerato come una costante rispetto al rumore. Il termine misto $t_2$ si annulla, perché $\mathbb{E}_y(\mathcal{I} - y)$ vale $\mu - \mu = 0$. Il terzo termine $t_3$ è il rumore per definizione.

Ciò che abbiamo di fatto ottenuto dalla semplificazione è quanto segue:

$$ \mathbb{E}_y \big[\mathcal{L}(x)\big] = \big( f(x,\phi) - \mathcal{I}(x) \big)^2 + \sigma^2 $$

Il resto è rappresentato dallo scarto del modello dall’ideale e il rumore $\sigma^2$, di cui adesso possiamo vederne la natura. È un elemento che resta irriducibile, nessuna parte del modello lo tocca direttamente.

E qui arriva la cosa interessante. Nei gas $\sigma^2$ è l’agitazione termica del dato, l’incertezza di fondo che nessun “raffreddamento del modello” può eliminare. È una sorta di muro invalicabile.

Guardando dentro gli scarti

I parametri raggiungono un determinato stato a partire dal dataset di addestramento $\mathcal{D}$, quindi lo scarto dall’ideale contiene due cause. La prima è un difetto strutturale che anche mediando non può essere del tutto eliminato (sarà il bias). La seconda è una fluttuazione campionaria, quella naturale variazione dei risultati statistici che si osserva quando si estraggono campioni diversi dalla stessa popolazione (la varianza).

Chiamiamo $f_\mu$ la previsione media del modello su tutti i possibili dataset di addestramento estraibili dallo stesso fenomeno e $\mathbb{E}_{\mathcal{D}}$ il valore atteso (media) rispetto alla scelta del dataset $\mathcal{D}$.

Scriviamo quindi:

$$ f_{\mu}(x) = \mathbb{E}_{\mathcal{D}} \big( f(x,\phi_{\mathcal{D}}) \big) $$

Fermiamoci un attimo per capire la differenza tra le due medie, perché è il cuore di tutto il ragionamento. Immaginiamo di fissare un solo input $x$. La media sul rumore $\mathbb{E}_y$ corrisponde a rifare tante volte la misura lì dove il dato $y$ oscilla per via del rumore mentre modello e dataset restano gli stessi. La media sul dataset $\mathbb{E}_{\mathcal{D}}$ è un’altra cosa, perché stavolta teniamo fisso il punto $x$ ma ogni volta rimescoliamo il dataset di addestramento, riaddestriamo il modello e guardiamo la nuova previsione. Nel primo caso a variare è il dato, nel secondo a variare è il modello.

A sinistra, il modello resta fisso (la curva) mentre il dato osservato oscilla per rumore. È la media sul rumore, calcolata ripetendo la misura con lo stesso modello. A destra, il punto resta fisso ma è il modello a cambiare a ogni dataset diverso. In questo caso parliamo di media sul dataset, dove la curva evidenziata è la previsione tipica attorno a cui le altre si distribuiscono.

Facciamo un esempio in modo da rendere il tutto più chiaro. Prendiamo cento dataset diversi, ma che descrivono lo stesso fenomeno. Usiamo questi dati per addestrare il nostro modello. Otteniamo cento curve leggermente diverse tra loro. La loro media, punto per punto, è proprio $f_\mu$, la previsione tipica, ciò che il modello dice in media indipendentemente dal particolare dataset. La varianza è il modo in cui le curve si muovono attorno a questa media.

Anche qui usiamo lo stesso trucco:

$$ \begin{align} \big( f(x,\phi_{\mathcal{D}}) - \mathcal{I}(x) \big)^2 = \big[ \underbrace{(f(x,\phi_{\mathcal{D}}) - f_{\mu}(x))}_{a} + \underbrace{(f_{\mu}(x) - \mathcal{I}(x))}_b \big]^2 \end{align} $$

Anche in questo caso abbiamo un’espressione divisa in due parti. Il termine $a$ è lo scarto specifico del modello dalla previsione tipica (la fluttuazione), mentre il termine $b$ è lo scarto della previsione tipica dall’ideale (il difetto strutturale).

Anche qui espandiamo (usando $f$ per $f(x,\phi_{\mathcal{D}})$):

$$ (f - \mathcal{I})^2 = (f-f_\mu)^2 + 2(f-f_\mu)(f_\mu-\mathcal{I}) + (f_\mu-\mathcal{I})^2 $$

Applichiamo la media:

$$ \mathbb{E}_{\mathcal{D}}\big[(f - \mathcal{I})^2\big] = \underbrace{\mathbb{E}_{\mathcal{D}}[(f-f_\mu)^2]}_{t_1} + \underbrace{2\mathbb{E}_{\mathcal{D}}[(f-f_\mu)(f_\mu-\mathcal{I})]}_{t_2} + \underbrace{\mathbb{E}_{\mathcal{D}}[(f_\mu-\mathcal{I})^2]}_{t_3} $$

Anche qui controlliamo ogni termine.

Il primo termine $t_1$ è la varianza, la dispersione delle previsioni attorno alla media, ovvero quanto le previsioni ballano al cambiare del dataset. Definisce l’instabilità data dalla dipendenza eccessiva dal campione, perché cambiando il dataset cambia il risultato.

Il termine misto $t_2$ si annulla anche in questo caso, ma per una ragione leggermente diversa. Infatti, il fattore $(f_\mu-\mathcal{I})$ è indipendente dal dataset $\mathcal{D}$ e può quindi essere portato fuori dal calcolo della media.

$$ (f_\mu-\mathcal{I})\,\mathbb{E}_{\mathcal{D}}(f-f_\mu). $$

Ciò che resta è appunto:

$$ \mathbb{E}_{\mathcal{D}}(f-f_\mu) = \mathbb{E}_{\mathcal{D}}(f)-f_\mu = f_\mu-f_\mu = 0, $$

da cui segue immediatamente che $t_2=0$.

Il terzo termine $t_3$ è il bias al quadrato, non dipende dal dataset e rappresenta l’errore strutturale presente anche se usassimo un numero infinito di dati. Dipende infatti dalla “forma” del modello, non dalla scarsità dei dati, e rappresenta quanto la previsione tipica resta lontana dall’ideale.

Tutti i nodi vengono al pettine

Ampliamo la rappresentazione del comportamento medio aggiungendo l’ultima espressione:

$$ \mathbb{E}_{y,\mathcal{D}}\big[\mathcal{L}(x)\big] = \underbrace{ \mathbb{E}_{\mathcal{D}}\big[ \big( f - f_{\mu} \big)^2 \big]}_{\text{varianza}} + \underbrace{\big(f_{\mu}(x) - \mathcal{I}(x)\big)^2}_{\text{bias}^2} + \underbrace{\sigma^2}_{\text{rumore}} $$

Dove la varianza indica l’incertezza dovuta al dataset campionato, il quadrato del bias rappresenta lo scostamento dall’ideale e infine il rumore è dato dall’incertezza intrinseca dei dati.

I tre contributi che si sommano nell'errore atteso di un modello: la varianza (in alto, teal, quanto le previsioni cambiano al variare del dataset), il bias al quadrato (al centro, corallo, quanto la previsione tipica resta lontana dall'ideale) e il rumore (in basso, ambra, l'incertezza intrinseca dei dati, irriducibile). Impilati, danno l'errore atteso complessivo.

Abbiamo aperto un cerchio e adesso dobbiamo necessariamente richiuderlo.

Un modello con bias alto è quello che dicevamo essere in underfitting, perché la previsione tipica resta lontana dall’ideale a prescindere dai dati. E questo è un difetto di forma del modello, non una questione di quanti dati ha visto.

Un modello con varianza alta è invece in overfitting, il gas troppo libero di cui parlavamo, perché si incolla al particolare dataset e basta rimescolare i dati perché la previsione cambi. Il rumore, infine, non dipende da nessuno dei due, perché è l’agitazione termica del dato, la parte di imprevedibilità che resta comunque.

I quattro modi in cui le previsioni di un modello possono disporsi rispetto al punto ideale (il cerchio sottile al centro). In alto a sinistra: bias basso, varianza bassa, la nuvola di punti è compatta e centrata. In alto a destra: bias alto, varianza bassa, nuvola compatta ma spostata dal centro. In basso a sinistra: bias basso, varianza alta, punti sparsi ma centrati in media. In basso a destra: bias alto, varianza alta, punti sparsi e fuori centro.

Beh, in realtà il cerchio non possiamo ancora chiuderlo del tutto. Abbiamo scelto un modello e una loss abbastanza semplice da poterci permettere di seguire il ragionamento un termine alla volta. Ma l’additività dell’espressione finale dipende dalla loss e pertanto non rappresenta una proprietà ovvia a priori.

Intendiamoci, le definizioni di underfitting e overfitting restano valide e, per altre loss, i tre contributi esistono ancora, ma interagiscono in modo decisamente più intricato.

Ma questo sarà l’argomento della seconda parte di questo articolo.