La migliore spiegazione delle reti neurali convoluzionali su Internet!

La migliore spiegazione delle reti neurali convoluzionali su Internet!

Le CNN trovano ampia applicazione nel riconoscimento di immagini e video, nei sistemi di raccomandazione e nell’elaborazione del linguaggio naturale. In questo articolo, l’esempio che prenderò è relativo alla Computer Vision. Tuttavia, il concetto di base rimane lo stesso e può essere applicato a qualsiasi altro caso d’uso!

Per un rapido riepilogo delle reti neurali, ecco una serie di articoli spiegati in modo molto chiaro. Se, invece, avete bisogno di un corso approfondito, vi consigliamo uno dei nostri corsi dal pacchetto di Computer Vision Specialist.

Le CNN, come le reti neurali, sono costituite da neuroni con pesi e polarizzazioni apprendibili. Ogni neurone riceve diversi input, fa una somma ponderata di questi, la passa attraverso una funzione di attivazione e risponde con un output. L’intera rete ha una funzione di perdita e tutti i suggerimenti e i trucchi che abbiamo sviluppato per le reti neurali sono ancora validi per le CNN. Piuttosto semplice, no?

In che modo le reti neurali convoluzionali sono diverse dalle reti neurali?

Le CNN operano su volumi!

Cosa intendiamo con questo?

A differenza delle reti neurali, dove l’input è un vettore, qui l’input è un’immagine multicanale (3 canali in questo caso).

Ci sono altre differenze di cui parleremo tra poco.

Prima di approfondire, cerchiamo di capire cosa significa convoluzione.

Convoluzione

Prendiamo il filtro 5*5*3 e lo facciamo scorrere sull’immagine completa e lungo il percorso prendiamo il prodotto di punti tra il filtro e i pezzi dell’immagine di ingresso.

Per ogni prodotto di punti preso, il risultato è uno scalare.

Quindi, cosa succede quando convolgiamo l’immagine completa con il filtro?

Lascio a voi il compito di capire come si ottiene il “28”. (Suggerimento: ci sono 28*28 posizioni uniche in cui il filtro può essere inserito nell’immagine).

Torniamo ora alle CNN

Lo strato di convoluzione è il blocco principale di una rete neurale convoluzionale.

Lo strato di convoluzione comprende un insieme di filtri indipendenti (6 nell’esempio mostrato). Ogni filtro viene convoluto in modo indipendente con l’immagine e alla fine si ottengono 6 mappe di caratteristiche di forma 28*28*1.

Supponiamo di avere un certo numero di livelli di convoluzione in sequenza. Cosa succede?

Tutti questi filtri vengono inizializzati in modo casuale e diventano i parametri che la rete apprenderà successivamente.

Vi mostrerò un esempio di rete addestrata.

Osservate i filtri del primo strato (sono i nostri filtri 5*5*3). Attraverso la propagazione all’indietro, si sono sintonizzati per diventare blob di pezzi colorati e bordi. Man mano che ci addentriamo negli altri livelli di convoluzione, i filtri eseguono prodotti di punti sull’input dei livelli di convoluzione precedenti. Quindi, prendono i pezzi o i bordi colorati più piccoli e li trasformano in pezzi più grandi.

Osservate l’immagine 4 e immaginate la griglia 28*28*1 come una griglia di 28*28 neuroni. Per una particolare mappa di caratteristiche (l’output ricevuto dalla convoluzione dell’immagine con un particolare filtro è chiamato mappa di caratteristiche), ogni neurone è connesso solo a una piccola porzione dell’immagine di ingresso e tutti i neuroni hanno gli stessi pesi di connessione. Torniamo quindi alle differenze tra CNN e rete neurale.

Le CNN hanno un paio di concetti chiamati condivisione dei parametri e connettività locale.

La condivisione dei parametri è la condivisione dei pesi da parte di tutti i neuroni in una particolare mappa di caratteristiche.

La connettività locale è il concetto di ogni neurone connesso solo a un sottoinsieme dell’immagine di ingresso (a differenza di una rete neurale in cui tutti i neuroni sono completamente connessi).

Questo aiuta a ridurre il numero di parametri dell’intero sistema e rende il calcolo più efficiente.

Non parlerò del concetto di zero padding in questa sede, perché l’idea è quella di mantenerlo semplice. Chi è interessato può leggerlo separatamente!

Strati di raggruppamento

Un livello di pooling è un altro elemento costitutivo di una CNN.

La sua funzione è quella di ridurre progressivamente la dimensione spaziale della rappresentazione per ridurre la quantità di parametri e calcoli nella rete. Il pooling layer opera su ogni mappa di caratteristiche in modo indipendente.

L’approccio più comunemente utilizzato per il pooling è il max pooling.

Architettura tipica di una CNN

Abbiamo già parlato degli strati di convoluzione (indicati con CONV) e di pooling (indicati con POOL).

La RELU è solo una non linearità che viene applicata in modo simile alle reti neurali.

La FC è lo strato di neuroni completamente connesso alla fine della CNN. I neuroni di uno strato completamente connesso hanno connessioni complete con tutte le attivazioni dello strato precedente, come si vede nelle normali reti neurali, e funzionano in modo simile.

Spero che ora abbiate capito l’architettura di una CNN. Esistono molte varianti di questa architettura, ma come ho detto prima, il concetto di base rimane lo stesso. In caso di dubbi/feedback, commentate pure.

 

Articolo di Harsh Pokharna

The best explanation of Convolutional Neural Networks on the Internet! | by Harsh Pokharna | TechnologyMadeEasy | Medium

Share:

Contenuti
Torna in alto