Skip to content →

Che cos’è il Machine Learning

Ecco di cosa si parla in questo post:

– Innanzitutto daremo una definizione di machine learning per capire come esso deve essere inquadrato
– Evidenzieremo le differenze tra un programma tradizionale e un algoritmo di machine learning e capiremo la diversa logica sottostante.
– Dopo aver visto per quali tipi di attività e in quali ambiti il machine learning viene utilizzato, ci addentreremo nei modi in cui le macchine “imparano” e vedremo le quattro metodologie che attualmente vengono utilizzate.
– Per ciascuna metodologia, cercheremo di capire la logica di funzionamento e quando è più conveniente utilizzarla.

che cosa è il machine learning

[Aggiornamento 12/04/2017]: Nella sezione “Come imparano le macchine” è stata aggiunta una introduzione al processo di apprendimento per spiegare che cosa sono gli algoritmi di apprendimento (grazie a Piero Savastano per il suggerimento)

Il termine Machine Learning, assieme all’Intelligenza Artificiale (ho scritto una introduzione), è ormai entrato nella bocca di tutti ma, come spesso accade quando un termine diventa di uso comune, questo a volte è usato a sproposito: a volte presentato come una scatola nera che magicamente rende i computer intelligenti; altre volte come uno dei tanti linguaggi di programmazione; altre volte ancora come un settore dell’Informatica.

L’intelligenza artificiale ed il machine learning sono destinati a diventare il nuovo settore dalle uova d’oro. Diverse sono le stime fatte sul potenziale valore del mercato. Come si nota dalla tabella, le proiezioni si differenziano molto, soprattutto per il fatto che cambia il perimetro di analisi. E’, tuttavia, chiaro che l’Intelligenza Artificiale nei prossimi anni conoscerà un grande sviluppo.

FonteDefinizioneOrrizzonte temporaleValore di Mercato previsto (Miliardi USD)CAGR (Compound annual growth rate)
Bank or America Merrill LynchSistemi basati sull'intelligenza arificiale202070N/A
BCC ResearchSmart Machines (Assistenti virtuali, agenti intelligenti, robot autonomi, neural computer, ecc.)202441,22+19,7%
GII Research202216,02+62,9%
Tractica ReseacrhCognitive Computing, deep learning, machine learning, NPL, image e speech recognition202411,01+49,14%

Come sempre accade, questo porterà ad un affollamento di aziende che ofriranno “soluzioni di machine learning” o “intelligenze artificiali”. Per questo, sapere cosa si intende per machine learning  è essenziale per poter valutare la competenza di chi busserà alla porta con mirabolanti promesse.

In questo post non mi addentrerò in modelli matematici e tecnicismi. Mi limiterò a dare un quadro generale al grande mondo del machine learning con lo scopo di capire che cosa è, a cosa serve e cosa viene fatto.

Machine learning: definizione

Il termine machine learning (ML), letteralmente “apprendimento macchina”, reso in italiano come apprendimento automaticoindica un ambito di ricerca all’interno dell’Intelligenza Artificiale volto a realizzare sistemi in grado di imparare autonomamente senza la necessità di essere specificatamente programmati  per svolgere tale compito.

Dunque il machine learning è un ambito dell’intelligenza artificiale ma se tutto il machine learning rientra nell’IA, non è vero che tutta l’Intelligenza Artificiale è machine learning. ML si differenzia dalla programmazione di applicazioni perché non dice al computer di eseguire azioni, ma di apprendere conoscenza grazie alla quale si eseguiranno azioni.

Machine Learning e programmi tradizionali: una distinzione

I programmi tradizionali per computer si basano su una logica azione-reazione: ogni volta che noi clicchiamo un punto dello schermo con il mouse, questo genera un comando che farà rispondere il computer in un certo modo predeterminato da chi ha sviluppato il programma (ad esempio l’apertura di un menu, di un documento, di una cartella, ecc.). Affinché il computer risponda, quindi, è necessario che chi ha realizzato il programma abbia previsto la reazione che deve seguire alla nostra azione. Qualora venga eseguita un’azione non prevista, il computer darà un errore o un avviso.

In un’applicazione come Office o in un sistema gestionale per la contabilità, le operazioni che possiamo fare sui dati sono preimpostate. L’elaborazione viene automatizzata ma sta a noi, sulla base della nostra conoscenza, decidere come, ad esempio, associare i campi in una tabella pivot, quali informazioni copiare, quali celle excel sommare. Il computer si limiterà ad eseguire le operazioni che noi gli diciamo di fare, senza entrare nel merito della correttezza “metodologica” della nostra elaborazione. Se diciamo al computer di sommare pere con mele lui le sommerà, senza considerare che sono oggetti diversi.

I programmi di machine learning, detti algoritmi, invece non si basano su questa relazione azione-reazione. Gli algoritmi non dicono al programma “se ha quattro lati uguali, allora è un quadrato”. Attraverso i dati, gli algoritmi dicono al computer che esiste un qualcosa e che questo qualcosa ha quattro lati. Compito della macchina è trovare un modello abbastanza generale per poter descrivere le figure in modo tale da poter stabilire, in presenza di nuovi esempi che non ha mai visto, se si tratta di un quadrato, un rettangolo o un trapezio, una casa o altro.

Il computer, quindi, non si limiterà ad eseguire una operazione (inserisci questo nella categoria “quadrato”), ma cercherà lui stesso di capire perché quello che sta “vedendo” è un quadrato e non un rettangolo. Allo stesso modo, distinguerà le mele dalle pere e non le sommerà mai tra di loro perché avrà imparato che sono frutti diversi.

La differenza quindi tra programmazione tradizionale e apprendimento automatico appare già evidente:

  • nella programmazione tradizionale, tutta la conoscenza sul mondo è codificata all’interno del programma. Quindi un programma per il riconoscimento delle forme geometriche dovrà specificare tutti i casi. Questo semplifica sicuramente il processo di elaborazione, ma nel caso in cui una regola non sia stata descritta, il computer non riuscirà a svolgere il compito.
  • nell’apprendimento automatico (machine learning), al contrario, alla macchina si passano esempi e, da questi esempi, la macchina costruisce le regole che descrivono gli esempi e capirà se un da sola se un nuovo caso risponde o meno alla regola che  ha ricavato.

Per cosa viene utilizzato il Machine Learning

Il machine learning è utilizzato per molteplici scopi in cui è richiesto alla macchina di prendere delle decisioni sui dati.

In marketing, ad esempio, è utilizzato per la classificazione del target (ovvero di clienti) potenziale o attuale; in medicina si applica alla diagnosi di malattie o patologie; in biologia per l’analisi dei genomi; nei sistemi di posta elettronica per l’individuazione di messaggi di spam; in sicurezza per il riconoscimento facciale, per individuare potenziali frodi, nei sistemi anti-terrorismo.

Gli ambiti, come si vede, possono essere molteplici e i settori molto diversi. Solitamente, comunque, viene utilizzato quando vi sono quantità di dati tali che l’analisi manuale risulterebbe difficile e costosa in termini di tempo e risorse.

Il machine learning è impiegato principalmente per la risoluzione di tre tipologie di problemi:

  • classificazione, quando è necessario decidere a quale categoria appartiene un determinato dato. L’esempio precedente, il determinare a quale categoria appartiene la figura con quattro lati, è un tipico esempio di classificazione.
  • raggruppamento (clustering), quando si vuole raggruppare i dati che presentano caratteristiche simili. Sempre nell’esempio delle figure, un sistema raggrupperebbe tutte le immagini con 4 lati e i cui angoli sono a 90 gradi, tutte le figure con quattro lati in cui solo due sono paralleli, ecc. In marketing, ad esempio, il raggruppamento viene utilizzato per l’individuazione di clienti e mercati potenziali.
  • regressione, cioè prevedere il valore futuro di un dato avendo noto il suo valore attuale. Un esempio è la previsione della quotazione delle valute o delle azioni di una società. Nel marketing viene utilizzato per prevedere il tasso di risposta di una campagna sulla base di un dato profilo di clienti; nell’ambito commerciale per stimare come varia il fatturato dell’azienda al mutare della strategia.

Come “imparano” le macchine ?

Il modo più semplice per capire come le macchine imparano è pensare “l’apprendimento” (learning) per quello che è: imparare. Nel corso della vita, come esseri umani, impariamo dal mondo che ci circonda: leggendo libri, osservando cosa fanno gli altri, seguendo le lezioni a scuola, ecc. Da queste attività estraiamo informazioni che poi utilizzeremo nella nostra vita. Quello che facciamo è ricavare delle regole generali (modelli) dalla nostra interazione con il mondo esterno. Per questo motivo, l’apprendimento è un processo iterativo, che si ripete e migliora la nostra conoscenza all’aumentare delle informazioni che raccogliamo. Più facciamo esperienza e più impariamo.

Nel Machine Learning si tenta di ricreare questo tipo di processo. Alla macchina viene fornito un algoritmo di apprendimento. Questo algoritmo altro non è che un programma che descrive un modello di apprendimento; dice alla macchina quali operazioni può eseguire sulle informazioni e cosa deve fare; come se insegnasse a leggere. Una volta che la macchina ha imparato a leggere, è in grado di ricavare le informazioni (modelli di conoscenza) che riutilizzerà in futuro.

Abbiamo già detto in precedenza che gli algoritmi di machine learning partono dall’analisi di esempi per estrarre delle regole che li descrivano.

Gli esempi sono costituiti da dati che possono essere strutturati o non-strutturati. I dati strutturati sono dati organizzati in tabelle in cui le colonne rappresentano una variabile (es. “numero di lati”) e le righe il suo valore (es. “4”). I dati non-strutturati, invece, sono dati che non hanno questa associazione diretta variabile->valore. Vengono considerati dati non strutturati i testi, l’audio, i video, le immagini.

Diciamo subito che non esiste un modo unico in cui le macchine imparano. La ricerca è ampia ed i metodi differiscono sulla base dei compiti che devono svolgere. Tuttavia lo schema generale prevede che alla macchina abbia a disposizione:

  • Dati in ingresso [input], da poter analizzare. Questi dati possono essere, come detto, strutturati o nonstrutturati.
  • Un algoritmo di apprendimento, ossia un programma che permetta alla macchina di manipolare, analizzare, traformare i dati che le passiamo e di ottenere un qualche risultato [output].

come funziona il machine learning

L’algoritmo contiene in sè anche lo scopo dell’analisi, ovvero cosa ci aspettimamo che la macchina impari. Come abbiamo visto,  i tipi di problemi a cui può rispondere sono: classificazione, raggruppamento (clustering) e regressione.

A seconda del tipo di “conoscenza” che ci attendiamo, gli algoritmi possono utilizzare quattro metodologie di apprendimento:

  • supervised learning o apprendimento supervisionato;
  • unsupervised learning o apprendimento non supervisionato;
  • semi-supervised learning o apprendimento parzialmente supervisionato;
  • reinforcement learning o apprendimento per rinforzo.

Supervised Learning o apprendimento supervisionato

Con il termine supervised learning (o apprendimento supervisionato) si intende la metodologia di apprendimento automatico in cui alla macchina vengono passati degli esempi composti da una coppia di dati contenenti il dato originale e il risultato atteso. Compito della macchina è quello di trovare la regola (funzionemodello) con cui creare una relazione tra i due in modo tale che, al presentarsi di un esempio sconosciuto in precedenza, possa ottenere il risultato corretto.

Come funziona: i dati sono precedentemente etichettati, ovvero assegnati a una certa categoria. Nel caso delle figure geometriche, un esempio per l’apprendimento supervisionato potrebbe essere rappresentanto come in tabella sottostante:

Numero_LatiLati_paralleliNumero_AngoliAngoli_ugualiClasse_Figura
4444Quadrato
4444Rettangolo
4242Trapezio
3030Triangolo scaleno
3033Triangolo equilatero
...............

L’algoritmo analizza i dati di esempio e ricava una regola generale grazie alla quale, al presentarsi di un nuovo caso non etichettato, riuscirà a classificare l’oggetto come Quadrato, Rettangolo, Trapezio o Triangolo.

supervised learning
Esempio (semplificato) del funzionamento di un algoritmo in caso di supervised learning

Ambiti di applicazione: L’apprendimento supervisionato è utilizzato principalmente per i problemi di classificazione, come ad esempio nel marketing per classificare i clienti potenziali e proporre i prodotti a cui potrebbero essere interessati sulla base del profilo e della storia degli acquisti. Un altro esempio sono i sistemi anti-spam delle email che, all’arrivo di un messaggio, riescono a decidere se una determinata email debba essere etichettata come spam o meno.

Unsupervised learning o apprendimento non supervisionato

Come si può evincere dal nome, l’unsupervised learning o apprendimento non supervisionato, a differenza del precedente, non utilizza dati classificati e etichettati in precedenza; non sappiamo, quindi, a quale categoria essi appartengano. Alla macchina viene chiesto, quindi, di estrarre una regola che raggruppi i casi presentati secondo caratteristiche che ricava dai dati stessi. Per questo è anche definito apprendimento di caratteristiche (feature learning).

Gli algoritmi in questo caso cercano una relazione tra i dati per capire se e come essi siano collegati tra di loro. Non contenendo alcuna informazione preimpostata, l’algoritmo è chiamato a creare “nuova conoscenza” (knowledge discovery).

Come funziona: questa metodologia è più complicata perché, mancando una classificazione o una etichetta a monte, non offre alcun riscontro per determinare l’affidabilità del risultato. Prendiamo la tabella delle figure geometriche e rimuoviamo la colonna “Classe_Figura”. A questo punto l’algoritmo non ha un riscontro di classificazione e cercherà di raggruppare le righe (casi o esempi) sulla base delle loro caratteristiche. Un primo raggruppamento potrebbe essere le figure con quattro lati, il secondo raggruppamento le figure con quattro lati ed angoli retti, e così via. Il risultato saranno gruppi omogenei grazie ai quali potrà gestire i casi non ancora analizzati. Alternativamente potrebbe trovare relazioni tra i lati parralleli e il numero di angoli, o tra il numero di angoli ed il numero di lati, ecc.

Ambiti di applicazione: una delle applicazioni principali è il clustering, ovvero il raggruppamento dei dati in gruppi omogenei definiti cluster. L’apprendimento non supervisionato, quindi, serve generalmente ad estrarre informazioni non ancora note. Per questo motivo è un metodo spesso utilizzato nelle discipline quali medicina o biologia per l’analisi diagnostica o l’individuazione di gruppi genetici, ma anche nel marketing per l’individuazione di mercati e clienti potenziali. Trova grande applicazione nell’ambito dei Big-Data, quando è necessario correlare diversi dati ed estrarre informazioni non note (detto anche knowledge discovery, scoperta di conoscenza)

Esempi di utilizzo: Google News utilizza metodi di apprendimento non supervisionato per ragruppare le notizie per argomento da più fonti. In questo caso i dati utilizzati sono non-strutturati e l’analisi viene fatta sul testo degli articoli stimando il grado di similarità delle diverse notizie.

Google News use unsupervised learning to group sources around same topics
Google News usa l’apprendimento non supervisionato per raggruppare fonti diverse per uno stesso argomento

Semi-supervised learning o apprendimento parzialmente supervisonato

Posto a metà tra il supervisonato e il non-supervisionato, l’apprendimento parzialmente supervisionato si basa su dati misti in cui una minima parte è già etichettata e una larghissima maggioranza è costituita da dati non etichettati.  Questo approccio viene utilizzato per migliorare le previsioni fatte dalla macchina sui dati non etichettati e richiede, normalmente, l’intervento di un esperto/analista. L’approccio è principalmente usato nei problemi di classificazione e di clustering o nella descrizione delle relazioni causa-effetto tra le variabili.

Reinforcement learning o apprendimento per rinforzo

L’apprendimento per rinforzo è una tecnica di apprendimento automatico che punta a realizzare sistemi in grado di apprendere ed adattarsi ai cambiamenti dell’ambiente in cui sono immersi attraverso la distribuzione di una “ricompensa” detta rinforzo, data dalla valutazione delle prestazioni.

Come funziona. All’interno dell’algoritmo esistono tre componenti:

  • un sistema logico di esecuzione(chiamiamolo A), che sulla base dei dati in ingresso [Input] riesce a restituire un risultato [Output]
  • un sistema logico di valutazione (chiamiamolo B) che assegna un premio (se il risultato è corretto) o una penalità (se il risultato non è corretto) al sistema logico A
  • un sistema logico di ottimizzazione (chiamiamolo C) che osserva il comportamento di A e B e modifica il modello utilizzato da A per aumentare il premio e ridurre le penalità che B assegna ad A.
reinforcement learning
L’apprendimento per rinforzo si basa sull’assegnazione di premi o penalità a seconda della accurattezza dei risultati. Il modello viene modificato per massimizzare i premi

Ambiti di applicazione. L’apprendimento per rinforzo è utilizzato in tutti quei campi in cui è essenziale che la macchina risponda ai cambiamenti dell’ambiente. Per questo è utilizzato frequentemente nella robotica, per controllare i movimenti degli automi, ma anche nella guida senza conducente (le così dette driverless car). Trova anche applicazione in ambiti industriali nella produzione e nel controllo qualità e in diversi altri settori.

Esempi di utilizzo. Come detto in precedenza, i sistemi di apprendimento per rinforzo sono utilizzati nella guida senza conducente, come ad esempio le Google Car che devono essere in grado di reagire al mutare del contesto: incroci, semafori, strade, pedoni, ecc.

Conclusione

Il Machine Learning, quindi, non è altro rispetto all’Intelligenza Artificiale, bensì è una disciplina dell’Intelligenza artificiale (se non l’hai ancora letto: “Introduzione all’intelligenza artificiale per comuni mortali“) il cui scopo è la realizzazione di programmi (algoritmi) che permettano alla macchina di ricavare conoscenza dai dati.

La conoscenza viene estratta attraverso metodologie quali l’apprendimento supervisionato, non supervisionato, parzialmente supervisionato, per rinforzo. Ciascun metodo trova applicazione per la risoluzione di diverse tipologie di problemi: classificazione, raggruppamento, regressione.

Tipologia Problema /
Apprendimento
ClassificazioneRaggruppamentoRegressione
SupervisionatoXX
Non supervisionatoX
Parzialmente supervisionatoXX
Per RinforzoX

Le ricerche in machine learning trovano applicazione nel mondo reale per la risoluzione di problemi legati, ad esempio, al riconoscimento facciale e vocale, all’analisi dei big-data, all’individuazione di nicchie di mercato, ma anche nella produzione, nei sistemi di controllo qualità, ecc.

 

Published in Tecnologia

Comments

What do you think about?