J.A.R.V.I.S

Reti Neurali Artificiali e Deep Learning? Spieghiamoli con i gattini

[Arte e IA, episodio 7]
Hai già letto gli altri episodi? Ripercorri la storia dell'IA.

Le reti neurali artificiali (ANN, Artificial Neural Network) hanno ormai un impiego quotidiano. Sono alla base di macchine in grado di apprendere sfruttando meccanismi simili a quelli dell’intelligenza umana, quindi attraverso l’apprendimento esperenziale.

ANN a immagine e somiglianza del cervello umano

Le reti neurali artificiali si ispirano a quelle biologiche. Le reti neurali del cervello umano sono la sede della nostra capacità di comprendere ciò che ci circonda e di fornire, quindi, risposte adattive calibrate sulle esigenze che si presentano. Un singolo neurone può ricevere simultaneamente segnali da diverse sinapsi, misurarne il potenziale elettrico e decidere se generare a sua volta un impulso nervoso (in base al superamento di una “soglia di attivazione”). Tale proprietà è implementata anche nelle reti artificiali.

La configurazione sinaptica all’interno di ogni rete neurale biologica è dinamica. Si tratta di un fattore determinante per la loro efficienza. Il numero di sinapsi può incrementare o diminuire a seconda degli stimoli che riceve la rete. Più sono numerosi, maggiori connessioni sinaptiche vengono create, e viceversa. In questo modo, la risposta adattiva fornita dai circuiti neurali è più calibrata, e anche questa è una peculiarità implementata nelle reti neurali artificiali.

Nelle reti artificiali ovviamente il processo di apprendimento automatico è semplificato rispetto a quello delle reti biologiche. Non abbiamo analoghi dei neurotrasmettitori, ma lo schema di funzionamento è simile: i nodi ricevono dati in input, li processano e sono in grado di inviare le informazioni ad altri neuroni. Attraverso molti cicli di input-elaborazione-output, in cui gli input presentati variano, le reti diventano in grado di generalizzare e fornire output corretti associati ad input non facenti parte del set di dati con cui sono state addestrate. I pesi sinaptici (un peso indica la forza di una connessione fra due nodi) sono dinamici.



Semplice rete neurale.
Credits: https://commons.wikimedia.org/

Gli algoritmi di apprendimento (machine learning) utilizzati per istruire le reti neurali sono divisi in 3 categorie. La scelta di quale usare dipende dal campo di applicazione per cui la rete è progettata e dalla sua tipologia (feedforward o feedback, per un approfondimento rimando qui). Gli algoritmi si dividono in: supervisionato, non supervisionato, di rinforzo.

Nell’apprendimento supervisionato si fornisce alla rete un insieme di input (training set) ai quali corrispondono output noti. Analizzandoli, la rete apprende il nesso che li unisce. In tal modo impara a generalizzare, ossia a calcolare nuove associazioni corrette input-output processando input esterni al training set. Man mano che la macchina elabora output, si procede a correggerla per migliorarne le risposte variando i pesi relativi alle connessioni tra nodi.

In una rete neurale ad apprendimento non supervisionato, essa riceve solo un insieme di variabili di input. Analizzandole, la rete deve creare dei cluster rappresentativi per categorizzarle. Anche in questo caso i valori dei pesi sono dinamici, ma sono i nodi stessi a modificarli.

Nelle reti neurali che apprendono mediante l’algoritmo di rinforzo, non esistono né associazioni input-output di esempi, né un aggiustamento esplicito degli output da ottimizzare. Dato un risultato da ottenere, è considerato rinforzo l’azione che avvicina al risultato; al contrario, la rete impara a eliminare le azioni negative, che la allontanano dall’output desiderato. Detto in altri termini, un algoritmo di apprendimento per rinforzo mira a indirizzare la rete neurale verso il risultato sperato con una politica di incentivi (azioni positive) e disincentivi (azioni negative).

Deep Learning: come insegnare a una macchina a riconoscere un gattino

Per riuscire a comprendere meglio il deep learning (che altro non è che un machine learning con più di due “livelli di astrazione”, indicati nella figura precedente della rete neurale come “strato nascosto”), può essere utile capire il seguente esempio che riporta il sito di The Verge.

La rete riconosce se il soggetto è un gatto grazie al deep learning.
Credits: https://silicon.software/en/solutions/deep-learning/fpga-deep-learning

Supponi di voler creare un programma in grado di riconoscere i gatti. Potresti provare a farlo alla vecchia maniera programmando regole esplicite come “i gatti hanno le orecchie a punta” e “i gatti sono pelosi”. Ma cosa farebbe il programma se gli mostrassi un’immagine di una tigre?

Programmare ogni regola necessaria richiederebbe molto tempo e dovresti definire ogni sorta di concetto difficile lungo il percorso, come quello di “pelosità”. Meglio lasciare che la macchina si auto-insegni e apprenda da sola.

Quindi, gli dai una vasta collezione di foto di gatti, essa le analizza per trovare dei pattern che riesce a riconoscere. La macchina inizialmente collega i punti dell’immagine in modo quasi casuale, ma, test dopo test, l’addestratore mantiene l’output migliore e scarta i peggiori. Con il tempo, la rete neurale diventa abbastanza brava a dire cosa è e cosa non è un gatto (la macchina ipotizza una percentuale di probabilità che il soggetto dell’immagine sia un gatto).

Perchè vi ho parlato di questi aspetti dell’IA? Perchè vi aspetto qua la prossima settimana: vi parlerò di GAN (un sistema di reti neurali utile alla creazione autonoma di immagini “verosimili”), un passo importantissimo nella storia dell’IA, sia in termini generali (è applicata in moltissimi ambiti) che in termini artistici (pensate che è nato un movimento artistico chiamato “GAN Art”).

Ti potrebbe interessare: 

DEEP-Dig ed il deep learning per la sicurezza informatica

Il Deep Learning imita gli amplificatori per chitarra

Published by
Roberto Balestri