4 passi nella Teoria dell’Apprendimento

Pubblicato il 17 Dic 2019

RL trading

La teoria dell’apprendimento statistico, a mio parere una delle teorie più affascinanti dell’intelligenza artificiale, non solo ci fornisce le basi teoriche per molti algoritmi di machine learning, ma introduce anche un approccio quasi filosofico nell’identificazione degli elementi fondamentali che rendono possibile trarre conclusioni valide da dati empirici.

La funzione in grado di correlare i dati dal dominio in ingresso a quello di uscita, detta funzione target, è sconosciuta. Se fosse conosciuta infatti, non avremmo bisogno di alcun apprendimento. La premessa di base è quindi quella di utilizzare un insieme di osservazioni per dedurre il processo che le ha determinate. L’apprendimento consisterà nel formare l’algoritmo in grado di approssimare la funzione target, a partire da un set finito di dati di training la cui distribuzione implicitamente ne rivela i parametri.

Alla fine del processo di apprendimento si otterrà quindi una funzione ipotetica che, approssimando la funzione target, potrà essere utilizzata per predirne i comportamenti futuri a partire da dati in ingresso mai visti prima. Le prestazioni della funzione vengono misurate in termini di percentuali di accuratezza delle predizioni che ne definiscono le capacità di generalizzare i comportamenti appresi (generalization performances).

Teoria dell’apprendimento per costruire modelli

La teoria dell’apprendimento, ci fornisce tutti gli strumenti necessari per costruire modelli con prestazioni ottimali.

Per selezionare il modello migliore e testarne la capacità di generalizzazione, e potendo disporre di quantità di dati sufficienti, il set di dati utilizzato per l’apprendimento, che nella grande maggioranza dei casi sarà supervisionato (supervised learning), è normalmente suddiviso in 3 gruppi selezionati in maniera casuale:

  • Un set di training, utilizzato dall’algoritmo per costruire il modello. Modulando i parametri di configurazione dell’algoritmo (hyperparameters) è possibile sviluppare modelli diversi per complessità e precisione.
  • Un set di validazione, per misurare e confrontare tra di loro le prestazioni dei diversi modelli sviluppati e selezionare quali tra loro presenta il più basso errore di previsione o prediction error L’errore di previsione, o errore di generalizzazione (generalization error) quindi, spesso guida il processo di selezione del modello.
  • Un set di test per valutare la capacità di generalizzazione del modello selezionato completamente formato.

Ma se la fase di selezione del modello, è spesso guidata dal valore dell’errore di previsione o generalizzazione, stimare quest’ultimo è tutt’altro che banale in quanto è il risultato di 3 sottoclassi di errori: il bias, la varianza (variance) e il rumore (noise).

Conosciuto anche come l’errore irriducibile, il rumore è l’unico tipo di errore che non può essere ridotto dalla scelta del modello visto che dipende esclusivamente dai dati che abbiamo a disposizione per il training.

Se i dati presenti nel set di training sono infatti generati da un processo intrinsecamente stocastico (casuale) o da un problema non ben definito, oppure sono dati poco rappresentativi che non contengono le caratteristiche discriminanti (features), del processo che stiamo tentando di interpretare, potremo anche passare il resto della vostra vita a tentare di migliorare il nostro modello e le sue prestazioni, ma non riusciremo mai ad andare oltre alle prestazioni che i dati di training ci consentiranno di ottenere.

È questa la ragione per cui i data scientists passano circa l’80% del loro tempo, prima a cercare dati di qualità per il training dei loro modelli (19%), e poi a ripulire e organizzare i dati che hanno trovato (60%): i modelli di machine learning predicono dai dati, esattamente ciò che è stato insegnato loro di predire. Nel migliore dei casi, le loro previsioni avranno la qualità dei dati utilizzati per il loro apprendimento. Con dati pieni di rumore e poco rappresentativi dei processi per i quali stiamo cercando un modello, avremo modelli pieni di errore e predizioni errate.

Tuttavia, il rumore presente nei dati può anche essere usato a nostro favore come campanello d’allarme di una scelta poco accorta relativamente alle features o al data set di training.

Supponiamo ad esempio, che stiamo cercando di istruire un modello in grado di predire il peso delle persone usando un data set di training che contiene solo la loro età. Certo, l’età è forse uno degli elementi coinvolti nella determinazione del peso, ma non è certamente l’unico. Ne esistono molti altri che potrebbero contribuire in maniera determinante ad aumentare le prestazioni del nostro modello. Come l’altezza, il sesso, la zona geografica, il contesto sociale e così via. Considerando solo l’età stiamo limitando il nostro modello ad una capacità di previsione molto bassa e a un errore di generalizzazione molto alto. E questo perché per ogni valore di età in ingresso, e in mancanza di altri fattori discriminanti, esistono moltissimi possibili valori di peso in uscita.

Questo tipo di rumore non rappresenta il vero rumore della distribuzione reale. Indica invece, un set di features insufficiente per essere in grado di rappresentarla.

È fondamentale conoscere e considerare il livello di rumore presente nei dati di ingresso anche per definire le aspettative sulle massime prestazioni raggiungibili dal nostro modello.

Per esempio, supponiamo di dover fare delle previsioni finanziarie, cercando di dedurre se il mercato è in crescita o in recessione. Il livello di rumore intrinseco di questa tipologia di dati è così alto che potremmo considerarci molto soddisfatti se azzeccassimo le previsioni il 53% delle volte, costantemente. Anche se avere il 47% di errore nelle previsioni sembra un valore molto alto, in questo contesto, è la migliore performance alla quale si possa ambire.

Consideriamo però un fatto fondamentale: fintanto che la capacità di generalizzazione è maggiore del 50% ed è costante, siamo in affari, esattamente come i tanti fondi di investimento speculativi che grazie a queste previsioni, fatturano miliardi di dollari.

Come abbiamo appena visto, se da una parte il rumore ci può fornire degli indicatori relativi alla qualità dei dati, la sua presenza, ha un impatto molto negativo sulla capacità di generalizzazione e quindi, sulla qualità delle previsioni dei modelli.

Di conseguenza, per limitare i danni, dobbiamo fare del nostro meglio per far sì che, durante la fase di apprendimento, i nostri algoritmi raccolgano la minor quantità possibile del rumore presente nei dati in ingresso. Rumore che, tra l’altro, non trasporta nessuna informazione utile o riutilizzabile e certamente nessun pattern caratterizzante della distribuzione della quale stiamo tentando di scoprire la funzione che la governa.

E come si fa a raccogliere meno rumore? Bè, facendo in modo che l’algoritmo non impari troppo!

Se un algoritmo fosse in grado di rappresentare, ogni singolo punto della distribuzione di training in ingresso, senza alcun dubbio produrrebbe un errore vicino allo zero su questi dati (training error). Rappresentare tutti i dati però significa anche rappresentare tutte le variazioni casuali determinate dal rumore presente nella distribuzione stessa. In pratica, nel tentativo di imparare alla perfezione i dati della distribuzione, l’algoritmo impara anche tutte le informazioni distorte introdotte dal rumore con la conseguenza di avere sì un errore basso sui dati già noti del training, che interessa fino a un certo punto, ma con la conseguenza, ben più grave, di sviluppare una capacità predittiva bassa, e un errore di generalizzazione alto.

In altre parole, una maggior precisione dell’algoritmo in fase di apprendimento, si traduce anche in una più alta presenza di rumore, che finirà per confonderlo introducendo relazioni tra dati non rappresentative delle distribuzioni reali essendo basate su combinazioni fallaci di dati veri e dati prodotti dall’assoluta casualità del rumore.

Un algoritmo che modella i dati di training in maniera troppo rigorosa, assorbendo così troppo del suo rumore, produrrà modelli drasticamente differenti tra loro a seconda del set di training utilizzato, mostrando al contempo grandi variazioni sulle prestazioni di set di dati di test differenti.

La varianza, misura esattamente questo: la sensibilità di un algoritmo rispetto a uno specifico set di dati di training. Un valore di varianza alto indica un adattamento eccessivo alla distribuzione dei dati di training e per questo, si dice anche che l’algoritmo è in overfitting.

Ecco perché le migliori prestazioni si ottengono dai modelli più semplici in grado di approssimare una distribuzione. Stando però attenti a non cadere nell’errore opposto, selezionando un modello troppo semplice, perché in quel caso, non sarebbe in grado di esprimere e catturare la complessità della distribuzione dei dati di cui stiamo cercando di rappresentare il fenomeno.

Immaginiamo di usare una regressione lineare per mappare un dataset di training che non ha un andamento lineare. Per quanto impegno e dati vorremo metterci, una regressione lineare è pur sempre solo una linea e semplicemente troppo poco espressiva per rappresentare e modellare le curve di un set di dati non lineare.

Questo tipo di errore è rilevato dal bias che in posizione antitetica rispetto alla varianza, misura essenzialmente l’incapacità di un algoritmo di rappresentare e quindi di adattarsi sufficientemente bene, alla distribuzione dei dati di un set di training.
Il bias, in altre parole, dà un peso alle semplificazioni adottate per rendere una funzione target facile da modellare e veloce da formare, al costo però di non riuscire a trovare la funzione più rappresentativa della distribuzione. In queste situazioni l’algoritmo presenterà alti valori di bias e sarà in underfitting rispetto ai dati di training.

Bene. A questo punto, se sono riuscito a trasferire i concetti di base, avrete già capito che siamo di fronte ad un interessante dilemma.

Da una parte, se l’algoritmo si adatta troppo bene ai dati, ed è quindi in overfitting, presenterà un bias basso ma una varianza alta. Questo si tradurrà in una capacità limitata dell’algoritmo di generalizzare la distribuzione appresa durante il training.

D’altra parte, se un algoritmo è troppo semplice per rappresentare la distribuzione dei dati di training, ed è quindi underfitting, presenterà una varianza bassa e alti valori di bias. Che si tradurrà, forse, in prestazioni di generalizzazione migliori rispetto all’overfitting, ma probabilmente anche in una rappresentazione della distribuzione reale talmente lasca da non essere sufficientemente rappresentativa.

In statistica, questo è un dilemma molto conosciuto ed è chiamato appunto: bias-variance tradeoff.

La capacità di sviluppare un algoritmo che riesca a trovare il giusto equilibrio tra i valori di bias e varianza, è esattamente la nostra missione: il modello di approssimazione più semplice con le migliori prestazioni in termini di generalizzazione (= con il più basso errore di generalizzazione).

Il concetto statistico del giusto compromesso tra bias e varianza, in ambito di machine learning è espresso dall’ estimation-approximation tradeoff. Vediamo come.
Sappiamo che un valore di bias alto rileva la scarsa capacità di approssimazione di un modello rispetto alla funzione target. Per migliorare la prestazione, dovremmo quindi selezionare modelli in grado di catturare relazioni più complesse, fornendo uno spazio di ipotesi più ampio che offra maggiori probabilità di approssimare (approximation) lo spazio in cui si trova la distribuzione prodotta dalla funzione target a cui stiamo puntando. L’errore di approssimazione infatti non dipende dalla dimensione dei dati di training, ma è la conseguenza della limitatezza dell’insieme di funzioni implementabili dal nostro modello di apprendimento. Più lo spazio di ipotesi sarà limitato, più bassa sarà la possibilità di avvicinarsi alla nostra funzione target e maggiore sarà l’errore di approssimazione.

Ma approssimando troppo la funzione target il nostro modello produrrà predizioni troppo legate all’andamento dei dati usati per il training, risultando in overfitting e quindi troppo specifica per adattarsi e modellare bene la progressione della distribuzione reale. Questo, lo sappiamo, produce un valore alto di varianza che in questo contesto è anche catturato appunto, dal concetto di errore di stima (estimation error). Varianza elevata = Errore di stima elevato.

Come abbiamo appena visto, la complessità dei modelli influisce sulle loro prestazioni. Ma come può essere misurata la complessità?

Esistono diversi metodi, ma tra i tanti, la dimensione di Vapnik-Chervonenkis (Vapnik-Chervonenkis dimension) è tra quelli più utilizzati perché riuscendo a quantificare bene il concetto di complessità di un modello, ci consente di trovare il giusto equilibrio tra bias e varianza.

Senza entrare troppo nei particolari, la dimensione VC è relativa (ma non necessariamente ne rappresenta il valore esatto) al numero di parametri di un modello che è a sua volta collegato con il numero di dati che il modello può gestire. Il concetto di base è che maggiore è il numero di punti (dati) che il modello vuole approssimare, maggiore sarà il numero dei parametri che il modello dovrà avere per poterli mappare, il che ne aumenta la complessità e lo rende molto specifico a quel dataset.
E l’essere specifico non va molto d’accordo con la capacità di generalizzare bene.

Un valore VC basso suggerisce quindi una complessità del modello adeguata rispetto al numero di dati di training. E se la complessità del modello è adeguata, allora il nostro modello avrà un buon bilanciamento tra bias e varianza, il che produrrà approssimazioni della funzione target né troppo rigide, né troppo specifiche.

Insomma, la dimensione VC ci sta dicendo che il nostro modello ha tutte le carte in regola per poter imparare!

E questo è un risultato straordinario: fornendoci la misura della complessità di un modello, la dimensione VC non solo ci aiuta a trovare il miglior bilanciamento tra i due incompatibili, ma inseparabili, elementi dell’equazione, bias e varianza (o stima-approssimazione), ma ci fornisce una valutazione di quanto un algoritmo possa imparare a partire da dati noti e sia poi in grado di generalizzare i concetti appresi, fornendo previsioni accurate a fronte di dati nuovi, mai visti prima.

La teoria dell’apprendimento non finisce qui. Ci offre ancora molti concetti fondamentali e una guida essenziale nell’affascinante viaggio alla scoperta di ciò che rende possibile l’apprendimento di comportamenti ignoti a partire da pochi elementi a disposizione.

E se da una parte fornisce ai data scientists le basi matematiche per sviluppare alchimie in grado di trasformare una manciata di dati in solide previsioni, dall’altra ci suggerisce anche un sacco di ottimi spunti su come, noi umani, potremmo sviluppare ipotesi molto più affidabili sui fatti della vita che ci circondano: incominciando col dare più peso ai fatti espressi da dati realistici e di qualità e un po’ meno importanza agli echi di tante rumorose opinioni.

***

Michele Vaccaro, Solution Consultant Director Europe South, Italy, Switzerland and Austria at OpenText

*Michele Vaccaro è Solution Consultant Director Europe South, Italy, Switzerland and Austria, di OpenText

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 3