Nel cervello umano miliardi di neuroni sono uniti tra loro attraverso le sinapsi. La rete neurale che fa viaggiare le informazioni attraverso impulsi elettrici e chimici consente al cervello di elaborare informazioni, apprendere da esperienze passate e rispondere a nuovi stimoli.
Le reti neurali artificiali (ANN) sono modelli di apprendimento automatico che si ispirano ai meccanismi cerebrali. I neuroni artificiali sono organizzati in unità di calcolo interconnesse a strati e con un “peso” differente. Nelle reti neurali artificiali l’apprendimento avviene tramite l’aggiustamento dei pesi, in modo da migliorare la capacità della rete di compiere una specifica attività, come la classificazione di dati, la generazione di testo, la regressione e così via. Per regressione si intende un modello statistico utile a predire o stimare il valore di una variabile dipendente basandosi sui valori di una o più variabili indipendenti. La sfida è insomma stabilire come una variabile sia correlata a un’altra variabile o ne influenzi l’andamento.
Cosa sono le reti neurali convoluzionali (CNN)
Le reti neurali artificiali possono avere diverse architetture e topologie. Le reti neurali convoluzionali (CNN, Convolutional Neural Networks) sono un tipo specifico di rete neurale artificiale progettato per il riconoscimento di pattern in dati bidimensionali, come le immagini.
Come funziona e a cosa serve il riconoscimento di pattern
Il riconoscimento di pattern consiste nella capacità di identificare “regolarità”, strutture o tendenze in insiemi di dati complessi. L’obiettivo principale è quello di individuare dei modelli nei dati: possono essere visivi nelle immagini, sonori nei segnali audio, statistici in un set dati numerici e così via.
Questa tecnica è ampiamente sfruttata in molteplici campi, tra cui la visione artificiale (riconoscimento degli oggetti nelle immagini), il riconoscimento del linguaggio naturale (comprensione del testo), l’elaborazione dei segnali (riconoscimento di modelli nei segnali audio), la medicina (diagnosi medica basata su immagini o dati clinici) e molto altro ancora.
I processi di convoluzione, pooling e addestramento
Le reti neurali convoluzionali cercano di emulare i meccanismi di elaborazione cerebrali mediante l’uso di “filtri” o “kernel” che rilevano caratteristiche simili nelle immagini. Il processo di convoluzione prevede l’applicazione di filtri sulle diverse regioni di un’immagine per estrarre caratteristiche significative. L’attività è normalmente svolta in più strati per passare, alla fine, al pooling: esso riduce la dimensione dell’immagine risultante pur conservando le caratteristiche più importanti.
Dopo uno o più strati di convoluzione e pooling, le CNN solitamente contengono uno o più strati completamente connessi, simili agli strati delle reti neurali artificiali tradizionali. I vari strati utilizzano le caratteristiche estratte dalle fasi precedenti e le utilizzano per effettuare decisioni complesse, come la classificazione delle immagini. La fase di addestramento fa sì che la rete neurale stabilisca autonomamente quali sono le caratteristiche importanti delle immagini.
Le principali differenze tra reti neurali artificiali di tipo tradizionale e reti neurali convoluzionali
Nelle reti neurali artificiali di tipo tradizionale ogni neurone neurone di uno strato è connesso a tutti i neuroni dello strato successivo. Questo schema è adatto per gestire dati tabulari o a sequenze, ma non tiene conto della struttura spaziale nei dati bidimensionali come le immagini. Viceversa le CNN sono abili a “catturare” a queste informazioni riconoscendo caratteristiche come linee, curve e texture. Inoltre, mentre le ANN tradizionali necessitano di un set di caratteristiche manualmente estratto dall’input, le CNN si autoalimentano.
Se le ANN sono utilizzate per il riconoscimento vocale, il trattamento del linguaggio naturale, la classificazione di dati tabulari; le CNN eccellono nel riconoscimento di oggetti, nella segmentazione di immagini e nelle altre attività legate alla visione artificiale.
Capire il funzionamento delle reti neurali convoluzionali con un’animazione
Quelli descritti non sono concetti propriamente semplici. Così, gli autori del progetto Animated AI hanno deciso di pubblicare su GitHub delle splendide animazioni che spiegano il funzionamento delle CNN.
Le grafiche mostrano l’operazione di base della convoluzione, il processo chiamato “padding” (risolve il problema di ridurre la dimensione dei dati di output dopo la convoluzione) e il cosiddetto “stride” ossia la modalità con cui il filtro si muove sopra l’immagine. Il video YouTube di accompagnamento è eccellente perché funge da trait d’union: non si concentra sui calcoli bensì sui concetti fondamentali delle CNN.
Il cubo posizionato nella parte superiore dell’animazione contiene i dati di input. Essi sono divisi in una griglia: d’altra parte, l’input di una CNN è un’immagine ovvero una matrice di valori corrispondenti a ogni singolo pixel che occupa un precisa posizione nell’immagine stessa.
Le caratteristiche di un’immagine RGB
In un’immagine RGB (rosso, verde, blu) le intensità di ciascuno dei tre colori primari sono rappresentate con matrici separate. Ogni matrice rappresenta l’intensità del rispettivo colore in ciascun pixel che compone l’immagine. Ad esempio, se si ha un’immagine di dimensioni 100×100 pixel, si hanno tre matrici, ciascuna di dimensione pari a 100×100 pixel, per rappresentare l’intensità del rosso, del verde e del blu in ogni punto dell’immagine. Se un’immagine in scala di grigi ha solo due dimensioni (altezza e larghezza), un’immagine RGB avrà tre dimensioni (altezza, larghezza e profondità).
Convoluzione e utilizzo di strati più profondi
Ponendo il cubo dinanzi al filtro, la CNN ritaglia una parte dei dati di input (ad esempio, un intervallo 3 x 3) ed esegue un’operazione che semplifica il riconoscimento delle caratteristiche di ciascun pixel. La convoluzione applica il prodotto scalare tra il filtro e la matrice corrispondente dell’input. Il filtro contiene uno specifico pattern mentre l’output esprime quanto l’input rispecchia quello specifico pattern.
Uno “strato superficiale” della CNN può andare alla ricerca di un particolare colore, di una linea, di una curva; gli strati più profondi possono ad esempio individuare le fattezze di un cane, del muso di un cane o di un viso umano, ad esempio quello di una persona specifica. Dopo aver esaminato un intervallo di forma quadrata si passa al successivo, fino ad aver analizzato tutta la struttura bidimensionale fornita in input. L’intervallo con cui si muove il filtro è chiamato “stride“.