MACHINE LEARNING 101
1. Intelligenza artificiale e machine learning.
Definizioni, similitudini e differenze.
Comprendere il machine learning permette di avere una visione ragionata del mondo di oggi. Gli assistenti virtuali, le automobili a guida autonoma, i sistemi che suggeriscono i film sulle piattaforme digitali, gli algoritmi che decidono se lasciarvi accendere un mutuo con la vostra banca, le decisioni politiche basate sui dati ISTAT, e persino la vostra lista della spesa raccolta dalla carta fedeltà di un supermarket … Sono tutti esempi di applicazioni di machine learning. Con questo progetto spero di fornire una visione realistica del fenomeno, attraverso una trattazione il più possibile semplice nella forma ma rigorosa nei contenuti. Seguitemi in questo viaggio.
Prima di tutto, definiamo i termini che andremo a trattare e progressivamente costruiremo un glossario completo. Quindi:
- Intelligenza artificiale
- Machine learning
Intelligenza artificiale
Con il termine Intelligenza Artificiale (in inglese Artificial Intelligence o A.I.) si intende una proprietà, una abilità delle macchine, intese come entità sintetiche diverse dall’uomo, di risolvere problemi complessi comportandosi in modo similare all’uomo nel pensare, prendere decisioni, interagire con l’ambiente. Gli studi di intelligenza artificiale mirano a raggiungere un giorno quella che è chiamata intelligenza artificiale generale o artificial general intelligence o A.G.I.: la capacità di risolvere qualunque tipo di problema senza l’intervento umano. Al momento si è raggiunta la cosidetta N.A.I. Narrow (ristretta) Artificial Intelligence, ovvero la capacità di risolvere problemi specifici in un ambito limitato.
Questa intelligenza, la capacità di risolvere i problemi, si esprime attraverso diverse metodologie tra cui anche il machine learning, che è quindi solo uno degli ambiti relativi all’intelligenza artificiale. gli altri sono:
- algoritmi genetici
- intelligenza di sciame
- elaborazione del linguaggio naturale
- logica e sistemi basati su regole
L’elenco non è esaustivo perchè con l’evoluzione del sapere umano emergeranno sicuramente nuovi approcci a questa tematica sicuramente affascinante. noi qui ci limiteremo allo studio del machine learning.
Machine Learning
Il Machine Learning o ML, traducibile in italiano come apprendimento automatico, è quindi una branca dello studio intelligenza artificiale che mira a raggiungere questa proprietà nelle macchine, imitando la capacità umana di imparare a risolvere i problemi attraverso l’esperienza.
Arthur Lee Samuel, un pioniere degli studi di intelligenza artificiale, inventò il termine Machine Learning nel 1958, dando la seguente definizione:
“machine learning is a field of study that gives computers the ability to learn without being explicitly programmed”
“Il Machine learning è il campo di studi che mira a dare ai computer la capacità di imparare senza essere stati esplicitamente programmati”
Egli credeva che il modo migliore per insegnare ad una macchina ad apprendere (da cui il concetto di apprendimento automatico) fosse quello di farla “giocare”, ovvero di interagire con un ambiente basato su regole, sviluppando così strategie in grado di risolvere anche problemi in modo generalizzato. Per questo egli costruì il suo primo modello in grado di imparare autonomamente elaborando un programma in grado di giocare a dama contro se stesso e contro giocatori umani. Il programma nel giro di diversi tentativi raggiunse una abilità notevole nel gioco tanto da sconfiggere agevolmente anche giocatori di livello medio-alto. Il tutto con limitata memoria e su un IBM 701 (che non è certo una macchina paragonabile anche solo ad un moderno smartphone, tanto per rendere l’idea).
Nel 1998, Tom Mitchell, un professore universitario della Carnegie Mellon University, un’eccellenza nel campo della Computer Science, diede una nuova definizione di machine learning, che è quella attualmente più usata:
“machine learning is the study of computer algorithms that allow computer programs to automatically improve through experience”
“Il machine learning è lo studio degli algoritmi che permettono ai computer di migliorare le loro prestazioni con l’esperienza”
Questa definizione è la premessa per descrivere i problemi di machine learning in termini analitici secondo l’idea di Mitchell, secondo cui:
“Un computer impara dall’esperienza E, riferita ad un compito T e misurata mediante un qualche metrica P, se la sua performance nel compiere T, misurata mediante P, migliora con l’esperienza E”
Detto in altri termini, un’esperienza E è utile e dev’essere considerata per la risoluzione di un problema T mediante un algortimo di apprendimento automatico solamente se migliora la prestazione P
In questo modo, diventa facile classificare ogni problema di appprendimento automatico, identificando:
- esperienza
- compito
- misurazione della prestazione
Esperienza
Cos’è l’esperienza? Riporto la definizione del vocabolario Treccani:
“Conoscenza diretta, personalmente acquisita con l’osservazione, l’uso o la pratica, di una determinata sfera della realtà”
In termini astratti, si tratta di acquisire i fatti, le osservazioni neutre, di un dato fenomeno e di ricavarne delle informazioni utili. In termini di machine learning quest’esperienza può essere in forma di:
- una collezione di dati strutturati relativi alle osservazioni di un dato fenomeno; si parla in questo caso di machine learning classico
- una sequenza di interazioni tra il cosidetto agente intelligente (l’automa, la macchina, l’algoritmo di machine learning, etc.) e l’ambiente (il contesto all’interno del quale si svolge il problema); si parla in questo caso di apprendimento per rafforzamento o reinforcement learning.
Compito
Un compito è la risoluzione di un dato problema. Classificare oggetti, fare previsioni sul valore di un’azione, suggerire un film, trovare anomalie o tentativi di frode … sono tutti compiti e per ciascuno di essi si possono applicare diversi metodi e modelli di ML. Molte volte nei casi reali, si applicano contemporaneamente metodi diversi, al fine di risolvere il problema dato con la prestazione maggiore (ricordiamoci sempre la definizione di Mitchell)
Prestazione
La prestazione è un modo per misurare la “bontà” di un modello di machine learning, ovvero la sua capacità di risolvere un dato problema. Per fare questo in modo analitico è necessario applicare una qualche metrica, una misura oggettiva che permetta di confrontare l’obiettivo del problema con il risultato ottenuto dal metodo di ML.
Apprendimento automatico come dialogo tra un maestro e un allievo
L’apprendimento automatico si basa sul concetto di un’ideale interazione tra un maestro e un allievo. Il maestro è colui o l’entità che osservando i fenomeni reali, colleziona delle osservazioni, che costituiscono l’esperienza che viene passata all’allievo, sotto forma di dati o di azioni. L’allievo, forte dell’esperienza, cerca di risolvere il problema dato applicando il paradigma di Mitchell e tentando di migliorare la sua prestazione all’aumentare dell’esperienza. I vari metodi si distinguono in base alla natura di questa interazione tra il maestro e l’allievo.
Apprendimento supervisionato
Nell’appredimento supervisionato o supervised learning, il maestro fornisce esperienza all’allievo analizzando la realtà e fornendo una collezione di dati detti osservazioni. L’allievo, attraverso la conoscenza che ricava dai dati, tenta di indovinare la relazione causale tra le caratteristiche (features) delle osservazioni date X e i risultati relativi all’obiettivo o risultato (target) da raggiungere, indicato con Y. In termini matematici, l’allievo ipotizza che il fenomeno osservato sia regolato da una funzione:
Y=f(X)+ϵ
dove ϵ è una componente casuale esterna al modello, che però si ipotizza a valore medio nullo e indipendente da X. Il problema qui è che la reale funzione f è incognita, quindi il meglio che possa fare l’allievo è formulare una ipotesi h(X) basata sui dati di addestramento (training set), quindi:
Ypred=h(X)
e testare la sua previsione in funzione sui dati forniti dal maestro. Il processo è interattivo e a un certo punto converge su una funzione h(X) il cui effetto Ypred differisce dalla reale Y di “poco” in termini di metrica di prestazione. Si tratta di un processo di ottimizzazione e a seconda del problema si possono applicare tecniche diverse. Qui ci limitiamo a dire che una volta ottenuta una buona h(X), occorre ancora mettere alla prova il modello con dati nuovi, tratti però dallo stesso fenomeno. Se la prestazione è accettabile il procedimento è finito. In caso contrario, occorre l’intervento umano nel valutare i dati di ingresso, fornire nuove esperienze, oppure elaborare modelli più complessi.
Nell’apprendimento supervisionato, i problemi si possono raggruppare in due categorie distinte:
- regressione: quando il risultato cercato è nella forma di valori numerici (il prezzo di una casa, la quotazione di un’azione, quante vendite di un certo prodotto, etc…)
- classificazione: quando il risultato è la selezione di una classe di appartenenza per le osservazioni dati (es. categorie di consumatori, sani o malati, cani o gatti come nell’immagine sopra, etc…); la classificazione può prevedere due classi (classificazione binaria) o anche più di due (classificazione multiclasse).
Apprendimento non supervisionato
Il passo successivo consiste nel considerare il caso in cui il maestro non fornisce feedback sul risultato delle osservazioni. La macchina, in qualità di allievo, può lavorare solo sulle osservazioni e le caratteristiche che riesce a dedurre. In questo caso l’algoritmo cerca di individuare delle similitudini o degli andamenti ripetitivi nel flusso di dati. Questo procedimento prende il nome di riconoscimento di pattern o pattern recognition. I problemi trattati con l’apprendimento non supervisionato sono principalmente:
- clustering: si tratta di dividere i dati raggruppandoli per classi o clusters il più possibile omogenei, riconoscendo nei dati similitudini, andamenti ricorrenti, affinità. Un tipico esempio è la classificazione di oggetti in base a colore, dimensione, grandezza, materiale, etc… Oppure ad esempio il raggruppamento in tipologie dei clienti in base alla qualità e alla propensione al consumo (detta comunemente profilazione).
- rilevamento di anomalie: la macchina va alla ricerca delle anomalie rispetto ai pattern riconosciuti nei dati. In questo modo possiamo identificare i problemi e reagire per tempo. Tipiche applicazioni i sistemi antispam della posta elettronica, i sistemi antifrode nelle transazioni bancarie, il monitoraggio di apparati e impianti per individuare o prevenire eventuali guasti, etc…
- associazione: analizzando i dati, l’allievo riconosce se ci sono dei rapporti di causalità tra essi. Un esempio classico in letteratura: se un uomo al supermercato compra una confezione di birre c’è un’alta probabilità che compri anche dei pannolini. Sembra strano ma è stato provato che è così. Non sempre i pattern sono facilmente riconoscibili e riconducibili alla logica. In questo il ML può essere un valido strumento di supporto.
Fin qui tutti i metodi visti si basano sulla supervisione umana di un esperto di machine learning e scienza dei dati che:
- sceglie il metodo di risoluzione dei problemi in base alla sua personale esperienza e alla conoscenza delle pratiche più adottate
- adatta e modifica i dati grezzi per rendere efficaci i modelli di apprendimento
- simula, confronta e fa una valutazione sui risultati dei differenti metodi
- trae conclusioni sui risultati e li trasforma in azioni, scelte, decisioni utili
In tutti i casi, chi comanda è comunque sempre l’essere umano. L’algoritmo automatico nel machine lerning classico è semplicemente di supporto. La storia cambia radicalmente se si parla di apprendimento per rafforzamento.
Apprendimento per rafforzamento
Immaginiamo uno scenario in cui siamo catapultati in un territorio inesplorato e ostile, con l’obiettivo di sopravvivere e di spostarci dal punto di atterraggio A al punto di arrivo B. Non ci sono maestri ad indicarci la via, per cui come allievi, possiamo solo imparare ad interagire con l’ambiente in base all’esperienza che ci viene comunicata attraverso le nostre azioni. Quindi, compiano un’azione e verifichiamo cosa cambia nell’ambiente; se ci stiamo avvicinando all’obiettivo ne abbiamo ottenuto una ricompensa (reward); se al contrario ci allontaniamo otteniamo una penalità (penalty) e dobbiamo pensare ad una azione diversa. Dopo molti tentativi o epoche (epochs) riusciamo finalmente a raggiungere il punto B, dopo aver messo a punto una sequenza valida di azioni.
Il meccanismo descritto, in cui noi svolgiamo il ruolo dell’agente intelligente è alla base dell’apprendimento con rafforzamento, in cui le azioni che portano risultati positivi vengono rafforzate (hanno più probabilità di essere ripetute successivamente), mentre quelle che provocano un danno vengono indebolite (hanno meno probabilità di essere ripetute).
Quindi, l’intero processo è:
- l’agente fa una mossa
- l’ambiente reagisce alla mossa modificando il suo stato interno
- l’agente legge il nuovo stato dell’ambiente e ne riceve un feedback
- l’agente calcola la penalità o la ricompensa legata allo stato
- l’agente modifica la sequenza delle azioni in base a delle regole
- l’agente ripete i passi dal punto 1 finchè non raggiunge l’obiettivo.
In questo modo, come si è detto, si rafforzano le azioni utili e si penalizzano quelle sbagliate.
Quello che sorprende in questo approccio metodologico è che l’agente raggiunge l’obiettivo per tentativi e in modo autonomo, senza alcun intervento correttivo esterno. Il più delle volte le soluzioni trovate sono stupefacenti e creative, e pongono un serio problema di interpretabilità.
Conclusioni
In questo breve articolo abbiamo delineato la differenza tra i termini di Intelligenza Artificiale e Machine Learning, evidenziano come l’apprendimento automatico si divida in famiglie di metodi di risoluzione, ciascuna con caratteristiche proprie che le rendono adatte a risolvere classi diverse di problemi.
Con questo abbiamo fatto un primo, piccolo passo verso la comprensione dell’apprendimento automatico e di come questo sia utilizzato nella risoluzione di problemi specifici.
Lao Zi, un antico filosofo cinese, disse:
“A journey of a thousand miles starts with a single step”
“Un viaggio di mille miglia inizia con un singolo passo”
Questo voleva essere quel singolo passo
Prossimamente approfondiremo il problema di creare un modello per il machine learning sulla base dei dati e dei problemi da trattare, effettuandone anche una prima analisi.