
MACHINE LEARNING | Introduzione per tutti
In questo articolo ci occupiamo di Machine Learning tradotto in italiano come Apprendimento Automatico. Possiamo vederlo come un sottoinsieme, una parte specifica dell'intelligenza artificiale che ha un ruolo ben preciso: imparare dai dati.
Per capire meglio di cosa stiamo parlando usiamo un esempio classico che si ritrova spesso nei testi quando si studia questo argomento: stimare il valore di un immobile.
Il valore di un edificio o di un appartamento non dipende da un insieme di caratteristiche, definite in gergo features. Pensiamo alla dimensione dell'immobile, al suo stato di conservazione, alla posizione geografica, all'anno di costruzione. Ci possono essere anche altre caratteristiche come la presenza di un posto auto, un garage o un ascensore. Tutte queste caratteristiche si combinano tra loro per determinare il valore finale dell'immobile.
In matematica si parla normalmente di combinazione lineare. Le caratteristiche (come dimensione, posizione, ecc.) sono simili a delle variabili (x1, x2, ecc.) che vengono moltiplicate per certi valori chiamati pesi, il cui compito è di stabilire quanto contribuisce una specifica caratteristica alla determinazione del valore totale. Se un peso aumenta il contributo di quella caratteristica è maggiore; se diminuisce (o è negativo) il contributo è minore di conseguenza.
Pensiamoci: un appartamento piccolo e vecchio potrebbe valere molto di più di uno grande e nuovo se si trova in una posizione centrale, come vicino al Colosseo a Roma. Questo significa che la posizione geografica ha un peso maggiore rispetto alla superficie o all'anno di costruzione.
L'obiettivo dell'apprendimento automatico, in questo esempio, è proprio quello di capire come le caratteristiche di un immobile determinano il suo valore. Dal punto di vista pratico, questo significa determinare i valori di quei pesi (originariamente sconosciuti) per ottenere il valore stimato.
Possiamo assimilare il concetto a quello matematico di funzione (Y = F(X)). In una funzione classica si dispone dei valori di input (X), di una regola (la funzione F) che trasforma gli input negli output (Y). Nell'esempio riportato (ma in generale nel Machine Learning) disponiamo degli input (le caratteristiche degli immobili, gli X) e degli gli output (i valori degli immobili, gli Y). Il compito del Machine Learning è scoprire la funzione F che lega gli X agli Y, ovvero determinare i pesi.
Generalmente distinguiamo tre principali tipologie di apprendimento:
-
Apprendimento Supervisionato: questo è il tipo di apprendimento che abbiamo visto con l'esempio degli immobili. Si chiama "supervisionato" perché abbiamo a disposizione sia i dati di input (le caratteristiche) sia i dati di output (il valore corretto o l'etichetta). La macchina "impara" confrontando le sue previsioni con i risultati corretti che le vengono forniti. Oltre a stimare un valore numerico (come il prezzo di una casa usando la tecnica detta regressione lineare), l'apprendimento supervisionato può essere usato anche per la classificazione. Supponiamo di avere tante immagini di animali e di sapere per ciascuna di esse se rappresenta un cane, un gatto, ecc.. Le immagini sono gli input e le "etichette" (cane, gatto ecc.) sono gli output. Il sistema impara a classificare una nuova immagine individuando l'animale rappresentato.
-
Apprendimento Non Supervisionato: a differenza del precedente non disponiamo degli output o etichette. A cosa serve allora? Lo scopo è individuare modelli (pattern) o schemi nascosti all'interno dei dati. Si analizzano i dati per trovare caratteristiche comuni senza un supporto esterno. Un esempio molto comune è il clustering. Partendo da dati che sembrano casuali e privi di legami, il clustering li raggruppa in blocchi che condividono caratteristiche simili. Questo può essere usato, ad esempio, nella diagnostica medica per raggruppare immagini (come TAC o radiografie) che mostrano caratteristiche simili, magari per distinguere formazioni benigne da potenziali tumori.
-
Apprendimento con Rinforzo: questo tipo di apprendimento assomiglia molto al modo in cui impara un bambino o al funzionamento dei motori di gioco (ad esempio negli scacchi). Il sistema fa delle azioni (tipo una mossa nel gioco degli scacchi). A seconda del risultato di quell'azione riceve un premio (se l'azione è positiva e porta a un vantaggio) o una penalità in caso contrario. Imparando dalle conseguenze delle proprie azioni l'algoritmo si adatta per capire quali mosse o comportamenti sono più premianti. È un processo di prova ed errore guidato da un sistema che offre premi e punizioni, proprio come un bambino impara che toccare qualcosa di caldo fa male e quindi evita di farlo in futuro. Questo tipo di apprendimento è usato anche nella guida autonoma, dove il sistema impara quali azioni fare in diverse situazioni (trovare un ostacolo, condizioni meteo, ecc.).
Ma vediamo come l'algoritmo impara a determinare i pesi nel caso degli immobili, anche se il processo è generalizzabile.
Sono richieste una serie di fasi successive.
-
Preparazione dei dati: i dati disponibili (caratteristiche e valori reali degli immobili) vengono divisi in due gruppi: un gruppo per l'addestramento (training) e un gruppo per la validazione (validation) o test. È importante che i dati usati per l'addestramento e quelli per la validazione siano assolutamente differenti.
-
Il ciclo di apprendimento: l'algoritmo parte assegnando dei valori iniziali (spesso casuali) ai pesi. Poi, usando questi pesi e le caratteristiche dei dati di addestramento, calcola un valore stimato per ciascun immobile.
-
Calcolo dell'errore: il valore stimato viene poi confrontato con il valore reale (quello che sappiamo essere corretto). La differenza tra il valore stimato e quello reale è l'errore.
-
Aggiornamento dei pesi: in base all'errore calcolato l'algoritmo aggiorna i pesi. L'obiettivo è modificarli in modo da ridurre l'errore nella stima successiva.
-
Ripetizione: questo ciclo di calcolo-confronto-aggiornamento si ripete diverse volte finché l'errore non rientra in una determinata soglia di tolleranza.
Tuttavia non vogliamo che l'errore sia esattamente zero. Se l'algoritmo diventa troppo perfetto sui dati di addestramento si verifica un problema chiamato overfitting. Questo significa che la "funzione F" che l'algoritmo ha trovato è troppo specifica per quei particolari dati di addestramento e non funzionerà bene quando dovrà fare previsioni su dati nuovi mai visti in precedenza (ad esempio nuovi immobili). Per questo si accetta un piccolo errore e si fissa una soglia di tolleranza.
Una volta che l'algoritmo si è fermato (perché l'errore è sceso sotto la soglia impostata) si passa alla fase di validazione in cui si usano i dati di test (quelli che non sono stati usati per l'addestramento) per vedere come si comporta il modello. Questo aiuta a capire se il modello è davvero efficace anche su dati nuovi oppure se è necessario fare ulteriori miglioramenti.
È importante ricordare che dietro tutti questi algoritmi di Machine Learning non c'è magia. C'è molta matematica applicata. Algoritmi, ottimizzazioni, librerie di codice già pronte facilitano il lavoro ma alla base c'è sempre la matematica.
Una volta che il modello è stato costruito, addestrato e validato lo scopo finale è usarlo per fare previsioni o prendere decisioni su dati nuovi. Nell'esempio proposto è possibile inserire le caratteristiche di un nuovo immobile e il modello ci dirà qual è il suo valore stimato. Nel caso della classificazione, potremo fornire al sistema una nuova immagine di un animale e ottenere una sua identificazione.
In sintesi il Machine Learning permette ai computer di imparare direttamente dai dati, identificare modelli, prendere decisioni o fare previsioni con una minima (o addirittura nessuna) programmazione esplicita per ogni compito specifico. Ovviamente migliore è la qualità dei dati disponibili maggiore sarà l'accuratezza del modello costruito.