L’apprendimento profondo
Abbiamo visto in questo articolo i processi di apprendimento supervisionato, non supervisionato e per rinforzo che esistono dagli anni ’50, l’apprendimento profondo è un approccio etichettabile come nuovo. Tramite esso, le macchine sono in grado di valutare le previsioni sbagliate, che devono essere conosciute dal sistema, analizzate, capite e corrette.
Durante il processo di inizializzazione di queste reti neurali i valori degli array costituenti i pesi vengono assegnati in maniera casuale, per poi essere aggiustati man mano che la macchina apprende al fine di rendere la predizione successiva più precisa della precedente. Una volta che l'input è stato analizzato, le reti neurali estraggono le sue proprietà caratterizzanti automaticamente, rimuovendo l'intervento umano.
La potenza computazionale è di primaria importanza per una rete neurale, e solo negli ultimi anni si è arrivato all'utilizzo delle schede grafiche, che vengono sfruttate in parallelo per accelerare in maniera notevole il processo di predizione dell'output.
Il nuovo approccio legato all’apprendimento profondo rende le reti neurali più generaliste e meno mirate, quindi applicabili su una svariata tipologia di contesti: dall'intelligenza artificiale al riconoscimento vocale, dalle identificazioni legate all'audio, Shazam per esempio, alle auto a guida autonoma.
Rete neurale semplice (a sinistra) a confronto con una rete neurale che usa l'apprendimento profondo (a destra). Fonte: Quora
Le informazioni possono essere generalizzate con la convoluzione.
Questa tecnica permette di miscelare due pezzi distinti di un’informazione scomponendoli nelle loro singole unità e rappresentandoli in una matrice. Questa operazione, che richiederebbe un numero di calcoli elevatissimo, viene semplificata dalla trasformata di Fourier, che trasforma, per esempio, un’operazione di integrazione in una moltiplicazione.
Convoluzione di un immagine con un kernel di convoluzione. Fonte: 1,2.
All’atto pratico, la convoluzione può descrivere la diffusione dell'informazione, ovvero il metodo con cui questa si propaga. Nello specifico, nell’apprendimento profondo le maschere di convoluzione sono degli strumenti che ci permettono di comprendere i dettagli di un'immagine, come quanto rosso c'è, quante e quali sono le fonti di luce o com'è il rapporto di contrasto. Se prendiamo un'immagine di input e ad essa applichiamo una determinata maschera di convoluzione, potremmo ottenere un'immagine risultate in cui la funzionalità che vogliamo analizzare viene isolata: se vogliamo capire dove sono i punti più scuri in una foto, allora avremmo una mappa risultante dei toni scuri.
Il pooling è un'altra delle procedure cardine che le schede grafiche inserite all'interno di una rete neurale convoluzionale devono saper portare a termine. Essa è un'operazione che, molto semplicemente, prende in ingresso una serie di input e li riduce ad un singolo valore, analogamente all'operazione di subsampling effettuata dall' antialiasing, che isola quattro sotto pixel e li riduce ad uno solo effettuando una media. Così facendo, si possono semplificare alcune caratteristiche della nostra immagine, per meglio adattarle al calcolo convoluzionale. Per esempio, se una determinata foto è troppo ricca di dettagli e la computazione è di conseguenza eccessivamente onerosa, si possono appiattire le informazioni ed effettuare comunque l'applicazione della maschera di convoluzione, senza infierire sulle prestazioni.
Architettura di convoluzione LeNet 5. Fonte: ResearchGate
C'è un limite comunque, nel caso di una foto, al numero di pixel massimo che si possono generalizzare: chiaramente, più questo buffer è largo e più informazioni si possono condensare; se è troppo grosso però, si generalizzano troppe informazioni contemporaneamente e viene persa una grossa porzione di dati.
Matteo Pazienza








