Come si insegna a un computer a imparare

Guida minima al "deep learning", la tecnica più utilizzata per far sì che un computer sappia riconoscere un gatto, per esempio

Il gatto riconosciuto dall'intelligenza artificiale di Google nel 2012 (Google)
Il gatto riconosciuto dall'intelligenza artificiale di Google nel 2012 (Google)

I progressi più importanti raggiunti negli ultimi anni sull’intelligenza artificiale sono legati al “deep learning”, il campo della ricerca che si occupa di insegnare ai computer a imparare, attraverso tecniche di apprendimento automatico. Questo sistema, che ha permesso di realizzare programmi sempre più utilizzati, come quelli per il riconoscimento dei visi, è il più promettente per costruire programmi “intelligenti”.

Reti neurali, machine learning e deep learning sono termini che ricorrono spesso quando si parla di intelligenza artificiale. In molti casi sono integrati tra loro: pensiamo alla pista di un trenino. La rete neurale sono i binari di una pista, un insieme di nodi di calcolo in rete tra loro che si scambiano dati ed elaborazioni; il machine learning sono tutti i possibili trenini, programmi che possono servire per far imparare ai computer a riconoscere certi tipi di dati o a dare particolari risposte; il deep learning è un particolare tipo di trenino – quindi di machine learning – compatibile con i binari della pista, in grado di elaborare e analizzare enormi quantità di dati, resi per lo più accessibili grazie a Internet.

Come suggerisce il nome, una rete neurale cerca di imitare la struttura di base del nostro cervello: i neuroni artificiali (che stanno dentro i computer) e il loro software sono collegati insieme in una rete con nodi e collegamenti che ricordano quelli che si formano tra i neuroni umani. Preso individualmente, ogni nodo è piuttosto tonto, ma tutti i nodi presi collettivamente possono risolvere problemi complicati. Inoltre, con i giusti algoritmi e programmi, le reti neurali possono acquisire l’abilità di imparare da sole.

Nella programmazione classica di un software, il programmatore inserisce tutte le informazioni necessarie per farlo funzionare. Se lo scopo è fare in modo che un robot sappia come si attraversa in sicurezza la strada, il programmatore inserirà nel suo computer una copiosa serie di regole per fare controllare al robot che il semaforo sia verde, che ci siano le strisce pedonali, che non ci siano veicoli in movimento e così via. In questo modo il robot può eseguire a cascata le istruzioni: SE è rosso stai fermo, SE è verde muoviti, MENTRE ti muovi guarda a destra, SE non arriva un’automobile continua, ecc.

Nel machine learning l’approccio è diverso: al computer che gestisce il robot non vengono date istruzioni, che spesso richiedono una grande quantità di ore di programmazione, ma migliaia di video nei quali c’è qualcuno che attraversa una strada. L’obiettivo è fare in modo che sia il computer, analizzando quei video, a capire quali sono le regole e come comportarsi quando si deve attraversare la strada. Ottenere questo risultato però non è semplice: negli anni sono state provate soluzioni di vario tipo, che in alcuni casi riprendono le tecniche usate per il nostro apprendimento o per l’addestramento degli animali. I programmatori si sono inventati sistemi di “ricompensa”, che portano il programma a migliorare gradualmente, o altre soluzioni più elaborate come la costruzione di algoritmi che competono tra loro, fino a quando prevale quello con la soluzione migliore.

L’insegnamento per esempi che ha dato i frutti più promettenti – che viene sperimentato dalla maggior parte delle grandi aziende come Google e Facebook – è legato al deep learning (“apprendimento profondo”), l’analisi approfondita e su più livelli di uno scenario per comprenderlo. Come ricorda James Vincent su The Verge, il deep learning è stato soprattutto esplorato per creare intelligenze artificiali in grado di riconoscere ciò che mostra un’immagine. Un computer non vede una fotografia come la vediamo noi, conosce solamente la posizione di ogni singolo pixel e il suo colore.

Con le tecniche di deep learning, l’immagine viene divisa in vari strati di analisi. A un livello più basso, il software analizza per esempio una griglia di pochi pixel, con il compito di rilevare un tipo di colore o varie sue sfumature. Se trova qualcosa, informa il livello di analisi che sta sopra di lui, che a questo punto verifica se quel dato colore appartenga o meno a una forma più grande, come una linea. Il processo continua verso i livelli superiori fino a comprendere che cosa viene mostrato nell’immagine. Software in grado di fare queste cose sono ormai diffusi e servono, per esempio, nei sistemi per il riconoscimento dei visi, o in quelli per effettuare ricerche tramite un’immagine su Google. In molti casi, questi sistemi sono ibridi e funzionano con soluzioni informatiche più tradizionali, miste a quelle di intelligenza artificiale di nuova generazione.

Il problema è che a un livello di conoscenza vera e propria, il computer non sa che cosa sia veramente un cane, un gatto o un’automobile. Insegnare a un sistema di intelligenza artificiale che cos’è un elefante non è per nulla semplice, e ha portato per ora a risultati limitati, per quanto incoraggianti. Una rete neurale può essere programmata in modo da riconoscere diversi particolari di un elefante, come le zampe, le grandi orecchie e la proboscide. In una seconda fase alla rete neurale vengono mostrate immagini di elefanti e di altri animali che camminano a quattro zampe, indicando ogni volta quando è visibile un elefante. I nodi della rete neurale rilevano la presenza della proboscide, delle orecchie e delle zampe e in un certo senso evolvono, conservando le informazioni rilevanti e lasciando indietro i nodi meno importanti. Nel processo, il sistema può per esempio notare che la proboscide compare solo in alcuni tipi di animali e che è associata solo a quelli con le orecchie fatte in un certo modo.

Un processo di apprendimento di questo tipo richiede molto tempo e quasi sempre un intervento umano, per aiutare la rete neurale a riconoscere gli errori e a renderli meno frequenti. In alcuni contesti il deep learning è affiancato ad altre soluzioni con lo scopo di correggere automaticamente gli errori di apprendimenti, ma per ora i risultati non sono stati molto incoraggianti. I progressi ci sono comunque stati, soprattutto se si pensa che il primo animale riconosciuto da un computer, un gatto, risale ad appena 5 anni fa.