Immagina di osservare il più grande selfie della storia, con milioni e milioni di persone, e riuscire a identificarne qualunque volto… in meno di cinque secondi.
Contrariamente a quanto si potrebbe pensare, la parte difficile sarebbe quella di riuscire a far stare milioni di facce nella foto, non la capacità di riconoscerne una, tra milioni, in pochi istanti.
Le straordinarie abilità nel riconoscere oggetti e persone sono infatti già una realtà grazie al Deep Learning, una tecnica di machine learning che implementa le reti neurali artificiali (Artificial Neural Networks), costituite da stratificazioni di nodi strettamente interconnesse tra loro che, ispirandosi al funzionamento del cervello umano e dei suoi neuroni biologici, ne imitano le connessioni e i meccanismi di apprendimento.
Esistono molte tipologie di reti neurali per risolvere molti diversi casi d’uso, ma tra le più popolari ed utilizzate, ci sono sicuramente le Convolutional Neural Networks (CNN).
Specializzate nel riconoscimento delle immagini e ispirate, in particolare, al funzionamento del sistema visivo umano, le CNN hanno superato la capacità umana di riconoscere forme all’interno di immagini già dal 2015.
Come funzionano le reti neurali
Così come tutte le altre reti neurali, anche le CNN dispongono di un ingresso, che riceve l’immagine da analizzare, e un’uscita che fornisce l’ipotesi identificativa, presumibilmente corretta, dell’oggetto riconosciuto all’interno dell’immagine. Tra l’ingresso e l’uscita le CNN implementano diversi strati, detti hidden layers, che elaborano progressivamente, strato dopo strato, ogni singolo pixel dell’immagine fornita in ingresso, identificandone i tratti ricorrenti e discriminanti. Questo processo, ripetuto immagine dopo immagine per migliaia o milioni di volte, durante tutta la fase di apprendimento, perfeziona un modello in grado di sviluppare una generalizzazione dei tratti caratteristici appresi e di conseguenza, identificare autonomamente gli stessi oggetti in immagini nuove, mai viste prima.
Ogni nodo di un hidden layer è collegato ai nodi del layer precedente attraverso dei collegamenti pesati, ispirati alle nostre sinapsi biologiche. Grazie a queste interconnessioni pesate, ogni layer della rete agisce da filtro, che amplifica o attenua i valori trasmessi e a tale scopo, utilizza diverse tecniche tra cui le Convolution, il Pooling e diverse altre funzioni dette di attivazione (Activating Functions). Questo insieme di tecniche e funzioni matematiche, servono a frammentare e semplificare progressivamente, layer dopo layer, i dati in ingresso, consentendo un’identificazione più precisa dei pattern che caratterizzano l’immagine, detti features, rendendoli al contempo, meno legati alla loro posizione all’interno dell’immagine fornita.
Il processo di apprendimento, in maniera simile a quello che ha luogo nel cervello umano, consiste in pratica nel rafforzare e privilegiare quelle connessioni tra neuroni che trasportano le caratteristiche discriminanti dell’oggetto rispetto a quelle che trasportano informazioni poco significative al fine del riconoscimento.
Così, mentre i dati invarianti e il rumore vengono via via smorzati nel passaggio tra un layer e l’altro, le caratteristiche specifiche dell’oggetto da riconoscere, una volta identificate e isolate, vengono via via amplificate, arrivando forti e chiare agli ultimi layer della rete neurale, chiamati fully connected layers.
I fully connected layers riportano tutte le features identificate in lunghi array sequenziali anch’essi dotati di pesi che hanno il compito di mettere in evidenza, tra tutte le features identificate, quelle più caratterizzanti dell’oggetto da riconoscere e la cui simultanea presenza, fornisca le probabilità più alte che l’ipotesi prodotta relativamente all’oggetto identificato, sia quella corretta.
Se, per esempio, da una foto venissero identificati degli schemi di pixel che rappresentano un naso, una bocca, occhi e orecchie…la possibilità che la simultanea identificazione di tali forme indichi la presenza di un volto sarebbe molto più alta della possibilità che rappresenti un’automobile. Raffinando l’apprendimento poi, si potrebbe anche facilmente identificare l’appartenenza del volto a uno specifico individuo raffrontandolo con immagini di volti noti.
L’apprendimento nel Deep Learning
Nella maggior parte dei casi, il Deep Learning, implementa una strategia di apprendimento chiamata Supervised Learning, dove l’identificazione di un oggetto o di un volto, ipotizzata dalla rete neurale, viene confrontata con la risposta corretta e a seconda dell’esito, tutti i pesi delle connessioni tra i neuroni della rete vengono ricalibrati di conseguenza.
In generale, l’obiettivo è di trovare la funzione, o l’algoritmo, che meglio associ i dati forniti in ingresso con le loro rispettive classi di appartenenza. Un semplice esempio potrebbe essere un’attività di classificazione dove in ingresso vengano fornite delle immagini di lettere dell’alfabeto e la rete neurale abbia il compito di associare ogni immagine al nome del carattere corrispondente.
È chiamata supervised learning perché implementa una metodologia assimilabile a quella di un professore che supervisiona il processo di apprendimento dei suoi alunni. Le risposte corrette sono note: gli studenti formulano le loro ipotesi che poi vengono corrette dal professore finché gli studenti non imparano. All’inizio gli errori saranno più frequenti, poi man mano che l’apprendimento progredisce, esercizio dopo esercizio, le ipotesi formulate dagli studenti diventeranno sempre più affidabili.
In maniera molto simile, nel supervised learning, l’algoritmo fa delle ipotesi, inizialmente casuali e molto fallaci, che vengono confrontate con le risposte giuste. Ogni volta che l’ipotesi è corretta la combinazione dei valori associati alle connessioni tra i nodi della rete viene amplificata leggermente. Al contrario, ogni volta che l’ipotesi risulta errata, la combinazione dei valori viene leggermente attenuata.
L’ampiezza e la direzione degli aggiustamenti da effettuare sui valori delle connessioni neurali vengono calcolati da una funzione chiamata Gradient Descent in base alla differenza tra i valori ottenuti dalla rete e i valori corretti. Una volta calcolati, i valori verranno utilizzati per ricalcolare, partendo dai layer finali e risalendo strato dopo strato fino ai nodi dei layer iniziali, tutti i valori delle connessioni della rete. Questo processo di ricalibrazione viene eseguito con una tecnica chiamata appunto di Backpropagation.
Reiterando questo processo per moltissime volte, il sistema apprende man mano quali sono le combinazioni dei pesi che identificano ipotesi corrette. Le combinazioni corrette di valori rappresentano in pratica le features: le caratteristiche identificative delle immagini fornite in ingresso.
L’apprendimento terminerà quando verrà raggiunto il livello più basso di errore e non saranno possibili ulteriori aggiustamenti significativi da effettuare. La rete sarà quindi pronta per essere testata su immagini che rappresentano lo stesso oggetto ma mai viste prima, per validare la solidità di classificazione dell’algoritmo o, per meglio dire, la capacità di generalizzazione del modello ottenuto dal processo di apprendimento.
Ma come abbiamo già visto nell’articolo precedente (“Alla ricerca di un sistema operativo cognitivo“), per sviluppare capacità robuste di classificazione o riconoscimento degli oggetti, le reti neurali che costituiscono le architetture delle CNN, necessitano di fasi di training molto lunghe e un numero molto elevato di immagini di riferimento, per consentire al sistema, sessione di training dopo sessione di training, di identificarne i tratti caratterizzanti, le features appunto, che ne permettono l’identificazione.
Maggiore sarà il numero e la qualità delle immagini fornite per il training, migliori e più specifiche saranno di conseguenza le caratteristiche identificate dell’oggetto da riconoscere, producendo così un modello generalizzato dalle prestazioni ottimali.
Per dare un’idea del livello di sofisticazione raggiunti, DeepFace, il Sistema di riconoscimento facciale creato da Facebook, raggiunge livelli di accuratezza del 97%, utilizza una rete neurale a 9 layer con 120 milioni di connessioni pesate ed è stata addestrata con 4 milioni di immagini caricate dagli utenti stessi.
…a pensarci bene, quindi, non solo disponiamo di sistemi artificiali in grado di identificare più velocemente e più accuratamente della stessa razza umana forme, oggetti e volti all’interno di immagini…ma, in un certo senso, potremmo dire che abbiamo anche già sistemi in grado di raggruppare milioni di facce in un solo, smisurato ‘selfie’.
Il più noto si chiama Facebook.
***
*Michele Vaccaro è Solution Consultant Director Europe South, Italy, Switzerland and Austria, di OpenText