Deep Learning svelato: ecco come funzionano le Reti Neurali Artificiali

D

C’è tanto rumore intorno ai termini Reti Neurali Artificiali (dall’inglese Artificial Neural Network — ANN) e l’apprendimento profondo (dall’inglese Deep Learning, meglio chiamarlo così).

Scrivo questo breve post giusto per farti capire che, in fondo, tutto questo rumore è ben giustificato!

L’intelligenza artificiale sta avanzato in maniera esponenziale, trainata dai progressi nel machine learning che a loro volta derivano per gran parte da un’unica tipologia di modelli: le reti neurali artificiali.
Rappresentazione della relazione tra Intelligenza Artificiale, Machine Learning e Deep Learning
Una rete neurale artificiale è un modello di machine learning che si ispira al funzionamento del cervello animale, quello che abbiamo anche noi mammiferi intelligenti all’interno della nostra scatola cranica, che può essere utilizzato per risolvere essenzialmente tre tipi di problemi:
  • Classificazione: in cui la variabile da prevedere è di tipo categorico, cioè una classe (es. abbiamo un insieme di immagini di gatti e le vogliamo usare per riconoscere i gatti in altre foto)
  • Regressione: in cui la variabile da prevedere è di tipo continuo, cioè un numero (es. abbiamo lo storico del valore di FIAT in borsa e vogliamo utilizzarlo per prevedere il valore futuro)
  • Clustering: problema molto simile alla classificazione ma in cui non abbiamo a disposizione delle classi (es. abbiamo un insieme di immagini di tumori, vogliamo riconoscere quali sono maligni e quali benigni)
Se non sai ancora cosa è il machine learning leggi questo articolo prima di andare avanti.
Migliore rappresentazione della relazione tra Intelligenza Artificiale, Machine Learning e Deep Learning

Come apprende il cervello

Il cervello è composto da centinaia di miliardi di cellule nervose, i neuroni.

Ogni volta che il cervello riceve uno stimolo sensoriale un gruppo di neuroni riceve un segnale, chiamato potenziale d’azione, se il potenziale di azione è abbastanza forte viene propagato ai neuroni vicini tramite dei canali chiamati sinapsi.

Un neurone riceve un segnale chimico da un altro neurone tramite i recettori posti sui dendriti, il segnale viene convertito in un impulso elettrico e scorre lungo l’assone, se quest’impulso è sufficentemente forte viene riconvertito in un segnale chimico e inviato al successivo neurone tramite le sinapsi.

 

Questo processo si ripete a cascata, neuroni attivano altri neuroni, fino a quando il segnale si esaurisce.

I neuroni che si attivano insieme si legano insieme, questo è il concetto alla base dell’apprendimento (apprendimento hebbiano), così i neuroni si uniscono in complessi reticoli che sono proprio le reti neurali, la sede di tutta la nostra conoscenza.

Un’approccio biologico al machine learning

Le reti neurali artificiali utilizzano lo stesso approccio per permettere alle macchine di apprendere dai dati, cercando relazioni tra di essi e raggiungendo livelli di astrazione sempre più profondi.

Una rete neurale artificiale composta da un unico strato nascosto con un unico neurone, X1, X2 e X3 corrispondono alle proprietà del dataset e Y corrisponde all’output

 

All’interno di una rete neurale artificiale i neuroni sono disposti su più strati:

  • Uno strato di input: che prende in ingresso i dati, ogni neurone di questo strato rappresenta una proprietà del dataset
  • Uno strato di output: che fornisce il risultato della rete neurale
  • Uno o più strati nascosti: che si trovano tra lo strato di input e quello di output.

Il compito degli strati nascosti è di utilizzare le proprietà (features) del dataset per apprendere nuove proprietà.

Solitamente prima della fase di creazione di un modello di machine learning, il dataset viene analizzato e manipolato per estrarre proprietà significative da quelle di cui già si dispone. Questo processo prende il nome di feature extraction e ha un ruolo fondamentale per la creazione di un modello di machine learning robusto.

Una rete neurale artificiale automatizza il processo di feature extraction all’interno di ogni strato nascosto, per questo motivo le reti neurali artificiali sono definite modelli end-to-end, appunto perché prendono come input i dati grezzi del dataset per svolgere attività come classificazione, regressione o clustering.

  • Una rete neurale composta da uno strato nascosto con 4 neuroni, ogni neurone riceve in input le features e le utilizza per creare nuove features

Una rete è definita “profonda” (dall’inglese deep) quando contiene due o più strati nascosti, in questi casi la rete utilizzerà le proprietà apprese in uno strato nascosto per apprendere ulteriori nuove proprietà ancora più significative nello strato successivo, fino a utilizzarle per eseguire classificazione, regressione o clustering nello strato di output.

Una rete neurale è definita “profonda” quando contiene due o più strati nascosti

La performance di un modello di machine learning, intesa come precisione o errore, tende a convergere a un valore massimo, al contrario i modelli basati sul deep learning non hanno questa limitazione e migliorano gradualmente all’aumentare del numero di dati disponibili per l’addestramento, proprio grazie alla loro capacità di astrazione e di apprendere nuove proprietà dai dati.

Istruire una rete neurale artificiale

Le reti neurali artificiali non sono una novità, infatti sono conosciute da più di mezzo secolo, ma sono rimaste chiuse in un cassetto a causa dell’assenza di un metodo efficace ed efficiente per addestrarle.

Questo è durato fino al 1986, anno in cui Jeff Hinton insieme a David Rumelhart e Ronald J. Williams proposero in questo paper l’utilizzo dell’algoritmo della Retropropagazione (dall’inglese Backpropagation) che ha stabilito la nascita di quello che oggi è il Deep Learning,  ovvero l’insieme di metodi utilizzati per addestrare una rete neurale artificiale profonda.

La Backpropagation è un algoritmo affascinante quanto complesso, se vuoi capirne il funzionamento a fondo assicurati prima di avere una scorta di Aulin

Ancora oggi, a più di 30 anni di distanza, la Retropropagazione è l’algoritmo più importante del deep learning, grazie Jeff!

Breve spiegazione della Backprogation tratta da qui

Quando usare il Deep Learning

A differenza di quanto potresti pensare, le reti neurali non sono sempre la soluzione migliore, per due motivi in particolare:

  1. Per essere addestrate richiedono molti, molti (molti) dati, almeno nell’ordine di migliaia.
  2. Sono computazionalmente davvero dispendiose e spesso per completare l’addestramento in tempi umani è necessario parallelizzare il lavoro su di un cluster di GPU. 

Inoltre per molti tipi di problemi relativamente semplici l’intervento di un modello basato sulle reti neurali non è neanche necessario, ma è possibile ottenere ottimi risultati con modelli meno complessi.

Usare il Deep Learning sull’Iris Dataset equivale a usare un lanciafiamme per uccidere una zanzara

 

Deep Learning nella vita reale

I sistemi di computer vision odierni sono in grado di riconoscere persone, animali e oggetti con una precisione che è addirittura maggiore di quella dell’uomo, questi sistemi usano il Deep Learning.

Le tecnologie di riconoscimento del parlato di Siri, Alexa e Cortana stanno pian piano raggiungendo lo stato dell’arte, queste tecnologie usano il Deep Learning.

Nel 2015 AlphaGo è riuscito a battere il campione mondiale di Go Lee Sedol in una partita ufficiale, secondo gli esperti un risultato del genere non sarebbe dovuto arrivare prima di un altro decennio. AlphaGo usa il Deep Learning.

Google è in assoluto la società che più si serve del Deep Learning e che sta maggiormente contribuendo al suo sviluppo, infatti la maggior parte dei servizi di Google, partendo da Search e passando per Gmail e Translate, utilizzano in un modo o nell’altro le reti neurali artificial e questo ha fortemente inciso sul suo successo su scala globale.


Questo articolo è stato originariamente pubblicato sul blog di ProfessionAI, la prima piattaforma italiana per la formazione online nelle varie discipline legate all’Intelligenza Artificiale, come machine learning, deep learning e data science. Iscriviti alla nostra newsletter per restare aggiornato.

A proposito di me

Giuseppe Gullo

Programmatore, imprenditore e investitore, ho cominciato a programmare a 13 anni e appena maggiorenne mi sono avvicinato all'intelligenza artificiale. Ho creato diverse dozzine di servizi web e mobile raggiungendo centinaia di migliaia di persone in tutto il mondo.
Il mio life goal è utilizzare le potenzialità dell'intelligenza artificiale per migliorare la condizione di vita delle persone.

Di Giuseppe Gullo

Gli articoli più letti

Articoli recenti

Commenti recenti