Reti neurali convoluzionali: i neuroni centrali non sono sovrarappresentati nell'output?


30

[Questa domanda è stata posta anche in caso di overflow dello stack]

La domanda in breve

Sto studiando reti neurali convoluzionali e credo che queste reti non trattino tutti i neuroni di input (pixel / parametri) in modo equivalente. Immagina di avere una rete profonda (molti livelli) che applica la convoluzione su alcune immagini di input. I neuroni nel "mezzo" dell'immagine hanno molti percorsi unici verso molti neuroni di livello più profondo, il che significa che una piccola variazione nei neuroni medi ha un forte effetto sull'output. Tuttavia, i neuroni ai margini dell'immagine hanno solo via (o, a seconda dell'esatta implementazione, dell'ordine di 1 ) percorsi in cui le loro informazioni fluiscono attraverso il grafico. Sembra che questi siano "sottorappresentati".11

Sono preoccupato per questo, poiché questa discriminazione dei neuroni limite si espande in modo esponenziale con la profondità (numero di strati) della rete. Anche l'aggiunta di un livello di pool massimo non bloccherà l'aumento esponenziale, solo una connessione completa porta tutti i neuroni su un piano di parità. Non sono convinto che il mio ragionamento sia corretto, quindi le mie domande sono:

  • Ho ragione che questo effetto si manifesta in reti convoluzionali profonde?
  • C'è qualche teoria al riguardo, è mai stata menzionata in letteratura?
  • Ci sono modi per superare questo effetto?

Poiché non sono sicuro che ciò fornisca informazioni sufficienti, approfondirò un po 'di più sull'affermazione del problema e sul perché ritengo che questa sia una preoccupazione.

Spiegazione più dettagliata

Immagina di avere una rete neurale profonda che prende un'immagine come input. Supponiamo di applicare un filtro convoluzionale di pixel sull'immagine, in cui spostiamo la finestra di convoluzione di 4 pixel ogni volta. Ciò significa che ogni neurone nell'input invia la sua attivazione a 16 × 16 = 265 neuroni nello strato 2 . Ognuno di questi neuroni potrebbe inviare la propria attivazione ad altri 265 , in modo tale che il nostro neurone più in alto sia rappresentato in 265 2 neuroni in uscita, e così via.64×64416×16=26522652652

1

3

https://www.dropbox.com/s/7rbwv7z14j4h0jr/deep_conv_problem_stackxchange.png?dl=0

Perché questo è un problema?

Questo effetto non sembra essere un problema a prima vista: in linea di principio, i pesi dovrebbero adattarsi automaticamente in modo tale che la rete funzioni. Inoltre, i bordi di un'immagine non sono così importanti nel riconoscimento delle immagini. Questo effetto potrebbe non essere evidente nei test di riconoscimento delle immagini di tutti i giorni, ma mi preoccupa ancora per due motivi: 1. generalizzazione ad altre applicazioni e 2. problemi che sorgono nel caso di reti molto profonde.

1. Potrebbero esserci altre applicazioni, come il parlato o il riconoscimento del suono, in cui non è vero che i neuroni della metà media siano i più importanti. L'applicazione della convoluzione viene spesso eseguita in questo campo, ma non sono stato in grado di trovare documenti che menzionino l'effetto di cui mi occupo.

1026510

Ora immagina di turbare tutti i neuroni di una piccola quantità. I neuroni centrali causeranno un cambiamento più forte dell'output di diversi ordini di grandezza, rispetto ai neuroni limite. Credo che per le applicazioni generali e per le reti molto profonde si debbano trovare modi per aggirare il mio problema?


8
Non posso rispondere completamente alla tua domanda, ma ho trovato questo documento: cs.utoronto.ca/~kriz/conv-cifar10-aug2010.pdf che risolve il tuo problema. Parlano di soluzioni diverse, 1) riempiendo i bordi degli ingressi con zeri, 2) aggiungendo componenti collegati casualmente a livello globale, o 3) fissando e propagando in avanti i bordi in modo da non perdere informazioni sui bordi. Di recente ero curioso dello stesso problema e ho trovato la tua domanda. Sto ancora cercando i dettagli di quel documento. Spero che sia d'aiuto.
nfmcclure,

Grazie, era esattamente quello che stavo cercando! Impressionante che ciò sia evidente con un minimo di 2 strati. Per quelli TL; DR'intera carta: usare la combinazione di 1) (zero padding) e 2) (connessioni globali casuali) è stato trovato il miglior rimedio.
Koen,


Sono curioso, non è sufficiente usare un offset non sovrapposto? Quindi nel tuo esempio hai patch 64x64 e sposti ogni volta l'input di 64 pixel mentre applichi la convoluzione. (il tuo "turno" è il mio "offset"). Qual è, immagino, lo stesso di fare zero padding?
Renthal,

1
Ci scusiamo per non aver risposto per un po ', non sto più lavorando su NN. Tuttavia, penso di poter rispondere alle domande, anche se mi rendo conto che il mio obiettivo più grande era capire meglio cosa sta succedendo (cosa che ancora non faccio). 1) Questo effetto sembra aver luogo davvero. 2) Il documento sopra citato lo descrive e 3) esplora anche i modi per superarlo. Per Renthal: le patch non sovrapposte (scegliendo offset = dimensione conv.) Dovrebbero davvero superare il mio problema, ma le persone spesso trovano patch sovrapposte per funzionare meglio. A EngrStudent, mi dispiace, non ho familiarità con il ricampionamento Bootstrap.
Koen,

Risposte:


4

Rappresentazioni sparse sono previste nei modelli gerarchici. Forse, quello che stai scoprendo è un problema intrinseco alla struttura gerarchica dei modelli di apprendimento profondo. Troverai alcuni articoli scientifici su "rappresentazioni sparse", specialmente nella ricerca sulla memoria.

Penso che trarrai beneficio dalla lettura di "campi recettoriali" nella corteccia visiva. Non solo ci sono cellule ON e OFF nel cervello dei mammiferi, ma anche cellule RF che sparano sia durante ON che OFF. Forse il problema del margine / sparsità potrebbe essere aggirato aggiornando il modello per riflettere l'attuale neuroscienza sulla visione, specialmente nei modelli animali.


3

Hai ragione che questo è un problema se la convoluzione opera solo sui pixel dell'immagine, ma il problema scompare se si azzera le immagini (come è generalmente raccomandato). Ciò garantisce che la convoluzione applichi il filtro lo stesso numero di volte a ciascun pixel.


1
Non ne sono ancora convinto. Lo zero padding creerà solo più pixel di output attorno ai pixel "centrali" che si trovano senza padding. I valori dei pixel "centrali" sono esattamente gli stessi, indipendentemente dallo zero padding utilizzato.
Koen,

1
n×nn1

La visualizzazione della convoluzione a metà pagina può aiutare a comunicare l'intuizione: cs231n.github.io/convolutional-networks
jon_simon
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.