Introduzione alle reti neurali convoluzionali
Un'innovazione nella creazione di modelli per la classificazione delle immagini è dovuta alla scoperta che una rete neurale convoluzionale (CNN) poteva essere utilizzata per estrarre progressivamente rappresentazioni di livello superiore e superiore dei contenuti dell'immagine. Invece di pre-elaborare i dati per ricavare caratteristiche come texture e forme, una CNN prende solo i dati pixel non elaborati dell'immagine come input e &learns" come estrarre queste caratteristiche e, infine, dedurre l'oggetto che costituiscono.
Per iniziare, la CNN riceve una mappa delle caratteristiche di input: una matrice tridimensionale in cui le dimensioni delle prime due dimensioni corrispondono alla lunghezza e alla larghezza delle immagini in pixel. La terza dimensione è tre (corrispondente ai tre canali di un'immagine a colori: rosso, verde e blu). La CNN comprende una serie di moduli, ognuno dei quali esegue tre operazioni.
1. Convoluzione
Una evoluzione estrae i riquadri della mappa delle caratteristiche di input e applica dei filtri per calcolare le nuove funzionalità, producendo una mappa delle caratteristiche di output o una funzionalità basata sulle conversioni (che potrebbe avere dimensioni e profondità diverse rispetto alla mappa delle funzionalità di input). Le convoluzioni sono definite da due parametri:
- Dimensioni dei riquadri estratte (in genere 3x3 o 5x5 pixel).
- La profondità della mappa delle funzionalità di output, che corrisponde al numero di filtri applicati.
Durante una convoluzione, i filtri (matrici delle stesse dimensioni della scheda) scorrino in modo efficace sulla griglia della mappa in primo piano della mappa in orizzontale e in verticale, un pixel alla volta, estraendo ogni riquadro corrispondente (vedi Figura 3).
Figura 3. Una convoluzione 3x3 di profondità 1 eseguita su una mappa delle caratteristiche di input 5x5, anch'essa di profondità 1. Esistono nove possibili posizioni 3 x 3 per estrarre le schede dalla mappa delle caratteristiche 5 x 5, quindi questa convoluzione produce una mappa delle caratteristiche di output 3 x 3.
Per ogni coppia di riquadri dei filtri, la CNN esegue la moltiplicazione in base agli elementi della matrice di filtri e della matrice di riquadri, quindi somma tutti gli elementi della matrice risultante per ottenere un singolo valore. Ognuno di questi valori risultanti per ogni coppia di riquadri dei filtri viene quindi generato nella matrice delle funzionalità evolute (vedi le Figura 4a e 4b).
Figura 4a. Sinistra: una mappa delle caratteristiche di input 5 x 5 (profondità 1). A destra: una convoluzione 3x3 (profondità 1).
Figura 4b. Sinistra: la convoluzione 3x3 viene eseguita sulla mappa delle caratteristiche di input 5x5. A destra: la funzionalità visualizzata risultante. Fai clic su un valore nella mappa delle funzionalità di output per vedere come è stato calcolato.
Durante l'addestramento, la CNN "apprende" i valori ottimali per le matrici di filtro che gli consentono di estrarre caratteristiche significative (texture, bordi, forme) dalla mappa delle caratteristiche di input. Il numero di filtri (profondità della mappa delle funzionalità di output) applicati all'input aumenta, di pari passo con il numero di funzionalità che la CNN può estrarre. Tuttavia, il compromesso è che i filtri compongono la maggior parte delle risorse utilizzate dalla CNN, quindi il tempo di addestramento aumenta man mano che vengono aggiunti altri filtri. Inoltre, ogni filtro aggiunto alla rete fornisce un valore incrementale inferiore al precedente, quindi gli ingegneri puntano a costruire reti che usano il numero minimo di filtri necessario per estrarre le funzionalità necessarie per una classificazione precisa delle immagini.
2. ReLU
Dopo ogni operazione di convoluzione, la CNN applica una trasformazione di Unità lineare rettificata (ReLU) alla funzionalità convolveta, per introdurre non linearità nel modello. La funzione ReLU, \(F(x)=max(0,x)\), restituisce x per tutti i valori di x > 0 e restituisce 0 per tutti i valori di x ≤ 0.
3. Baracche
Dopo il passaggio di ReLU, arriva un passaggio di pool in cui la CNN sottocampiona la funzionalità interessata (per risparmiare tempo di elaborazione), riducendo il numero di dimensioni della mappa delle funzionalità, mantenendo le informazioni più importanti sulle funzionalità. Un algoritmo comune utilizzato per questo processo è chiamato max pooling.
Il pool di Max opera in modo simile alla convoluzione. Scorriamo la mappa delle funzionalità per estrarre i riquadri di una dimensione specifica. Per ogni riquadro, il valore massimo viene generato in una nuova mappa delle caratteristiche e tutti gli altri valori vengono ignorati. Le operazioni di pool massimo prendono due parametri:
- Dimensioni del filtro di pool massimo (in genere 2 x 2 pixel)
- Stride: la distanza in pixel che separa ogni riquadro estratto. A differenza della convoluzione, in cui i filtri scorrono sulla mappa della funzionalità pixel per pixel, nel pool massimo, l'andamento determina le località in cui ogni riquadro viene estratto. Per un filtro 2x2, un passo di 2 specifica che l'operazione di pool massimo estrarrà tutti i riquadri 2x2 non sovrapposti dalla mappa delle caratteristiche (vedi Figura 5).
Figura 5. Sinistra: il pool massimo viene eseguito su una mappa di caratteristiche 4x4 con un filtro 2x2 e un'andatura di 2. A destra: l'output dell'operazione di pool massimo. Nota che la mappa delle caratteristiche risultante ora è 2x2, mantenendo solo i valori massimi da ciascun riquadro.
Livelli completamente connessi
Alla fine di una rete neurale convoluzionale ci sono uno o più livelli completamente collegati (quando due livelli sono completamente connessi; ogni nodo nel primo livello è collegato a ogni nodo nel secondo livello). Il loro compito è eseguire una classificazione basata sulle caratteristiche estratte dalle convoluzioni. In genere, l'ultimo livello completamente collegato contiene una funzione di attivazione softmax, che restituisce un valore di probabilità da 0 a 1 per ciascuna delle etichette di classificazione che il modello sta cercando di prevedere.
La Figura 6 illustra la struttura end-to-end di una rete neurale convoluzionale.
Figura 6. La CNN mostrata qui contiene due moduli di convoluzione (convoluzione + ReLU + pool) per l'estrazione delle funzionalità e due livelli completamente collegati per la classificazione. Altre reti CNN possono contenere numeri più grandi o più piccoli di moduli convoluzionali e livelli maggiori o minori collegati completamente. Gli ingegneri spesso sperimentano per determinare la configurazione che produce i migliori risultati per il loro modello.