TECH | 16 Nov 2017

Algoritmi di deep learning: cosa sono e come funzionano?

Reti di neuroni artificiali e modelli semplificati del cervello umano

Nella Guida galattica per autostoppisti, Douglas Adams ci parla di un supercomputer costruito con lo scopo di trovare la risposta alla domanda fondamentale sulla vita, l’universo e tutto quanto. Dopo sette milioni e mezzo di anni di elaborazioni, il computer fornisce la risposta: 42. Si deve quindi costruire un altro computer per capire quale sia la domanda fondamentale, ma questa è un’altra storia. Qui ci interessa ricordare il nome del computer che rispose 42: Pensiero Profondo (Deep Thought).

Quest’uso dell’aggettivo “deep” anticipa di una trentina d’anni il nome una classe di algoritmi di machine learning che sta mietendo successi straordinari, e che utilizziamo sempre più spesso, tipicamente senza saperlo: i cosiddetti algoritmi di “apprendimento profondo”, deep learning.

Perché sono importanti gli algoritmi di apprendimento profondo? E di cosa si tratta?

Sicuramente il deep learning rappresenta oggi lo strumento più potente e versatile nelle mani di data scientist e aziende che intendano aggiungere soluzioni intelligenti alle loro applicazioni, o soddisfare esigenze un tempo letteralmente fantascientifiche.

Come esempi di applicazioni possiamo citare: il riconoscimento di immagini, in particolare applicato alla medicina con risultati che superano l’occhio di esperti umani nel riconoscere malattie degenerative a partire da immagini diagnostiche; il riconoscimento e la generazione di testi; la traduzione di immagini in testi, vale a dire il riconoscimento di un testo all’interno di una immagine e la sua estrazione, per esempio la targa di una automobile; il riconoscimento e la comprensione di conversazioni audio, etc.

Sui social siamo esposti quotidianamente al deep learning: quando traduciamo un testo dall’arabo al cinese con Google Translator, o riconosciamo volti nelle fotografie che abbiamo caricato su Facebook (con il tool DeepFace la cui percentuale di errore è del 3% a fronte del 4% di un essere umano), o ci vengono consigliati dei tweet interessanti prendendo spunto dai nostri like e retweet, o riceviamo suggerimenti pubblicitari sulla base dei nostri gusti desunti dai post di Facebook (con il tool DeepText che serve a questo scopo).

Gli utenti di questi sistemi sono milioni, miliardi: siamo tutti noi. E proprio qui sta il bello, cioè che queste tecniche sono tanto più precise quanti più dati possono “ruminare”: navigando, cliccando e utilizzando i nostri ormai inseparabili dispositivi tutto il giorno, e spesso anche la notte, forniamo un flusso di dati inimmaginabile, che rende sempre più precisi gli algoritmi che le utilizzano, in un circolo vizioso e bulimico di dati e informazioni.

Ma la pletora di applicazioni e prospettive dispiegate dall’utilizzo di queste tecniche, sempre più facilmente accessibili e integrabili nelle applicazioni tradizionali, va ben al di là dell’uso che ne fanno i “colossi” dell’industria IT.

Proviamo ora a capire cosa sia effettivamente il deep learning: perché deep? Perché learning?

Si tratta in realtà di reti neurali, cioè di modelli semplificati del cervello umano, che consistono in un insieme di “neuroni artificiali”, ciascuno dei quali memorizza un numero, e ciascuno dei quali è connesso ad altri neuroni della rete.

Tipicamente questi neuroni si dispongono su degli strati (layer), che possiamo pensare come ai piani di un edificio, in cui i neuroni sono le stanze su ciascun piano, ma stanze un po’ particolari, che non hanno porte né finestre, ma solo botole sul pavimento o sul soffitto: infatti, ogni strato contiene neuroni non connessi fra loro ma che possono essere connessi ai neuroni dello strato precedente e dello strato successivo.

Insomma, in questo palazzo in cui si può solo salire e scendere da un piano all’altro ma non muoversi da una stanza all’altra di uno stesso piano.

Una rete con 9 neuroni e 3 layer: sul layer di input ci sono 3 neuroni, sul layer interno ce ne sono 4 e sul layer di output ce ne sono 2.

Il palazzo ha un tetto, l’input della rete, e un piano terra, l’output della rete: i neuroni dello strato di input vengono alimentati con dei dati, per esempio volantini lanciati sul tetto, e sono analoghi alle terminazioni nervose di un organo sensoriale, mentre i numeri memorizzati nei neuroni dello strato di output convogliano all’esterno l’informazione elaborata dalla rete.

Il processo di “apprendimento” della rete è iterativo: a partire dall’input, la rete elabora, secondo un certo algoritmo, i numeri contenuti nei propri neuroni, propagando l’informazione da uno strato al successivo (scendendo ogni volta di un piano), e utilizzando gli output per produrre nuovi input, autoalimentandosi in modo ricorrente.

Una rete è “profonda”  se possiede numerosi strati interni, anche decine, ciascuno popolato da centinaia, o anche migliaia, di neuroni, connessi fra loro anche con milioni di collegamenti.

Il deep learning sta alle reti neurali tradizionali come i grattacieli stanno ai normali condomini.

Inoltre gli algoritmi che governano queste reti profonde sono più sofisticati: in alcuni si può sia salire che scendere di piano (reti ricorrenti), altri si ispirano al funzionamento dell’occhio umano per “scandire” i flussi di dati secondo regole matematiche (reti convolutive).

Non saranno in grado di trovare la risposta alla domanda fondamentale sulla vita, l’universo e tutto quanto ma questi pensieri profondi, che ormai pervadono il mercato IT, costituiscono una tecnologia consolidata e pervasiva, con la quale chi produce e consuma software dovrà sempre più spesso fare i conti.


Paolo Caressa