Deep Learning, Neural Network, AI: qual è la differenza?

Cerchiamo di capire qual è la differenza tra intelligenza artificiale, machine leaning, deep learning e neural network e perché sono diversi.

Deep Learning, Neural Network, AI: qual è la differenza?
Articolo a cura di

Deep learning, machine learning, intelligenza artificiale e neural network sono termini molto utilizzati oggi negli articoli sulla tecnologia. Ma di cosa si sta parlando quando si usano questi concetti relativamente nuovi? Perché spesso vengono utilizzati l'uno al posto dell'altro in modo arbitrario?
Sulle pagine di Everyeye si è già parlato più volte di argomenti di intelligenza artificiale, in particolar modo degli algoritmi di machine learning, che stanno trovando sempre più applicazioni nella vita di tutti i giorni. In questo speciale vogliamo invece soffermarci sui vari termini ed in particolar modo analizzare quello che è considerato il futuro dell'intelligenza artificiale: il deep learning. Per prima cosa è necessario cercare di capire cosa indicano queste idee e perché si parla di algoritmi intelligenti.

La terminologia è importante

I termini e i concetti che stiamo andando ad analizzare vengono spesso utilizzati in modo casuale e talvolta senza neanche un minimo cenno al loro significato. Queste tecnologie sono relativamente nuove e ci vorrà del tempo prima che i non addetti ai lavori entrino nell'ottica dei nuovi termini. Anche il fatto di usare le parole per motivi di marketing non aiuta di certo alla chiarezza della situazione, ma fortunatamente l'idea di base è semplice e la prossima immagine ripresa dal blog di NVIDIA ne aiuta la comprensione.

Bisogna immaginare AI (artificial intelligence, termine più in voga sul web), machine learning (apprendimento automatico, ma il termine non viene usato) e deep learning (apprendimento profondo, termine anch'esso non usato) come l'uno il sottoinsieme dell'altro. L'insieme più grande è quello dell'intelligenza artificiale, un termine generico che non indica un tipo di algoritmo specifico. Per fare un esempio semplice e alla portata di tutti: un bot di un videogioco può essere considerato un'intelligenza artificiale, che in questo caso è una serie di linee di codice che reagiscono agli input stabiliti da un programmatore. Tutti conosciamo bene i limiti di un approccio del genere: le AI nei videogames sono destinate a compiere continuamente le stesse azioni e possono essere aggirate facilmente da un giocatore che ne intuisce i punti deboli o le falle.

L'AI di un gioco di scacchi generalmente non fa altro che prevedere una serie di possibili mosse calcolandole una ad una, presumibilmente fino ad un certo numero di turni. Anche qui non si parla di una vera e proria entità che varia il suo comportamento in base alle mosse del giocatore, ma di un algoritmo fisso: in questo caso un giocatore non professionista potrebbe pensare che l'avversario digitale sia veramente intelligente, ma in un gioco con un numero di mosse possibili che sono facilmente calcolabili da un computer è semplice ingannare un essere umano.
Anche Deep Blue, il computer sviluppato da IBM per giocare a scacchi ed il più famoso caso di AI che ha battuto campioni mondiali, è basato su un algoritmo che parallelizza la ricerca delle possibili combinazioni: forza bruta per scegliere la mossa migliore sapendo già quali sono i possibili scenari futuri. In un contesto specifico come gli scacchi dove l'unica cosa che conta è sapere quali mosse scaturiscono dallo spostamento di una pedina questo approccio è sufficiente. Quando invece si parla di un gioco come GO, dove le mosse possibili sono in numero così spropositato da rendere impossibile a qualunque computer di prevederle, bisogna cambiare strategia.

Machine learning, la rivoluzione dell'intelligenza artificiale

Se si considera un algoritmo basato su machine learning, si sta sempre parlando di un'intelligenza artificiale, ma stavolta in maniera più specifica indicando solo un sottoinsieme di AI. Si tratta di linee di codice che non descrivono un comportamento prestabilito da chi sta programmando, ma che variano il loro output (o, se volete, il loro obiettivo) in base ai dati che gli sono stati forniti in ingresso.
L'esempio più classico è il riconoscimento delle mail spam nella vostra casella di posta digitale, che vengono scovate grazie ad un semplice algoritmo di classificazione. Quest'ultimo viene allenato fornendogli esempi di mail spam ed esempi di mail non spam, così che possa distinguere quali sono le parole chiave che le differenziano. Vi immaginate la fatica che dovrebbe fare un programmatore se dovesse scrivere esplicitamente quali sono le parole tipiche di una mail spam? Il compito è arduo se non impossibile. Fortunatamente un algoritmo di machine learning può identificare facilmente la differenza e classificare le mail con un errore generalmente basso.

Si parla di machine learning anche per gli algoritmi dietro ai consigli Amazon o Netflix, piattaforme che suggeriscono contenuti che sono il più possibile vicini ai gusti dell'utente. Anche in questo caso è necessario un input, dei dati di ingresso che influenzano la decisione finale e che corrispondono alla storia degli acquisti o delle visioni dell'utente. Se amate Breaking Bad, non dovete stupirvi se l'algoritmo di Netflix vi consiglia Better Call Saul. Le idee sembrano innovative, ma in realtà sono di vecchia concezione e provengono direttamente dalla statistica. Infatti, gli algoritmi di machine learning non implementato altro che previsioni statistiche, e non è raro ascoltare o leggere opinioni di chi di statistica parla da decenni e accusa il machine learning di non essere altro che una specie di inferenza statistica camuffata e abbellita per motivi di marketing.
Al di là della diatriba tra i nomi (machine learning o inferenza statistica che sia), il motivo per cui questo approccio è diventato famoso è il continuo aumento della potenza computazionale dei calcolatori elettronici. I computer sono diventati decisamente più performanti e finalmente una vasta gamma di metodi statistici hanno trovato applicazioni prima impensabili. Quando si parla di Big Data ci si riferisce alla gran quantità di dati disponibili in via telematica che possono essere sfruttati negli studi statistici, in particolar modo per allenare algoritmi di machine learning a svolgere il compito per cui sono nati. Dunque è il connubio Big Data e computer più performanti che ha letteralmente fatto esplodere la fama del machine learning, in particolar modo di un suo sottoinsieme: il deep learning.

La vera intelligenza artificiale: il Deep Learning e le reti neurali

Quando si parla di Deep Learning è per indicare degli algoritmi che sono di Machine Learning, ma più profondi. L'idea di base quindi rimane la stessa: un programma che ha bisogno di dati in ingresso per fornire decisioni o previsioni in uscita. La differenza è che stavolta la previsione dell'algoritmo è decisamente più complessa e mette in gioco una gran quantità di variabili che richiedono una potenza computazionale a volte spaventosa, che farebbe piangere anche un computer dotato di un i9-9900K. L'idea è la stessa, ma l'esecuzione è totalmente diversa.
Qui si entra nel regno delle black-box e degli algoritmi incomprensibili anche a chi li sta implementando. La statistica e i suoi modelli rimangono come idea di base, ma di fatto la maggior parte delle decisioni umane nell'impostazione dell'algoritmo vengono delegate ad un software che analizza i dati e compie una previsione. Per chiarire i termini: deep learning significa usare reti neurali (meglio note con il termine inglese neural network), che sono una specifica schematizzazione di un'idea che si è ispirata alla struttura del cervello umano. In pratica una neural netwok è una struttura divisa in vari livelli costituiti da neuroni artificiali, che a livello computazionale è difficile da gestire perché concepita per i calcoli in parallelo: una CPU non è adatta a questo genere di applicazioni, mentre invece le GPU sono perfette in ambito di deep learning, ovvero per eseguire i calcoli in parallelo di una neural network. Questo è il motivo per cui negli ultimi anni è stato necessario introdurre un hardware specifico per le reti neurali negli smartphone, generalmente chiamato NPU (Neural Processing Unit).

Anche NVIDIA ha ben pensato di inserire delle unità specifiche denominate Tensore Core nelle nuove GPU RTX, specializzate nei calcoli che svolge una neural network. La sola GPU è già adatta a eseguire un algoritmo che implementa una rete neurale, ma un processore che lavora sui tensori è ancora più performante, in quanto ideato appositamente per un certo tipo di dati organizzati secondo matrici numeriche.
La complessità di una rete neurale dipende dal numero di strati da cui è composta e può aumentare in base alla difficoltà del compito per cui nasce. In linea di principio può rappresentare delle complesse relazioni tra ingresso ed uscita che normalmente un umano non può neanche immaginare.
Ma come è possibile che un algoritmo di deep learning riesca a trovare delle connessioni talmente intricate che anche chi le programma non può capirle? Tutta la magia sta nella fase di training della rete neurale, che come per ogni algoritmo di Machine Learning consiste nel fornire in ingresso dei dati per far sì che i vari strati composti dai neuroni artificiali si configurino a dovere per l'obiettivo che il programmatore ha deciso: riconoscere una sagoma in una foto, individuare degli oggetti in un video, e via dicendo.

Anche qui entrano in gioco i Big Data, ma stavolta parliamo di database di cui solo Google dispone, che ha un quantitativo di materiale così smisurato per allenare le proprie reti neurali da renderla imbattibile in un contesto di intelligenza artificiale. Lo stesso vale per il team di intelligenze artificiali che hanno sconfitto i migliori giocatori di Dota2: sono servite l'equivalente di 180 anni di partite giocate al giorno per poter allenare questi bot. Anche l'algoritmo di deep learning AlphaGo è riuscito a battere un campione mondiale grazie ad una quantità smisurata di dati che gli sono stati forniti come allenamento. In quest'ultimo caso bisogna chiarire che la rete neurale non poteva calcolare tutti i possibili risultati per ogni mossa, ma ha messo in campo una vera e propria strategia degna di un essere umano, nata dall'esperienza vissuta nella sua fase di training. Per essere più precisi, bisogna specificare che gli ultimi due casi usano il reinforcement learning per allenare la rete neurale, sostituendo i dati in ingresso con delle partite giocate contro sé stessa per migliorare.
Si può senz'altro affermare che qualora si disponesse di un elevato numero di dati e si cercasse una soluzione ottimale ad un problema specifico, gli algoritmi di deep learning sono i più avanzati di cui disponiamo, anche se per ora non sono ancora general purpose, ovvero sono in grado di svolgere solamente un compito specifico. Quindi la creazione di intelligenze artificiali più generali e simili ad un essere umano è ancora un'utopia, ma la ricerca scientifica sta puntando anche a questo ambizioso obiettivo.