Come sono collegati i filtri e le mappe di attivazione nelle reti neurali convoluzionali?


11

In che modo le mappe di attivazione di un determinato livello sono collegate ai filtri per quel livello? Non sto chiedendo come fare un'operazione convoluzionale tra il filtro e la mappa di attivazione, sto chiedendo del tipo di connettività che hanno questi due.

Ad esempio, supponiamo che tu voglia fare una connettività completa. Hai un numero f di filtri e n un numero di mappe di attivazione in un dato livello. Otterrai f * n numero di mappe di attivazione nel livello successivo e il numero di mappe di attivazione aumenterebbe con ogni nuovo livello. Questo è il modo in cui presumo che sia fatto.

Oppure potresti dire che ogni filtro è collegato a una sola mappa di attivazione. In questo caso, il numero di filtri equivarrebbe al numero di mappe di attivazione e ogni livello avrebbe lo stesso numero di filtri e mappe di attivazione. Questa è l'architettura attuale della mia rete e sembra imparare bene.

La fonte principale della mia confusione sta guardando i diagrammi di reti che vedo online. Alcuni di essi hanno la "connessione completa" tra i filtri e le mappe di attivazione, come questa - inserisci qui la descrizione dell'immagine Nel primo livello hai 4 mappe di attivazione e presumibilmente 2 filtri. Ogni mappa è contorta con ogni filtro, risultando in 8 mappe nel livello successivo. Sembra fantastico.

Ma qui abbiamo un'architettura che non ha senso per me - inserisci qui la descrizione dell'immagine Come passi da 6 mappe nel primo strato a 16 nel 2 °? Posso pensare a come ottenere 16 mappe da 6, ma non avrebbero alcun senso fare.

Risposte:


10

La seconda architettura di rete neurale convoluzionale (CNN) che hai pubblicato proviene da questo documento . Nel documento gli autori danno una descrizione di ciò che accade tra i livelli S2 e C3. La loro spiegazione non è molto chiara però. Direi che questa architettura della CNN non è "standard" e può essere piuttosto confusa come primo esempio per le CNN.

Architettura della CNN

Prima di tutto, è necessario un chiarimento su come vengono prodotte le mappe delle caratteristiche e su quale sia la loro relazione con i filtri. Una mappa delle caratteristiche è il risultato della convoluzione di un filtro con una mappa delle caratteristiche. Prendiamo i livelli INPUT e C1 come esempio. Nel caso più comune, per ottenere 6 mappe caratteristiche della dimensione nello strato C1 sono necessari 6 filtri della dimensione (il risultato di una convoluzione "valida" di un'immagine della dimensione con un filtro di dimensione , assumendo , ha dimensione28×285×5M×MN×NMN(M-N+1)×(M-N+1). Tuttavia, è possibile produrre 6 mappe caratteristiche combinando le mappe caratteristiche prodotte da più o meno di 6 filtri (ad es. Sommandole). Nel documento, nulla del genere è implicito per lo strato C1.

Ciò che accade tra il livello S2 e il livello C3 è il seguente. Esistono 16 mappe caratteristiche nel livello C3 prodotte da 6 mappe caratteristiche nel livello S2. Il numero di filtri nello strato C3 non è in effetti evidente. In effetti, dal solo diagramma dell'architettura, non si può giudicare quale sia il numero esatto di filtri che producono quelle 16 mappe caratteristiche. Gli autori dell'articolo forniscono la seguente tabella (pagina 8):

connessioni tra i livelli S2 e C3

Con la tabella forniscono la seguente spiegazione (in fondo a pagina 7):

Il livello C3 è un livello convoluzionale con 16 mappe caratteristiche. Ogni unità in ciascuna mappa delle caratteristiche è connessa a più quartieri in posizioni identiche in un sottoinsieme delle mappe caratteristiche di S2.5×5

Nella tabella gli autori mostrano che ogni mappa caratteristica nel livello C3 viene prodotta combinando 3 o più mappe caratteristiche (pagina 8):

Le prime sei mappe caratteristiche C3 accettano input da ogni sottoinsieme contiguo di tre mappe caratteristiche in S2. I successivi sei prendono input da ogni sottoinsieme contiguo di quattro. I tre successivi prendono input da alcuni sottoinsiemi discontinui di quattro. Infine, l'ultimo prende l'input da tutte le mappe caratteristiche S2.

Ora, quanti filtri ci sono nel livello C3? Sfortunatamente, non lo spiegano. Le due possibilità più semplici sarebbero:

  1. Esiste un filtro per la mappa delle caratteristiche S2 per la mappa delle caratteristiche C3, ovvero non esiste la condivisione dei filtri tra le mappe delle caratteristiche S2 associate alla stessa mappa delle caratteristiche C3.
  2. Esiste un filtro per mappa delle caratteristiche C3, che è condiviso tra le (3 o più) mappe delle caratteristiche del livello S2 che sono combinate.

In entrambi i casi, "combinare" significherebbe che i risultati della convoluzione per gruppo di mappe caratteristiche S2 dovrebbero essere combinati con le mappe caratteristiche C3 prodotte. Gli autori non specificano come farlo, ma l'aggiunta è una scelta comune (vedi ad esempio la gif animata vicino al centro di questa pagina .

Gli autori forniscono alcune informazioni aggiuntive, che possono aiutarci a decifrare l'architettura. Dicono che 'il livello C3 ha 1.516 parametri allenabili' (pagina 8). Possiamo usare queste informazioni per decidere tra i casi (1) e (2) sopra.

Nel caso (1) abbiamo filtri. La dimensione del filtro è . Il numero di parametri allenabili in questo caso sarebbe parametri allenabili. Se assumiamo un'unità di polarizzazione per mappa caratteristica C3, otteniamo parametri, che è ciò che dicono gli autori. Per completezza, nel caso (2) avremmo parametri, che non è il caso.(6×3)+(9×4)+(1×6)=60(14-10+1)×(14-10+1)=5×55×5×60=1,5001,500+16=1,516(5×5×16)+16=416

Pertanto, se guardiamo di nuovo alla tabella I sopra, ci sono 10 filtri C3 distinti associati a ciascuna mappa delle caratteristiche S2 (quindi 60 filtri distinti in totale).

Gli autori spiegano questo tipo di scelta:

Mappe di caratteristiche diverse [nel livello C3] sono costrette ad estrarre caratteristiche diverse (si spera complementari) perché ottengono diversi insiemi di input.

Spero che questo chiarisca la situazione.


3

Hai effettivamente ragione nel dire che il valore prima di @ indica la quantità di filtri e non la quantità di mappe caratteristiche (sebbene per i primi livelli convoluzionali questi valori coincidano).

Per quanto riguarda la tua ultima domanda: sì, ha senso avere ogni mappa delle caratteristiche al livello l connessa a ogni filtro al livello l + 1. L'unica ragione di ciò è che ciò aumenta notevolmente il potere espressivo della rete, in quanto ha più modi (percorsi) di combinare le mappe delle caratteristiche che gli consentono così di distinguere meglio qualsiasi cosa sia nell'immagine di input.

Finalmente non so se stai esercitando le tue capacità di rete neurale implementandole tu stesso, ma se vuoi solo applicare reti convoluzionali a un compito specifico, allora ci sono già diverse eccellenti librerie di reti neurali come Theano, Brainstorm, Caffe


Penso che quello che farò sarà un benchmark di entrambi i modi per confrontarli. Con la versione non completamente connessa si allenerà e calcolerà la sua classificazione più velocemente. Ma la precisione è più importante. Nella versione non completamente connessa, ciascun filtro è localizzato in un'attività molto più specifica anziché in un'attività più generale. Nella versione completamente connessa, un filtro viene aggiornato in base a ciò che è meglio per tutti i filtri precedenti invece di un solo tipo di funzionalità. Ho creato la mia rete da zero al 100% usando c #. certamente non è il modo più semplice di fare le cose ... ma mi ha insegnato in modo approfondito
Frobot

Sembra un piano sonoro. In bocca al lupo!
Sjoerd,
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.