Da un sondaggio del Future of Humanity Institute si è rilevato che “i ricercatori credono che ci sia il 50% di possibilità che le macchine, tramite l’Intelligenza Artificiale, superino gli umani nello svolgimento di qualsiasi attività nel giro di 45 anni” (Grace et Al, 2017).
Sembra alquanto impressionante, ma se ci si pensa un attimo, non si dovrebbe essere troppo colpiti da questa affermazione perché dopotutto le macchine diventano maggiormente intelligenti via via che il tempo passa e sono grado di svolgere sempre più attività complesse.
In questo articolo voglio parlare di cosa è il Machine Learning, come funziona un algoritmo di questo tipo e come si classificano tali problemi.
Infine mostrerò un esempio di Intelligenza Artificiale che tutti possiamo provare sul browser Chrome.
Prima di iniziare voglio mostrare un video che mi ha particolarmente colpito:
Definizione di Machine Learning
Nel precedente articolo abbiamo visto che il Machine Learning (ML) rientra in un sottocampo dell’Intelligenza Artificiale e si pone l’obiettivo di far apprendere in modo automatico attività alle macchine svolte da noi esseri umani.
Il termine Machine Learning fu coniato per la prima volta nel 1959 da Arthur Samuel e ripreso successivamente da Tom Mitchell che ne ha dato una definizione formale e attuale:
“Si dice che un programma impara da una certa esperienza E rispetto a una classe di compiti T ottenendo una performance P, se la sua perfomance nel realizzare i compiti T, misurata dalla performance P, migliora con l’esperienza E.”
In altre parole, se un computer migliora lo svolgere di un task rispetto un’esperienza passata si dice che ha imparato.
C’è una leggera differenza tra algoritmo tradizionale e algoritmo di machine learning.
Nel primo caso il programmatore definisce i parametri e i dati necessari alla risoluzione dell’attività, mentre nel secondo caso, in problemi in cui non ci sono strategie predefinite o non si conosce un modello si fa in modo che il computer impari eseguendo l’attività e migliorando l’esecuzione della stessa.
Ad esempio, un programma di un pc può risolvere il gioco Tris e riuscire a batterti perché è stato programmato con una strategia vincente per farlo, ma senza conoscere le regole basi del gioco occorrerebbe scrivere un algoritmo che apprende automaticamente giocando finchè non è in grado di vincere.
Il computer in quest’ultimo caso non si limita ad eseguire una “mossa” ma piuttosto cerca di capire quale potrebbe essere la migliore: attraverso i vari esempi che otterrà giocando costruisce le regole che descrivono tali esempi e riuscirà a comprendere autonomamente se il nuovo caso corrisponde alla regola che ha ricavato e di conseguenza deciderà la mossa da effettuare.
Come funziona un algoritmo di Machine Learning?
La prima cosa che viene spontaneo chiedersi è: come fa una macchina ad imparare?
Gli psicologi ci insegnano che l’apprendimento consiste nell’acquisizione o modifica di conoscenze, comportamenti, abilità, valori ed esperienze che sono poi utilizzati per vivere la vita di tutti i giorni.
Tramite l’apprendimento creiamo delle regole generali che sono assimilabili in modelli di apprendimento.
Questi modelli ci indicano come comportarci in una determinata situazione, ad interagire con gli altri, come leggere, come socializzare e così via.
L’apprendimento è un processo iterativo, che continua per tutta la vita e ci permette di migliorare le nostre conoscenze a seconda delle informazioni che raccogliamo.
Lo stesso fanno le macchine: dai dati di input che analizzano (generalmente big data) ricavano i modelli di apprendimento.
Questi modelli permettono di costruire algoritmi di apprendimento per risolvere uno specifico problema.
L’algoritmo indica alla macchina le operazioni che può eseguire e che cosa può fare come ad esempio riconoscere un cane da un’immagine.
Quando è in grado di farlo, utilizzerà tale informazione per analizzare le successive immagini.
Il modello di apprendimento indica lo scopo dell’analisi, ossia come si vuole che impari l’algoritmo.

Ora vediamo i principali algoritmi di apprendimento del ML.
Apprendimento supervisionato (Supervised Learning)
In questo primo caso, il processo di un algoritmo che apprende dal set di dati di addestramento può essere pensato come un insegnante che supervisiona il processo di apprendimento. L’apprendimento si interrompe quando l’algoritmo raggiunge un livello accettabile di prestazioni.
L’apprendimento supervisionato si ha quando si hanno dati di input (X) e dati di output (Y) e si utilizza un algoritmo che apprende la funzione che dall’input genera l’output.
Y= f(x)
L’obiettivo è approssimare la funzione in modo che quando si ha un nuovo dato di input (X) l’algoritmo può prevedere il valore di output generato (Y) per quel dato.
I problemi di apprendimento supervisionato si possono dividere in problemi di:
1) Classificazione: è il processo dove una macchina è in grado di riconoscere e categorizzare oggetti visivi e dimensionali da un set di dati.
In questo scenario i dati sono etichettati, vale a dire contrassegnati con l’etichetta corretta o il risultato corretto. Un esempio di classificazione lo si può vedere dalla seguente figura:

L’etichettatura è un cane o non è un cane viene stabilita dal programmatore: quando la macchina sarà addestrata gli vengono date nuove immagini e l’algoritmo usa l’esperienza pregressa per categorizzare la nuova immagine.
Più grande è il set di dati da cui la macchina può imparare e maggiore sarà l’apprendimento che essa può arrivare.
2) Regressione: rappresenta il fatto che una macchina può predire il valore di ciò che sta analizzando in base a dati attuali. In altre parole studia la relazione tra due o più variabili una indipendente dall’altra.
Ad esempio, data l’ampiezza di una casa prevederne il prezzo, oppure cercare la relazione tra le gare automobilistiche e il numero di incidenti effettuati da un pilota.
Apprendimento non supervisionato (Unsupervised Learning)
L’apprendimento senza supervisore è dove si ha una variabile di input (X), rappresentata dai dati, e nessuna variabile di output corrispondente.
Si pone l’obiettivo di trovare relazioni o schemi tra i vari dati che vengono analizzati senza utilizzare una categorizzazione come visto per gli algoritmi Supervised Learning.
L’apprendimento si dice non supervisionato perché non ci sono risposte corrette e non c’è un insegnante.
Gli algoritmi sono lasciati a sé stessi per scoprire e presentare l’interessante struttura dei dati.
I problemi di apprendimento non supervisionato si possono dividere in:
1) Raggruppamento: detto anche clustering, viene utilizzato quando è necessario raggruppare i dati che presentano caratteristiche simili.
In questo caso l’algoritmo impara se e quando individua una relazione tra i dati.
Il programma non utilizza dati categorizzati in precedenza ma estrae una regola che raggruppa i casi presentati secondo caratteristiche che ricava dai dati stessi.
Non viene specificato al programma cosa rappresentano i dati e per questo motivo risulta più complesso determinare l’affidabilità del risultato.
2) Associazione: è un problema dove si vogliono scoprire regole che descrivono grandi porzioni dei tuoi dati, come le persone che acquistano un prodotto A tendono anche ad acquistare un prodotto B.
Si pone l’obiettivo di trovare schemi frequenti, associazioni, correlazioni o strutture casuali tra un insieme di item od oggetti in un database relazionale.
Dato un set di transazioni, cerca di scoprire regole che predicono l’evento di un item in base agli eventi di altri item nella transazione. E’ strettamente collegato al Data Mining.
Apprendimento parzialmente supervisionato (Semi-Supervised Learning)
Rappresenta una via di mezzo tra i primi due apprendimenti. Si tratta di problemi che hanno la maggior parte di dati di input (X) e solo una parte di essi è etichettata (Y).
Un buon esempio è una foto archiviata dove solo qualche immagine è etichettata (es. persone, cane, gatto) e la maggior parte non lo sono.
La maggior parte dei problemi di Machine Learning nel mondo reale ricadono in quest’area. Questo è dovuto al fatto che è costoso etichettare i dati poiché richiede l’intervento di un esperto o analista.
Apprendimento con rinforzo (Reinforcement Learning)
Tecnica di machine learning che rappresenta la versione computerizzata dell’apprendimento umano per tentativi ed errori.
L’algoritmo si presta ad apprendere e ad adattarsi ai cambiamenti ambientali tramite un sistema di valutazione, che stabilisce una ricompensa se l’azione compiuta è corretta, oppure una penalità nel caso opposto.
L’obiettivo è quello di massimizzare la ricompensa ricevuta, senza che venga annunciata la strada da intraprendere.
Esempio di Machine Learning
Un esempio molto interessante di Supervised Learning è quello creato da Andreas e Lasse del team di Google.
In questo esperimento, gli sviluppatori mostrano come utilizzare un algoritmo di Machine Learning direttamente dal tuo browser, senza nessun tipo di competenze di programmazione.
Il sito, se vuoi provare, è Teachable Machine.
Come Input serve attivare la webcam del computer. Una volta accesa l’immagine compare nel primo riquadro della foto sottostante.

Nella schermata Learning si possono vedere tre pulsanti uno verde uno viola e uno arancione. Sono tre comandi di apprendimento del programma.
In pratica mostrando immagini differenti di input e cliccando su train (addestramento) si fa in modo che il programma impari cosa mostrarti nella finestra Output.
Ad esempio se mostro una mano e clicco su train green per qualche secondo, l’algoritmo impara a mostrarmi il gattino bianco (GIF) sulla destra nella casella output.
Se ora abbasso la mano, e clicco su train purple (sempre per qualche secondo) sto insegnando alla macchina a mostrarmi il GIF del cagnolino. E così via: posso modificare i GIF a piacimento.
Se preferisci puoi ottenere come output un suono e una frase (anch’esse modificabili): basta cliccare rispettivamente su Sound o Speech nella schermata Output.
Sotto allego un video che spiega brevemente come funziona l’algoritmo in esame.
Mi auguro l’articolo ti sia piaciuto. Per qualsiasi informazione o curiosità non esitare a commentare.