Fondamenti di IA
Che cosa sono le CNN (Convolutional Neural Network)?
Forse ti sei chiesto come Facebook (META ) o Instagram riescano a riconoscere automaticamente i volti in un’immagine, o come Google (GOOGL ) ti permetta di cercare foto simili sul web semplicemente caricando una tua foto. Queste funzionalità sono esempi di visione artificiale e sono alimentate da reti neurali convolutive (CNN). Eppure, cosa sono esattamente le reti neurali convolutive? Facciamo un’analisi approfondita dell’architettura di una CNN e capiamo come funzionano.
Che cosa sono le Reti Neurali?
Prima di iniziare a parlare di reti neurali convolutive, prendiamo un momento per definire le reti neurali regolari. C’è un altro articolo sul tema delle reti neurali disponibile, quindi non ci addentreremo troppo nel dettaglio. Tuttavia, per definirle brevemente, sono modelli computazionali ispirati al cervello umano. Una rete neurale funziona prendendo in ingresso dei dati e manipolandoli regolando i “pesi”, che sono ipotesi su come le caratteristiche di ingresso sono correlate tra loro e alla classe dell’oggetto. Mentre la rete viene addestrata, i valori dei pesi vengono regolati e speriamo che convergano su pesi che catturano accuratamente le relazioni tra le caratteristiche.
Questo è il modo in cui funziona una rete neurale feed-forward, e le CNN sono composte da due parti: una rete neurale feed-forward e un gruppo di layer convolativi.
Che cosa sono le Reti Neurali Convolutive (CNN)?
Cosa sono le “convoluzioni” che avvengono in una rete neurale convolutiva? Una convoluzione è un’operazione matematica che crea un insieme di pesi, creando essenzialmente una rappresentazione di parti dell’immagine. Questo insieme di pesi è chiamato kernel o filtro. Il filtro creato è più piccolo dell’intera immagine di ingresso, coprendo solo una sezione dell’immagine. I valori nel filtro vengono moltiplicati con i valori nell’immagine. Il filtro viene quindi spostato per formare una rappresentazione di una nuova parte dell’immagine, e il processo viene ripetuto fino a quando l’intera immagine non è stata coperta.
Un altro modo per pensare a questo è immaginare un muro di mattoni, con i mattoni che rappresentano i pixel dell’immagine di ingresso. Una “finestra” viene fatta scorrere avanti e indietro lungo il muro, che è il filtro. I mattoni visibili attraverso la finestra sono i pixel che hanno il loro valore moltiplicato per i valori all’interno del filtro. Per questo motivo, questo metodo di creazione di pesi con un filtro è spesso chiamato la tecnica “finestre scorrevoli”.
L’output dai filtri che vengono mossi intorno all’intera immagine di ingresso è una matrice bidimensionale che rappresenta l’intera immagine. Questa matrice è chiamata “mappa di caratteristiche”.
Perché le Convoluzioni sono Essenziali
Qual è lo scopo della creazione di convoluzioni? Le convoluzioni sono necessarie perché una rete neurale deve essere in grado di interpretare i pixel in un’immagine come valori numerici. La funzione dei layer convolativi è quella di convertire l’immagine in valori numerici che la rete neurale possa interpretare e quindi estrarre pattern rilevanti. Il lavoro dei filtri nella rete convolutiva è quello di creare una matrice bidimensionale di valori che può essere passata ai layer successivi della rete neurale, quelli che impareranno i pattern nell’immagine.
Filtri e Canali

Foto: cecebur via Wikimedia Commons, CC BY SA 4.0 (https://commons.wikimedia.org/wiki/File:Convolutional_Neural_Network_NeuralNetworkFeatureLayers.gif)
Le CNN non utilizzano un solo filtro per imparare pattern dalle immagini di ingresso. Vengono utilizzati più filtri, poiché le diverse matrici create dai diversi filtri portano a una rappresentazione più complessa e ricca dell’immagine di ingresso. I numeri comuni di filtri per le CNN sono 32, 64, 128 e 512. Più filtri ci sono, più opportunità ha la CNN di esaminare i dati di ingresso e imparare da essi.
Una CNN analizza le differenze nei valori dei pixel per determinare i bordi degli oggetti. In un’immagine in scala di grigi, la CNN considererebbe solo le differenze tra nero e bianco, luce e buio. Quando le immagini sono immagini a colori, non solo la CNN prende in considerazione il buio e la luce, ma deve anche prendere in considerazione i tre canali di colore diversi – rosso, verde e blu. In questo caso, i filtri possiedono 3 canali, proprio come l’immagine stessa. Il numero di canali che un filtro ha è chiamato profondità, e il numero di canali nel filtro deve corrispondere al numero di canali nell’immagine.
Architettura della Rete Neurale Convolutiva (CNN)
Facciamo un’analisi dell’architettura completa di una rete neurale convolutiva. Un layer convolutivo si trova all’inizio di ogni rete convolutiva, poiché è necessario trasformare i dati dell’immagine in matrici numeriche. Tuttavia, i layer convolutivi possono anche seguire altri layer convolutivi, il che significa che questi layer possono essere impilati uno sull’altro. Avere più layer convolutivi significa che le uscite da un layer possono subire ulteriori convoluzioni e essere raggruppate in pattern rilevanti. In pratica, ciò significa che mentre i dati dell’immagine procedono attraverso i layer convolutivi, la rete inizia a “riconoscere” caratteristiche più complesse dell’immagine.
I layer iniziali di una ConvNet sono responsabili dell’estrazione delle caratteristiche di basso livello, come i pixel che compongono linee semplici. I layer successivi della ConvNet uniranno queste linee in forme. Questo processo di passaggio dall’analisi di superficie all’analisi di livello profondo continua fino a quando la ConvNet non riconosce forme complesse come animali, volti umani e auto.
Dopo che i dati sono passati attraverso tutti i layer convolutivi, procedono nella parte connessa densamente della CNN. I layer connessi densamente sono quelli che una rete neurale feed-forward tradizionale sembra, una serie di nodi disposti in layer che sono connessi tra loro. I dati procedono attraverso questi layer connessi densamente, che imparano i pattern estratti dai layer convolutivi, e in tal modo la rete diventa in grado di riconoscere oggetti.












