< Home
Stampa

Machine learning

Sommario

Premessa

Come visto nella lezione precedente il Machine Learning è una branca della IA che consente di creare modelli computazionali in grado di eseguire in automatico classificazioni o previsioni di dati a partire da un certo input. Classificazione o previsione sono due modi diversi di utilizzare lo stesso modello: entrambi si basano sul fatto che il modello è in grado di dare una rappresentazione generale dei dati che riceve in input e poi è in grado in base a questo di indicare l’etichetta associata a questi dati (classificazione), o produrre dati associati ai dati di input (regressione).

I modelli sono creati tramite apprendimento. Nella sua forma più comune, l’apprendimento supervisionato, esso consiste nel preparare un algoritmo che riceve dei set di dati di input ed una etichetta associata, tutti nella stessa forma (ad esempio possono essere vettori o numeri reali, oppure anche immagini, video, testi, ecc.). L’algoritmo internamente inserisce tutti gli esempi nel suo modello computazionale e cerca di creare una correlazione tra input ed output. Questa operazione viene ripetuta di norma molte volte, anche ripetendo gli stessi esempi, fino a quando il modello raggiunge una capacità di adattamento tale ai dati da poter essere in grado finalmente di ricevere dati mai visti, e produrre un output coerente col modello.

Facciamo un esempio: poniamo di voler creare un classificatore di recensioni di prodotti di un ecommerce. E’ un problema ad alta estensionalità, perché le recensioni sono scritte in linguaggio naturale.

Al sistema vogliamo passare un CSV in questa forma (i dati in un sistema reale sono molti di più nell’ordine delle migliaia o anche centinaia di migliaia di recensioni):

Discreto. Funziona bene;3 
Molto soddisfatto. Bel prodotto;4 
Perfetto. Consigliatissimo;5 
tutto ok. Discreto;3 
Non male. Funziona bene;3 
Non mi piace. Spedizione nei tempi;2 
Consigliato. Perfetto;5
Funziona bene. Non male;3 
Bellissimo. Perfetto;5
Non male dai. Pensavo peggio;3

Dove la prima colonna rappresenta il testo, nella seconda la classificazione numerica, da 1 a 5.

L’obiettivo è quello di fare in modo di addestrare il modello e poi di dargli un input non classificato:

Consigliato. Funziona in modo discreto.

Il sistema deve capire da solo che punteggio associare a questa recensione.

Qui possiamo capire la differenza tra un essere umano ed una macchina. Una persona reale è in grado infatti di capire che valore dare alla parola “consigliato” ed alla frase “funziona in modo discreto”, in particolare i due aggettivi “consigliato” e “discreto” consentono di dare un punteggio di 3 o 4, in base all’accezione che diamo ai due aggettivi “consigliato” o “discreto”.

Data science

La macchina non ha però questo contesto di esperienza: va addrestrata a ricevere un flusso di parole che hanno potenziali contraddizioni ed ambiguità tra loro, che non sono utili prese da sole (“in modo”), che possono avere significati molto diversi (“funziona” non ha senso compiuto da sola), e così via.

Più in generale, trovare un ordine nella complessità, cioé trovare strutture di significato e relazione all’interno di una mole di dati grezzi, che essi siano parole, dati numerici, dati provenienti da diverse fonti e forme, è, come abbiamo visto in questa lezione, uno dei problemi fondamentali dell’informatica. Anche il linguaggio naturale va considerato, dal punto di vista computazionale, un oggetto di studio della data science.

Esiste una disciplina di ricerca applicata, la Data Science, che combina informatica, matematica statistica e competenza nella realtà di riferimento. Essa ha lo scopo di estrarre informazioni utili e conoscenza ad alto livello da dati grezzi ad alta estensionalità, con lo scopo di poter fare classificazioni e previsioni generali.

In essa:

  • la matematica serve per costruire modelli statistici e stocastici in grado di fornire strumenti predittivi e comprendere la distribuzione dei dati e verificare che i risultati siano significativi. Pensiamo ai dati relativi a economia, trading di azioni, fonti energetiche, informazioni climatiche, dati industriali e commerciali. La matematica offre strumenti per creare astrazione dai dati grezzi e fornire correlazioni non immediatamente visibili.
  • la conoscenza del dominio permette di definire un contesto preciso alla realtà di riferimento, cioè scegliere quali dati grezzi possono essere significativi e comprendere gli obiettivi di una analisi di data science come ricaduta nel mondo reale. Ad esempio i dati finanziari possono essere analizzati per capire se siamo in una bolla finanziaria oppure no.
  • l’informatica fornisce automazione e potenza di calcolo, oltre a strutture dati efficaci per memorizzare i dati in modo efficiente.

Un Data Scientist è una figura professionale ibrida: è un esperto di programmazione, di matematica e di conoscenza di dominio, pur non essendo propriamente uno specialista in nessuna delle tre aree.

Un classico progetto di Data Science prevede queste macrofasi:

  1. definizione del dominio (cioè della realtà di riferimento).
  2. Raccolta dei dati grezzi nel dominio.
  3. Pulizia dei dati e pre-analisi: i dati spesso vanno “sgrezzati”, accorpati o divisi, ed individuato il modello di riferimento da cui partire.
  4. Modellazione: qui avviene la fase computazionale da cui si estrae informazione dati dati.
  5. Utilizzo: comunicazione dei risultati del modello creato.

In questo senso, per il punto 4, viene in aiuto proprio il machine learning. La Data Science è anzi il più importante ambito di applicazione dell’Intelligenza Artificiale, perché permette l’analisi dati di problemi altrimenti impossibili da analizzare con altri strumenti automatici.

Alcuni esempi di utilizzo della Data Science insieme al machine learning:

AreaData Science/Machine Learning
Produzione di contenuti per il pubblico (web, ecommerce, piattaforme di streaming)Sistemi di raccomandazione, analisi recensioni, miglioramento prodotto
SaluteDiagnosi a partire da immagini, sintomi, radiografie, TAC, ecc. per individuare malattie, fare prevenzione, studiare cure
FinanzaAnalisi dati di borsa, gestione andamento di mercato, analisi frodi ed evasione
ITAnalisi del traffico di rete, adeguamento delle risorse rispetto alla domanda, sviluppo di infrastrutture adeguate
IndustriaAnalisi qualità e quantità produzione a fini strategici
MarketingProfilazione dei clienti, segmentazione del pubblico, individuazione della forma dei mercati, personalizzazione della pubblicità

I sistemi di Machine Learning si basano sulla costruzione di modelli computazionali basati sull’addestramento. che si basa su algoritmi di inferenza statistica, e funzioni matematiche/logiche che devono “ridurre la dimensionalità” di un vettore di parole o datiin un codice unico che sintetizza l’intero flusso di input in una informazione che permette di classificare o prevedere un risultato.

Per capire questo concetto in modo pratico vedremo in questa lezione un paio di esempi di modelli di Machine Learning “storici” che però implementano pienamente questa impostazione. In una successiva lezione vedremo poi i modelli Bayesiani, che rappresentano un modello più avanzato per estrarre informazione utile anche da realtà anche di media complessità. Infine vedremo il Deep Learning, ovvero il Machine Learning che utilizza modelli basati su reti neurali, che rappresenta lo stato dell’arte di questa tecnologia.

Alcuni esempi di machine learning

Regressione lineare

Prendiamo un insieme di coppie di valori, rappresentabili su un piano cartesiano, come il numero di ore studiate da uno studente per prendere un voto ad una interrogazione:

Studente,Ore_di_Studio,Voto
1,1.2,3.2
2,1.5,3.2
3,2.0,3.9
4,2.5,4.7
5,2.8,4.2
6,3.2,4.5
7,3.5,5.6
8,4.0,5.6
9,4.5,5.5
10,5.0,6.3
11,5.2,6.1
12,5.8,6.5
13,6.2,7.2
14,6.8,6.7
15,7.2,7.1
16,7.8,8.1
17,8.2,8.3
18,8.5,9.1
19,9.0,9.0
20,9.5,9.2

Come possiamo vedere le ore di studio sono il dato di input, e il voto conseguito è il dato verificato. Andiamo a rappresentarli su un diagramma:

Vogliamo creare un modello che dato un certo numero di ore di studio, ci stima che voto potremmo prendere. In pratica occorre individuare una retta y = mx + q che ha una distanza media minima da ciascun punto rappresentato. Ovvero vogliamo trovare questa:

Per calcolarla si usa il metodo dei minimi quadrati, che calcola la pendenza della retta a partire dalla dagli scostamenti (scarti) medi, con questa formula:

m=n∑xiyi−(∑xi)(∑yi)n∑xi2−(∑xi)2m=\frac{n\sum{x_iy_i}-(\sum{x_i})(\sum{y_i})}{n\sum{x^2_i}-(\sum{x_i})^2}
q=∑yin−b∑xinq = \frac{\sum{y_i}}{n}-b\frac{\sum{x_i}}{n}

In pratica, con il dataset dei valori che conosciamo, calcoliamo la pendenza media (m) e lo scostamento (q) della retta che ha la distanza media minima da ciascun punto. Si usa il quadrato degli scostamenti perché essi possono essere negativi o positivi (al quadrato si misura il valore assoluto).

Un modello computazionale viene addestrato passando i valori conosciuti. Ad ogni valore aggiunto vengono ricalcolati m e q che stabiliscono la relazione media tra ore di studio e voto conseguito.
Al termine dell’addestramento, possiamo:

  • stimare tramite regressione il voto in base ad un certo input (numero di ore);
  • classificare il numero di ore in un insieme: ad esempio dire se il numero di ore studiate è sufficiente per prendere 6.

La regressione è uno strumento potente per analisi e stime di dati legati a coppie, non solo i voti ma i dati economici, di borsa, climatici, sanitari, ecc.

Rientra perfettamente nel contesto dell’intelligenza artificiale, perché si tratta della costruzione di un modello computazionale che in base ad una serie di dati di addestramento, è in grado di fare classificazioni o previsioni.

KNN

Ma cosa succede quando anziché avere un dato singolo, si ha una tupla (elenco di valori) e si vuole fare comunque classificazione/predizione?

Un esempio di applicazione è la capacità di predire se uno studente sarà promosso in base ai voti che ha conseguito nelle singole materie. In addestramento il sistema predisporrà un modello sulla base degli esempi di un certo numero di studenti di cui si conosce già l’esito:

italiano,storia,matematica,inglese,informatica,scienze,fisica,esito
5,8,5,8,5,7,4,0 
6,6,5,5,4,5,7,0 
8,6,6,5,4,7,6,1 
8,4,8,6,4,5,7,1 
8,8,7,8,5,6,7,1 
8,6,5,4,5,6,5,0 
7,5,6,8,4,8,7,1 
6,8,8,5,4,4,8,1 
5,7,6,7,7,6,7,1 
5,4,4,8,8,5,6,0

Dove l’esito è 0 (bocciato) o 1 (promosso). Evidentemente in questo caso non si può fare una regressione.

Il modello è progettato per rispondere a questa domanda: “che esito ho con questi voti [5,6,6,4,7,8,6]?”

In questo caso addestriamo un modello di tipo KNN (“K-Nearest Neighbor”). Questo modello prende l’intero dataset a disposizione, e li ordina in base alla distanza euclidea dallo studente che sta prendendo in esame. Ovvero applica questa funzione

distanzastudi=(italianostudi−italianostudattuale)2+(matematicastudi−matematicastudattuale)2+...distanza_{stud_i} = \sqrt{(italiano_{stud_i}-italiano_{stud_{attuale}})^2+(matematica_{stud_i}-matematica_{stud_{attuale}})^2+{…}}

Ottenendo quindi:

italiano,storia,matematica,inglese,informatica,scienze,fisica,esito,distanza
5,7,6,7,7,6,7,1,3.87
8,6,5,4,5,6,5,0,4.36
8,6,6,5,4,7,6,1,4.47
6,6,5,5,4,5,7,0,4.69
5,8,5,8,5,7,4,0,5.48
7,5,6,8,4,8,7,1,5.57
5,4,4,8,8,5,6,0,5.83
8,8,7,8,5,6,7,1,6.24
6,8,8,5,4,4,8,1,6.24
8,4,8,6,4,5,7,1,6.32

In base alla distanza A questo punto si sceglie K dispari e si valuta i primi K vicini, come in questo grafico:

Siccome la maggioranza è stata bocciata, è più probabile che questo studente sarà bocciato.

Naturalmente questo modello funziona meglio con un dataset particolarmente numeroso, così da poter scegliere un valore K più grande. Ad esempio con K=7 e 50 studenti: con un campione più ampio lo studente verrebbe probabilmente promosso.

Come si può vedere questo modello è semplice da implementare, e la numerosità dei casi di input aiuta a fornire predizioni più precise, perché diminuisce la distanza media dai K studenti più vicini. Non tiene però conto di alcuni scenari reali, ovvero ad esempio che probabilmente alcune materie contano più di altre nella valutazione finale.

Considerazioni su machine learning

Nelle prossime lezioni vedremo altri modelli di machine learning, ma prima di esaminarli, ci sono alcuni aspetti generali del machine learning che vanno presi in considerazione.

I sistemi di apprendimento automatico, quando usano esempi presi dal mondo reale, non hanno mai una efficacia al 100%, anzi per essere precisi, non danno mai una “certezza epistemica”, ovvero un sistema automatico risponde ad input di una trasformazione matematica e come tale rappresenta un risultato matematico.

Si possono ottenere risultati molto buoni, ma è impossibile raggiungere la certezza che il sistema di machine learning ci dia le risposte corrette. Non è un problema di potenza di calcolo, di dimensione del modello o di bontà dell’algoritmo. Il problema è di dimostrabilità della soluzione senza verifica nel mondo reale, ovvero avere una certezza epistemica.

Questo per diverse ragioni:

  • i modelli computazionali sono sempre modelli statistici. Memorizzano esempi e sulla base di questi configurano i propri algoritmi di funzionamento sulla base di essi. Il set di dati (dataset) potrebbe essere scelto male o essere insufficiente e quindi il modello potrebbe quindi essere inefficace per dati che non ha mai visto e che non rientrano negli esempi visti. Ad esempio con KNN per il caso degli studenti promossi e bocciati potremmo avere esempi che non spiegano altre promozioni e bocciature. Questo fenomeno si chiama underfitting.
  • il modo in cui è organizzato il modello parte da un insieme di considerazioni preliminari sui dati: ad esempio nella regressione si suppone che i dati siano rappresentabili come gestiti da una retta. Ma siamo sicuri che sia così? Molti studenti potrebbero obiettare per esempio che per ottenere un voto molto alto bisogna studiare in proporzione molto di più, e quindi probabilmente ha più senso un modello a curva. Analogamente, KNN presuppone che tutti i voti abbiano pari peso, ma sappiamo bene che non è così nella realtà, e quindi il calcolo della funzione di distanza dovrebbe essere in qualche modo pesato.
    Questo tipo di problematica si chiama bias, ovvero “pregiudizio”, da parte di chi addestra il modello. Il bias può dipendere sia dalla scelta del modello, sia dalla scelta degli esempi, che potrebbero non rappresentare tutta la realtà di riferimento o peggio l’estrazione di dati non realmente significativi. In questo senso è noto il clamoroso errore di classificazione di specie di Google che, addestrato da uomini bianchi, scambiò delle persone di colore per delle scimmie! Il problema sta non tanto nei dati ma proprio nell’algoritmo di addestramento, inefficace a risolvere quel tipo di problema.
  • va poi considerato il problema dell’overfitting: il modello si adatta molto bene ai dati di addestramento, ma si adatta male a dati che non ha mai visto. E’ il caso già noto del tacchino induttivista, che a partire un sottoinsieme di premesse arriva ad una conclusione logica, ma sbagliata, perché non ha avuto abbastanza esempi di da analizzare.
  • nella classificazione si può incorrere nel problema dei falsi positivi o i falsi negativi, dovuto al fatto che i dati possono anche essere ben scelti, ma essere strutturati in modo inefficace. Ad esempio si pensi ad un sistema che valuta da una TAC se una persona ha un tumore: il falso positivo può condurre ad un approfondimento per verificare quel caso specifico, ma un falso negativo potrebbe far scartare un potenziale tumore.
  • infine, nella predizione, si può incorrere nel problema dell’allucinazione: il modello, specie se molto complesso, memorizza internamente correlazioni perfettamente logiche, ma del tutto inesistenti nel contesto della realtà di riferimento, ad esempio producendo testo perfettamente comprensibile e contestualizzato nel modo corretto, ma privo di qualsiasi verificabilità epistemica. In altri termini, l’intelligenza artificiale, “inventa” modelli che non esistono nella realtà, come chi assume LSD e vede draghi e astronavi dove non esistono.

Questi problemi sono ad oggi aperti e non risolti, ed è uno dei settori di ricerca più importanti del machine learning.