Logo U-Hopper
Indietro a tutti gli articoli

Alla scoperta dei princìpi del Machine Learning

Alla scoperta dei princìpi del Machine Learning
Artificial Intelligence

Nel post precedente di questa mini serie a tema, il nostro data scientist Christian ci ha spiegato cosa consente di distinguere un algoritmo di Machine Learning (ML) da una più generica implementazione di Intelligenza Artificiale (IA). In questo nuovo episodio andremo ad affrontare più in dettaglio il funzionamento del Machine Learning. Pronti? Iniziamo!

Ciao Christian, eccoci di nuovo qui, alla scoperta di questo mondo affascinante! Che dici, iniziamo con un riassunto su cosa ci siamo detti la volta scorsa?

Certo! Per descrivere una generica implementazione di Intelligenza Artificiale, e non di una macchina basata sul ML, abbiamo preso come esempio il caso del computer Deep Blue – capace di sconfiggere il campione del mondo di scacchi nel 1997! -, sottolineando come al suo interno vennero rigidamente codificate le regole degli scacchi, grazie al loro essere piuttosto formali e di semplice descrizione. Di conseguenza, Deep Blue giocava a scacchi in maniera meccanica, senza cioè alcun tipo di “creatività” o di iniziativa propria. Successivamente, abbiamo parlato di un secondo compito – il riconoscimento facciale – dove un simile approccio non può essere applicato, essenzialmente perché le “regole” corrispondenti non sono sufficientemente formali da poter essere illustrate in modo semplice e non ambiguo. Infatti, per esempio, è complicato descrivere la forma di un naso in maniera assai precisa senza ricorrere a molte parole – e un certo livello di ambiguità rimarrebbe comunque anche nel caso in cui una descrizione prolissa fosse disponibile.

Però il riconoscimento facciale oggigiorno esiste, come funziona? Come può un congegno – un computer, per esempio – essere istruito a classificare immagini come raffiguranti o meno una persona? Prendiamo Albert Einstein, per esempio!

Nelle attuali implementazioni della visione artificiale, al computer vengono forniti a) un insieme (possibilmente ampio) di immagini sotto forma di serie di pixel, b) un’etichetta associata a ogni immagine (“Sì, questa fotografia ritrae Albert Einstein” oppure “No, la persona in quest’immagine non è Albert Einstein”) e c) un’architettura (o modello) contenente dei parametri da settare opportunamente. Tale architettura può essere paragonata a un cruscotto, i parametri a una serie di manopole su di esso che possono essere ruotate e il settaggio – o training, nel gergo del ML – alla procedura che porta a individuare come debba essere ruotata ogni manopola in modo da ottimizzare la classificazione (per esempio, riducendo al minimo il numero di errori nell’identificare Einstein). In questo contesto, è il metodo seguito per effettuare il settaggio dei parametri a permettere di identificare l’intero processo come un esempio di Machine Learning, diversamente dall’approccio del tutto rigido impiegato per insegnare a Deep Blue a giocare a scacchi. Infatti, anziché dettare le regole al computer e fornirgli un elaborato metodo per navigare attraverso di esse, nell’ambito della visione artificiale il programmatore istruisce “semplicemente” la macchina a aggiornare i parametri da in maniera iterativa attraverso un appropriato algoritmo da applicare ai dati in ingresso (cioè le immagini con le loro etichette).

Quanto dura questo allenamento?

Il processo di training termina non appena le prestazioni della macchina nel compito di classificazione cessano di migliorare. In altre parole, al computer non viene mostrato – sin dall’inizio – il sentiero attraverso la foresta da seguire senza deviazioni, ma gli viene dato un machete (con alcune istruzioni per l’uso) con cui sarà il computer stesso ad aprirsi da sé il cammino. Questa è la ragione per cui un approccio di questo tipo rientra nell’ambito del Machine Learning: il computer impara – “learns”, in inglese – le regole (cioè, il miglior settaggio dei parametri) da solo a partire dai dati in ingresso. Così facendo, non ci si deve preoccupare di trovare un modo di descrivere in maniera sintetica ma senza ambiguità il naso di una persona che si vuole far riconoscere alla macchina: è sufficiente passarle fotografie della persona in questione e la macchina troverà il proprio modo di descriverne il naso – assieme a tutte le altre caratteristiche salienti e, in più, ai modi con cui ogni caratteristica si combina con le altre.

A prima vista, il fatto che lo sviluppo della visione artificiale abbia richiesto più tempo rispetto alla programmazione di Deep Blue potrebbe a questo punto sembrare in qualche modo controintuitivo, sbaglio? Se l’intervento umano gioca un ruolo minore nell’analisi delle immagini e se il lavoro umano richiesto è inferiore, perché le macchine non hanno imparato prima ad analizzare le immagini ma a giocare a scacchi?

Effettivamente sì, in questo caso i programmatori non devono passare alla macchina tutte le regole in dettaglio ma devono “solamente” darle uno strumento per trovarle e attendere che esegua il resto del lavoro. Il ragionamento alla base di questa domanda però trascura alcuni aspetti che sono rimasti finora sullo sfondo e che andremo ad approfondire nel prossimo post!