Nozioni di base sulla rete neurale convoluzionale: cosa devi sapere
Pubblicato: 2024-09-10Le reti neurali convoluzionali (CNN) sono strumenti fondamentali nell'analisi dei dati e nell'apprendimento automatico (ML). Questa guida spiega come funzionano le CNN, come differiscono dalle altre reti neurali, le loro applicazioni e i vantaggi e gli svantaggi associati al loro utilizzo.
Sommario
- Cos'è una CNN?
- Come funzionano le CNN
- CNN contro RNN e trasformatori
- Applicazioni delle CNN
- Vantaggi
- Svantaggi
Cos'è una rete neurale convoluzionale?
Una rete neurale convoluzionale (CNN) è una rete neurale parte integrante del deep learning, progettata per elaborare e analizzare dati spaziali. Impiega livelli convoluzionali con filtri per rilevare e apprendere automaticamente caratteristiche importanti all'interno dell'input, rendendolo particolarmente efficace per attività come il riconoscimento di immagini e video.
Analizziamo un po' questa definizione. I dati spaziali sono dati in cui le parti sono correlate tra loro tramite la loro posizione. Le immagini ne sono il miglior esempio.
In ciascuna immagine sopra, ogni pixel bianco è collegato a ciascun pixel bianco circostante: formano la cifra. Le posizioni dei pixel indicano inoltre allo spettatore dove si trova la cifra all'interno dell'immagine.
Le caratteristiche sono attributi presenti all'interno dell'immagine. Questi attributi possono essere qualsiasi cosa, da un bordo leggermente inclinato alla presenza di un naso o di un occhio a una composizione di occhi, bocche e nasi. Fondamentalmente, le caratteristiche possono essere composte da caratteristiche più semplici (ad esempio, un occhio è composto da alcuni bordi curvi e una macchia scura centrale).
I filtri sono la parte del modello che rileva queste funzionalità all'interno dell'immagine. Ciascun filtro cerca una caratteristica specifica (ad esempio, un bordo curvato da sinistra a destra) nell'intera immagine.
Infine, il termine “convoluzionale” nella rete neurale convoluzionale si riferisce al modo in cui un filtro viene applicato a un'immagine. Lo spiegheremo nella prossima sezione.
Le CNN hanno mostrato ottime prestazioni in vari compiti relativi alle immagini, come il rilevamento di oggetti e la segmentazione delle immagini. Un modello della CNN (AlexNet) ha svolto un ruolo significativo nell’ascesa del deep learning nel 2012.
Come funzionano le CNN
Esploriamo l'architettura complessiva di una CNN utilizzando l'esempio della determinazione del numero (0–9) presente in un'immagine.
Prima di inserire l'immagine nel modello, l'immagine deve essere trasformata in una rappresentazione numerica (o codifica). Per le immagini in bianco e nero, a ogni pixel viene assegnato un numero: 255 se è completamente bianco e 0 se è completamente nero (a volte normalizzato su 1 e 0). Per le immagini a colori, a ogni pixel vengono assegnati tre numeri: uno per la quantità di rosso, verde e blu che contiene, noto come valore RGB. Quindi un'immagine di 256×256 pixel (con 65.536 pixel) avrebbe 65.536 valori nella sua codifica in bianco e nero e 196.608 valori nella sua codifica a colori.
Il modello elabora quindi l'immagine attraverso tre tipi di livelli:
1 Livello convoluzionale:questo livello applica filtri al suo input. Ogni filtro è una griglia di numeri di dimensione definita (ad esempio, 3×3). Questa griglia viene sovrapposta all'immagine partendo dall'alto a sinistra; verranno utilizzati i valori dei pixel delle righe 1–3 nelle colonne 1–3. Questi valori di pixel vengono moltiplicati per i valori nel filtro e quindi sommati. Questa somma viene quindi inserita nella griglia di output del filtro nella riga 1, colonna 1. Quindi il filtro scorre di un pixel verso destra e ripete il processo finché non ha coperto tutte le righe e le colonne dell'immagine. Facendo scorrere un pixel alla volta, il filtro può trovare caratteristiche ovunque nell'immagine, una proprietà nota come invarianza traslazionale. Ogni filtro crea la propria griglia di output, che viene poi inviata al livello successivo.
2 Livello di pooling: questo livello riassume le informazioni sulle caratteristiche dal livello di convoluzione. Il livello convoluzionale restituisce un output più grande del suo input (ciascun filtro restituisce una mappa delle caratteristiche all'incirca della stessa dimensione dell'input e sono presenti più filtri). Il livello di pooling prende ciascuna mappa delle caratteristiche e vi applica un'altra griglia. Questa griglia prende la media o il massimo dei valori in essa contenuti e li restituisce. Tuttavia, questa griglia non si sposta di un pixel alla volta; salterà alla successiva patch di pixel. Ad esempio, una griglia di pooling 3×3 funzionerà prima sui pixel nelle righe 1–3 e nelle colonne 1–3. Quindi rimarrà nella stessa riga ma si sposterà nelle colonne 4–6. Dopo aver coperto tutte le colonne della prima serie di righe (1–3), si sposterà alle righe 4–6 e affronterà quelle colonne. Ciò riduce efficacemente il numero di righe e colonne nell'output. Il livello di pooling aiuta a ridurre la complessità, rende il modello più robusto al rumore e ai piccoli cambiamenti e aiuta il modello a concentrarsi sulle caratteristiche più significative.
3 Livello completamente connesso: dopo più cicli di livelli convoluzionali e di pooling, le mappe delle caratteristiche finali vengono passate a un livello di rete neurale completamente connesso, che restituisce l'output che ci interessa (ad esempio, la probabilità che l'immagine sia un numero particolare). Le mappe delle caratteristiche devono essere appiattite (ogni riga di una mappa delle caratteristiche è concatenata in una riga lunga) e quindi combinate (ogni riga della mappa delle caratteristiche è concatenata in una mega riga).
Ecco una rappresentazione visiva dell'architettura della CNN, che illustra come ciascun livello elabora l'immagine di input e contribuisce all'output finale:
Alcune note aggiuntive sul processo:
- Ogni strato convoluzionale successivo trova caratteristiche di livello superiore. Il primo strato convoluzionale rileva bordi, punti o schemi semplici. Il successivo strato convoluzionale prende come input l'output raggruppato del primo strato convoluzionale, consentendogli di rilevare composizioni di caratteristiche della leva inferiore che formano caratteristiche di livello superiore, come un naso o un occhio.
- Il modello richiede formazione. Durante l'addestramento, un'immagine viene fatta passare attraverso tutti i livelli (inizialmente con pesi casuali) e viene generato l'output. La differenza tra l'output e la risposta effettiva viene utilizzata per regolare leggermente i pesi, aumentando le probabilità che il modello risponda correttamente in futuro. Ciò avviene tramite la discesa del gradiente, in cui l'algoritmo di training calcola il contributo di ciascun peso del modello alla risposta finale (utilizzando le derivate parziali) e lo sposta leggermente nella direzione della risposta corretta. Il livello di pooling non ha pesi, quindi non è influenzato dal processo di training.
- Le CNN possono funzionare solo su immagini della stessa dimensione di quelle su cui sono state addestrate. Se un modello è stato addestrato su immagini con 256×256 pixel, qualsiasi immagine più grande dovrà essere sottocampionata e qualsiasi immagine più piccola dovrà essere sottocampionata.
CNN contro RNN e trasformatori
Le reti neurali convoluzionali sono spesso menzionate insieme alle reti neurali ricorrenti (RNN) e ai trasformatori. Quindi in cosa differiscono?
CNN contro RNN
Le RNN e le CNN operano in domini diversi. Le RNN sono più adatte per dati sequenziali, come il testo, mentre le CNN eccellono con i dati spaziali, come le immagini. Gli RNN hanno un modulo di memoria che tiene traccia delle parti di un input viste in precedenza per contestualizzare la parte successiva. Al contrario, le CNN contestualizzano parti dell’input osservando i suoi vicini immediati. Poiché le CNN non hanno un modulo di memoria, non sono adatte per attività di testo: dimenticherebbero la prima parola di una frase quando raggiungono l'ultima parola.
CNN contro trasformatori
I trasformatori sono anche ampiamente utilizzati per compiti sequenziali. Possono utilizzare qualsiasi parte dell'input per contestualizzare il nuovo input, rendendoli popolari per le attività di elaborazione del linguaggio naturale (PNL). Tuttavia, recentemente i trasformatori sono stati applicati anche alle immagini, sotto forma di trasformatori di visione. Questi modelli acquisiscono un'immagine, la suddividono in patch, attirano l'attenzione (il meccanismo principale nelle architetture dei trasformatori) sulle patch e quindi classificano l'immagine. I trasformatori di visione possono sovraperformare le CNN su set di dati di grandi dimensioni, ma non hanno l’invarianza traslazionale inerente alle CNN. L'invarianza traslazionale nelle CNN consente al modello di riconoscere gli oggetti indipendentemente dalla loro posizione nell'immagine, rendendo le CNN altamente efficaci per attività in cui la relazione spaziale delle caratteristiche è importante.
Applicazioni delle CNN
Le CNN vengono spesso utilizzate con le immagini a causa della loro invarianza traslazionale e delle caratteristiche spaziali. Ma, con un’elaborazione intelligente, le CNN possono lavorare su altri domini (spesso convertendoli prima in immagini).
Classificazione delle immagini
La classificazione delle immagini è l'uso principale delle CNN. Grandi CNN ben addestrate possono riconoscere milioni di oggetti diversi e possono lavorare su quasi tutte le immagini che ricevono. Nonostante l’aumento dei trasformatori, l’efficienza computazionale delle CNN le rende un’opzione praticabile.
Riconoscimento vocale
L'audio registrato può essere trasformato in dati spaziali tramite spettrogrammi, che sono rappresentazioni visive dell'audio. Una CNN può prendere uno spettrogramma come input e imparare a mappare diverse forme d'onda su parole diverse. Allo stesso modo, una CNN può riconoscere ritmi e campioni musicali.
Segmentazione delle immagini
La segmentazione delle immagini implica l'identificazione e il disegno dei confini attorno ai diversi oggetti in un'immagine. Le CNN sono popolari per questo compito grazie alle loro ottime prestazioni nel riconoscere vari oggetti. Una volta segmentata un'immagine, possiamo comprenderne meglio il contenuto. Ad esempio, un altro modello di deep learning potrebbe analizzare i segmenti e descrivere questa scena: “Due persone stanno camminando in un parco. C’è un lampione alla loro destra e un’auto davanti a loro”. In campo medico, la segmentazione delle immagini può differenziare i tumori dalle cellule normali nelle scansioni. Per i veicoli autonomi, può identificare la segnaletica orizzontale, i segnali stradali e altri veicoli.
Vantaggi delle CNN
Le CNN sono ampiamente utilizzate nel settore per diversi motivi.
Forte prestazione dell'immagine
Data l'abbondanza di dati di immagine disponibili, sono necessari modelli che funzionino bene su vari tipi di immagini. Le CNN sono adatte a questo scopo. La loro invarianza traslazionale e la capacità di creare caratteristiche più grandi da quelle più piccole consentono loro di rilevare caratteristiche in tutta un'immagine. Non sono necessarie architetture diverse per diversi tipi di immagini, poiché una CNN di base può essere applicata a tutti i tipi di dati di immagine.
Nessuna progettazione manuale delle funzionalità
Prima della CNN, i modelli di immagine con le migliori prestazioni richiedevano un notevole sforzo manuale. Gli esperti di dominio hanno dovuto creare moduli per rilevare tipi specifici di funzionalità (ad esempio, filtri per i bordi), un processo dispendioso in termini di tempo e privo di flessibilità per immagini diverse. Ogni serie di immagini necessitava del proprio set di funzionalità. Al contrario, la prima famosa CNN (AlexNet) poteva classificare automaticamente 20.000 tipi di immagini, riducendo la necessità di ingegneria manuale delle funzionalità.
Svantaggi delle CNN
Naturalmente, ci sono dei compromessi nell’utilizzo delle CNN.
Molti iperparametri
L'addestramento di una CNN implica la selezione di molti iperparametri. Come ogni rete neurale, esistono iperparametri come il numero di livelli, la dimensione del batch e la velocità di apprendimento. Inoltre, ogni filtro richiede il proprio set di iperparametri: dimensione del filtro (ad esempio, 3×3, 5×5) e passo (il numero di pixel da spostare dopo ogni passaggio). Gli iperparametri non possono essere facilmente ottimizzati durante il processo di training. È invece necessario addestrare più modelli con diversi set di iperparametri (ad esempio, set A e set B) e confrontare le loro prestazioni per determinare le scelte migliori.
Sensibilità alla dimensione dell'input
Ogni CNN è addestrata ad accettare un'immagine di una certa dimensione (ad esempio, 256×256 pixel). Molte immagini che desideri elaborare potrebbero non corrispondere a queste dimensioni. Per risolvere questo problema, puoi aumentare o ridurre le dimensioni delle tue immagini. Tuttavia, questo ridimensionamento può comportare la perdita di informazioni preziose e ridurre le prestazioni del modello.