Perché oggi devi imparare qualcosa sul deep learning

Siamo all’inizio di una nuova rivoluzione industriale: forse è il caso di capire a che cosa stiamo andando incontro

Internet
di Giulio Pons facebook 12 ottobre 2016 16:00
Perché oggi devi imparare qualcosa sul deep learning

deepdreams deep learning che cos'è  VentureBeat - Google - Un’immagine realizzata con DeepDream

 

Siamo all’inizio di una nuova rivoluzione industriale segnata dalla diffusione dell’Intelligenza Artificiale, una rivoluzione che è partita negli anni ’60, ma che dallo studio teorico all’applicazione pratica ha impiegato quasi sessant’anni per diffondersi, ma ora è ovunque.

È, per esempio, nei nostri smartphone quando utilizziamo Siri o Cortana o una qualunque funzione vocale di Android, è su Internet quando compriamo su Amazon o cerchiamo delle immagini, è nelle auto che si guidano da sole a cui stanno lavorando Google, BMW, Tesla e gli altri colossi. È una tecnologia che si sta diffondendo in tutti i settori, perché è – appunto – rivoluzionaria.

Per fare un esempio comune, adesso Google, solo dai pixel di un’immagine, riesce a riconoscere se una foto contiene un cane, sia esso un carlino, un chihuahua, un dobermann, escludendo gatti e lupi, riesce a farlo anche se il cane è preso di spalle, se è parzialmente coperto, se c’è la nebbia o se l’immagine è capovolta, ma com’è possibile? Come fanno i computer a vedere? Quando hanno aperto gli occhi?

Per capire questa “rivoluzione” ripercorriamo i passaggi che ci hanno portati a questo punto.

L’Intelligenza Artificiale, Artificial Intelligence o solo A.I. in inglese, è l’abilità dei computer di emulare la mente umana e nasce già negli anni ’60 con i primi computer. È un termine vago e generico che sembra mutuato più dalla fantascienza che dalla scienza.

Il motivo per cui spesso le cose informatiche etichettate come “intelligenti” si sono rivelate poi stupide è l’approccio procedurale dei loro software. Cioè il loro funzionamento si basa su una serie di comandi, tipo: “fai questo“, “se è così fai così“, “ripeti finché succede questo“. In un programma questa serie di comandi può diventare una catena lunghissima, con rimandi, elaborazioni, nuove istruzioni, calcoli statistici, analisi di dati provenienti da database, ma alla fine è un’intelligenza basata su un lungo elenco di comandi.

Questo approccio alla soluzione dei problemi diventa oltretutto molto difficile quando le variabili dei problemi da risolvere diventano segnali provenienti dal mondo reale, quindi complessi e difficili da incanalare e incasellare in un percorso precostituito. Un esempio tipico è quello dei comandi vocali: ci sono molti timbri di voce differenti, ci sono le intonazioni, si può parlare con un volume della voce più o meno alto, e così via. Con un software procedurale non è per nulla semplice capire un segnale vocale.

Negli anni ’70 si inizia a sviluppare, almeno a livello teorico, una branca dell’informatica denominata reti neurali, in cui l’analogia con il cervello umano è il punto di partenza. Dato che un bambino non ha bisogno della logica per capire se una persona gli stia facendo un sorriso, perché una macchina non può fare lo stesso? Il bambino solo grazie all’esperienza e agli inconsapevoli e naturali stimoli dei genitori impara a riconoscere la forma del sorriso, sia che glielo faccia la mamma sia che glielo faccia uno sconosciuto. Il cervello trova da sé il significato e le regole del sorriso. È, insomma, un apprendimento completamente guidato dall’esperienza. Lo stesso meccanismo di apprendimento avviene poi crescendo quando il bambino impara a fermarsi sentendo un “NO” perentorio mentre fa qualcosa di pericoloso. L’apprendimento del cervello umano è normalmente e naturalmente guidato dall’esperienza.

Nel software le reti neurali cercano di imitare questo apprendimento. Se nel cervello umano i neuroni sono cellule nervose collegate tra loro che reagiscono a stimoli trasmettendo impulsi elettrici e fortificando le connessioni utili, nel software si cerca di fare altrettanto e i “neuroni” diventano dei sistemi che analizzano pochi dati in ingresso e restituiscono un solo valore in uscita, di solito una probabilità.

Un neurone software può essere sollecitato con dei dati in ingresso conosciuti, di prova, per i quali il programmatore sa il risultato da ottenere e di conseguenza modifica i parametri del neurone per raggiungere quel preciso risultato. Provando una serie di casi noti (esperienza) si riesce a configurare il neurone in modo che risponda in modo corretto anche quando è chiamato ad analizzare dei dati nuovi, per i quali non si sa la risposta. Se si costruisce il neurone bene e se lo si addestra, il neurone può riconoscere uno schema e a seconda di qualunque input può dire per esempio “Sì è al 90% lo schema per cui sono configurato”. Oppure “No, lo è solo al 5%”.

Comunque con uno o due neuroni software non ci fai niente, proprio come col cervello umano, il bello si ottiene quando si usano molti neuroni. Il cervello umano secondo alcune stime ne contiene 100 miliardi.

L’informatica ha preso i modelli e le scoperte della neuroscienza e ne ha copiato il funzionamento nei software.

Dagli studi teorici si è passati poi alle applicazioni pratiche, ma ci si è scontrati fin da subito con grossi problemi di calcolo, perché per dare dei risultati interessanti è molto importante fare tanti test sui singoli neuroni e poi collegare i neuroni correttamente tra loro in modo da ottenere risultati di alto livello e poi testare di nuovo. Tutto ciò richiede una capacità di calcolo enorme e fino agli anni 2000 non c’era ancora.

Perciò c’è stato un momento, negli anni ’90, in cui lo studio teorico non poteva essere reso pratico con successo su larga scala: nei primi software per la dettatura vocale si doveva parlare piano e con voce impostata per riuscire a far scrivere al computer qualche parola giusta nel word processor, erano assolutamente inutilizzabili.

Ma negli stessi anni iniziavano ad arrivare anche degli esempi positivi di applicazioni delle reti neurali, tra questi vi erano i software OCR (Optical Character Recognition) per convertire i caratteri di una scansione in testi editabili. Il dott. Frankenstein Jr. avrebbe detto “Si può fare!”

I risultati attuali – prendete Siri di iPhone o la ricerca immagini di Google come esempi – sono frutto di un passo in avanti successivo, reso possibile da due fattori:  la maggiore potenza di calcolo dei microprocessori e la mole di dati utilizzabile.

deep-learning-significato-cosa-e

La potenza di calcolo ha reso possibile il computo di reti più complesse dette multilayer dove i risultati di un primo livello di neuroni vengono dati in ingresso ad altri livelli di neuroni in grado di analizzare i dati ad un livello più alto.

Per fare un  esempio, supponiamo che una rete neurale sia composta da tanti neuroni il cui compito di ciascuno di essi è riconoscere i bordi delle figure in una immagine, cioè di individuare le linee e quindi gli angoli. Alcuni angoli individuati da questi neuroni possono identificare (cioè possono avere dei parametri che identificano) il becco di un uccellino. Altri neuroni possono identificare la presenza di un tondo. Se presenza di becco e presenza di tondo sono vicini (e vicini vuol dire che c’è un parametro opportunamente configurato) allora nell’immagine potrebbe esserci un uccellino. Se i neuroni sono ben costruiti, se la rete tra di loro è ben fatta, se il sistema è ben addestrato si può ottenere un sistema che riconosce gli uccellini in una qualunque foto con una buona probabilità di azzeccarci.

Nell’addestramento delle rete ogni volta che il risultato è corretto si aggiustano all’indietro tutti i parametri dei neuroni coinvolti in questo caso positivo. In questo modo la macchina apprende.

Questa infografica spiega bene l’esempio del cane fatto all’inizio:

 

come-funzionano-reti-neurali-riconoscimento-immagini Fortune - Come funzionano le reti neurali nel riconoscimento delle immagini

Tra le migliorie tecnologiche che hanno permesso questa evoluzione va segnalata la comparsa, sul finire degli anni 2000, delle GPU cioè di grosse matrici di piccoli processori pensati per l’elaborazione delle immagini nelle schede video di Nvidia, una tecnologia nata per i videogiochi ma che si è poi scoperto essere velocissima nell’elaborazione delle reti neurali multilayer, meglio delle normali CPU.

Il secondo passaggio che ha decretato i successi e l’avvento definitivo del deep learning è la disponibilità dei dati grazie alla diffusione e alla crescita di Internet e dei servizi ad esso connessi. Infatti, adesso ci sono miliardi di immagini pronte, come dati di prova, sia marcate che non marcate, dati utili per far fare esperienza ai programmi, ci sono anni di centralini telefonici registrati per avere campioni audio di migliaia di voci diverse. Milioni di testi digitalizzati disponibili e chissà quanti altri dati da utilizzare!

I due settori in cui il deep learning si è evoluto di più sono la computer vision e il riconoscimento vocale.

La cosa che resta da fare con tanta potenza e tanti dati è insegnare alle macchine, cioè costruire le reti neurali e provarle e riprovarle migliaia, se non milioni di volte e tarare quindi tutti i neuroni della rete per le risposte positive e provare con nuovi casi, marked o not marked. Quest’attività è diventata quindi l’attività più onerosa, insegnare alle macchine i casi “giusti”, ma nel momento in cui al programma si dà in pasto migliaia di immagini di cani giuste, è il computer stesso che impara e trova i pattern che identificano il cane.

Abbiamo insegnato ai computer ad imparare.

Questa capacità fa pensare di essere arrivati alla temuta “Singolarità“, cioè il punto dell’evoluzione della razza umana in cui le macchine ci superano e possono procedere su una linea evolutiva indipendente, senza di noi. Tuttavia non è ancora così, perché se le macchine sono diventate brave come noi o più brave di noi a riconoscere degli schemi, non sono ancora in grado di ragionare e per qualche decina d’anni questa tecnologia sarà di supporto al lavoro e alla vita delle persone.

Insomma, per ora le macchine sono ancora dietro, ma stanno per mettersi di fianco.

Attualmente l’apprendimento delle reti neurali è stato per lo più supervisionato dall’uomo, nel senso che è il programmatore che dice alla macchina “sì, questo è giusto” e quindi le insegna a discernere gli schemi dei casi positivi da quelli negativi, ma la velocità di calcolo e i dati disponibili ci stanno portando velocemente a sistemi che autoapprendono da montagne di dati.

Ci sono già programmi di Google per la taggatura automatica delle immagini, potete provarli trascinando un’immagine nel browser qui e sono anche disponibili a tutti i programmatori. Ci sono anche sistemi sperimentali -sempre di Google- che non restituiscono solo keyword, ma in grado di scrivere delle vere e proprie frasi lunghe per ogni immagine.

Tornando al titolo, non ti è ancora chiaro perché è importante sapere cosa è il deep learning?

Perché è una rivoluzione paragonabile alla scoperta dell’elettricità, cambierà il modo di lavorare, cambierà le industrie, cambierà gli uffici. E’ una cosa su cui vale la pena investire, tempo, soldi e conoscenza. Se sei uno studente di ingegneria, di filosofia, di matematica, ma anche di medicina o di lettere, devi pensare che alcuni problemi, alcuni casi, alcuni lavori svolti adesso in un modo verranno stravolti dall’arrivo della tecnologia del deep learning.

Ecco un po’ di esempi. Un radiologo esamina nella sua vita migliaia di radiografie, con le quali acquisisce l’esperienza necessaria per dire se questa radiografia rappresenta un inizio di tumore oppure no. Se (per fortuna) il radiologo sbaglia un software che ha esaminato milioni (non migliaia) di radiografie del torace potrebbe essere in grado di dare un responso più preciso di quello del radiologo.

Se pensi di lavorare nel mondo dei trasporti, dal tassista, all’autotrasportatore o l’autista, conviene sapere dell’esistenza del deep learning perché tra pochi anni le auto potrebbero essere guidate anche da software addestrati a riconoscere i bordi della strada, i semafori, la segnaletica e gli ostacoli in movimento e con GPS e navigatore saranno sicuramente migliori degli umani.

Il deep learning (dopo averlo scritto tante volte il corsivo non serve più!) potrebbe essere utilizzato per costruire un nuovo software antispam e con milioni di mail di spam ogni giorno potrebbe essere addestrato per battere qualunque umano nel riconoscere una mail finta.

Se ti interessi di legge, arriverà un momento in cui le problematiche etiche dei software entreranno in gioco nel mondo reale e per questo i colossi dell’informatica si sono già uniti in un consorzio per capire come affrontarle.

Software che leggono potrebbero diventare più bravi di te a fare i riassunti, la rassegna stampa con analisi della reputazione del brand potrebbe venire fatta da un software.

Già adesso per chi traduce c’è un futuro abbastanza difficile perché i software di traduzione automatica negli ultimi dieci anni hanno quasi eguagliato le capacità degli esseri umani.

Il prossimo cellulare, forse, lo scieglierai in base alle capacità del suo assistente virtuale, non in base alle caratteristiche tecniche (più o meno tutte uguali) o alle app nello store.

Basta seguire qualche feed di tecnologia per rendersi conto che gli annunci in questo campo, le segnalazioni, i progetti di successo sono ormai all’ordine del giorno.

In ogni settore ci sono startup che stanno approfondendo l’uso del deep learning in un ambito ristretto per risolvere problemi specifici, e così, un po’ per volta, la rivoluzione sarà completa.

Vi raccomandiamo:

COSA NE PENSI? (Sii gentile)