Come funzionano i livelli di convoluzione successivi?


29

Questa domanda si riduce a "come funzionano esattamente i livelli di convoluzione .

Supponiamo che io abbia un'immagine in scala di grigi . Quindi l'immagine ha un canale. Nel primo strato, applico una convoluzione 3 × 3 con k 1 filtri e riempimento. Poi ho un altro livello di convoluzione con 5 × 5 convoluzioni e k 2 filtri. Quante mappe caratteristiche ho?n×m3×3k15×5k2

Convoluzione di tipo 1

Il primo strato viene eseguito. Successivamente, ho mappe delle caratteristiche (una per ogni filtro). Ognuno di questi ha le dimensioni n × m . Ogni singolo pixel è stato creato prendendo 3 3 = 9 pixel dall'immagine di input imbottita.k1n×m33=9

Quindi viene applicato il secondo livello. Ogni singolo filtro viene applicato separatamente a ciascuna delle mappe caratteristiche . Ciò si traduce in mappe delle caratteristiche per ciascuna delle k 1 mappe delle caratteristiche. Quindi ci sono k 1 × k 2 mappe caratteristiche dopo il secondo livello. Ogni singolo pixel di ciascuna delle nuove mappe caratteristiche è stato creato prendendo 5 5 = 25 "pixel" della mappa caratteristica imbottita di prima.k2k1k1×k255=25

Il sistema deve apprendere parametri.k133+k255

Convoluzione di tipo 2.1

Come prima: il primo strato viene eseguito. Successivamente, ho mappe delle caratteristiche (una per ogni filtro). Ognuno di questi ha le dimensioni n × m . Ogni singolo pixel è stato creato prendendo 3 3 = 9 pixel dall'immagine di input imbottita.k1n×m33=9

Diversamente da prima: viene quindi applicato il secondo livello. Ogni singolo filtro viene applicato alla stessa area, ma tutte le mappe delle caratteristiche precedenti. Ciò si traduce in mappe delle caratteristiche in totale dopo l'esecuzione del secondo livello. Ogni singolo pixel di ciascuna delle nuove mappe caratteristiche è stato creato prendendo k 25 5 = 25 k 2 "pixel" delle mappe caratteristiche imbottite di prima.k2k255=25k2

Il sistema deve apprendere parametri.k133+k255

Convoluzione di tipo 2.2

55=25k133+k2k155

Domanda

  1. Il tipo 1 o il tipo 2 viene generalmente utilizzato?
  2. Quale tipo viene utilizzato in Alexnet ?
  3. Quale tipo viene utilizzato in GoogLeNet ?
    • 1×1
    • Se dici di tipo 2: Spiega il costo quadratico ("Ad esempio, in una rete di visione profonda, se due livelli convoluzionali sono concatenati, qualsiasi aumento uniforme del numero dei loro filtri comporta un aumento quadratico del calcolo")

Per tutte le risposte, si prega di fornire alcune prove (documenti, libri di testo, documentazione di quadri) che la risposta è corretta.

Domanda bonus 1

Il pooling viene sempre applicato solo per mappa delle caratteristiche o anche su più mappe delle caratteristiche?

Domanda bonus 2

42×3143×4×5

La mia ricerca


Qualche tempo dopo: analisi e ottimizzazione delle architetture di reti neurali convoluzionali , in particolare il capitolo 2 e la figura 2.2 e la figura 2.3.
Martin Thoma,

Risposte:


5

Non sono sicuro delle alternative sopra descritte, ma la metodologia comunemente usata è:

k23˙3˙k1+k1˙5˙5˙k2

Bonus 1: il pooling viene eseguito per mappa delle caratteristiche, separatamente.

Bonus 2: L'ordine di "scorrimento" non ha importanza. In effetti, ogni output viene calcolato in base al layer precedente, quindi le risposte del filtro di output non dipendono l'una dall'altra. Possono essere calcolati in parallelo.


1
Mi ero completamente dimenticato di questa domanda. Nel frattempo, ho scritto la tesi di master sui CNN. Il capitolo 3 spiega come funzionano.
Martin Thoma,

1
Per chiarire: il Tipo 2.2 è quello corretto (descritto in questa risposta)
Martin Thoma il

1
Nel caso qualcuno volesse davvero vederlo in azione, ho implementato una profonda rete neurale convoluzionale nei fogli di Google. Puoi vedere i filtri e l'immagine di input, pixel per pixel mentre funziona nella CNN, fino a quando la CNN non prevede la risposta: docs.google.com/spreadsheets/d/…
bwest87

5

Ho appena lottato con questa stessa domanda per alcune ore. Ho pensato di condividere l'istinto che mi ha aiutato a capirlo.

La risposta è che i filtri per il secondo livello convoluzionale non hanno la stessa dimensionalità dei filtri per il primo livello. In generale, il filtro deve avere lo stesso numero di dimensioni dei suoi input . Quindi nel primo livello conv, l'input ha 2 dimensioni (perché è un'immagine). Pertanto i filtri hanno anche due dimensioni. Se ci sono 20 filtri nel primo livello conv, l'output del primo livello conv è una pila di 20 mappe caratteristiche 2D. Quindi l'output del primo livello conv è tridimensionale, dove la dimensione della terza dimensione è uguale al numero di filtri nel primo strato.

Ora questo stack 3D costituisce l'input per il secondo livello conv. Poiché l'ingresso al 2 ° livello è 3D, anche i filtri devono essere 3D. Rendi le dimensioni dei filtri del secondo livello nella terza dimensione pari al numero di mappe caratteristiche che erano gli output del primo livello.

Ora ti avvicini alle prime 2 dimensioni; righe e colonne. Pertanto, la convoluzione di ciascun filtro del 2 ° livello con la pila di mappe delle caratteristiche (output del primo livello) produce una singola mappa delle caratteristiche.

La dimensione della terza dimensione dell'output del secondo strato è quindi uguale al numero di filtri nel secondo strato.


2

Controlla questa lezione e questa visualizzazione

Di solito si usa la convoluzione di tipo 2.1. Nell'input hai l'immagine NxMx1, quindi dopo la prima convoluzione otterrai N_1xM_1xk_1, quindi la tua immagine dopo la prima convoluzione avrà k_1 canali. Le nuove dimensioni N_1 e M_1 dipenderanno dal passo S e dall'imbottitura P: N_1 = (N - 3 + 2P) / S + 1, calcoli M_1 in analogia. Per il primo livello conv avrai 3x3xk_1 + k_1 pesi. È stato aggiunto k_1 per i pregiudizi nella funzione non lineare.

Nel secondo livello hai come immagine di input con dimensioni N_1xM_1xk_1, dove k_1 è il nuovo numero di canali. E dopo la seconda convoluzione ottieni l'immagine N_2xM_2xk_2 (array). Hai parametri 5x5xk_2xk_1 + k_2 nel secondo livello.

Per la convoluzione 1x1 con filtri k_3 e input NxMxC (C è il numero di canali di input) otterrai una nuova immagine (array) NxMxk_3, quindi 1x1 ha senso. Sono stati introdotti in questo documento

Bonus 1: il pooling viene applicato per mappa delle caratteristiche.

Per i dettagli, vedere le diapositive per il corso della CNN su Stanford: hai una buona visualizzazione di come la convoluzione viene sommata da diversi canali di input.


2
Le risposte solo al collegamento sono sconsigliate: i collegamenti possono smettere di funzionare. Puoi inserire informazioni pertinenti?
Sean Owen,

1
la visualizzazione è stata davvero utile. Il mio momento di epifania è stato quando ho capito che i filtri sono 3D e non 2D.
kmace

1
Ottimi collegamenti, riordinare le cose per me. Ma la tua risposta sembra incoerente con quanto detto nei collegamenti, in particolare nel livello conv 2 ogni campo ricettivo è 3D con dimensioni 5x5xk_1, quindi il numero di parametri dovrebbe essere 5 * 5 * k_1 * k_2 (più distorsione).
Daniel Schlaug,

@DanielSchlaug hai ragione, ho corretto la risposta.
pplonski,

1

k1331k1

k255k1k2

Cioè, i kernel in uno strato convoluzionale abbracciano la profondità dell'output del livello precedente.

1×1kn11kn1

Speculazione:

La domanda bonus 2 non è qualcosa con cui ho familiarità, ma immagino che il parametro di profondità nella convoluzione diventi una dimensione aggiuntiva.

mnknmnkn+1kn

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.