Importanza della normalizzazione della risposta locale nella CNN


41

Ho scoperto che Imagenet e altri grandi CNN fanno uso di livelli di normalizzazione della risposta locale. Tuttavia, non riesco a trovare così tante informazioni su di loro. Quanto sono importanti e quando dovrebbero essere usati?

Da http://caffe.berkeleyvision.org/tutorial/layers.html#data-layers :

"Lo strato di normalizzazione della risposta locale esegue una sorta di" inibizione laterale "normalizzando le regioni di input locali. Nella modalità ACROSS_CHANNELS, le regioni locali si estendono attraverso i canali vicini, ma non hanno estensione spaziale (cioè hanno forma local_size x 1 x 1) Nella modalità WITHIN_CHANNEL, le regioni locali si estendono spazialmente, ma si trovano in canali separati (ovvero hanno forma 1 x dimensione_ locale x dimensione_ locale). Ogni valore di input è diviso per (1+ (α / n) ∑ix2i) β, dove n è la dimensione di ciascuna regione locale e la somma viene presa sulla regione centrata su quel valore (se necessario, viene aggiunta la spaziatura zero). "

Modificare:

Sembra che questi tipi di strati abbiano un impatto minimo e non vengano più utilizzati. Fondamentalmente, il loro ruolo è stato superato da altre tecniche di regolarizzazione (come dropout e normalizzazione batch), migliori inizializzazioni e metodi di allenamento. Vedi la mia risposta di seguito per maggiori dettagli.

Risposte:


20

Sembra che questi tipi di strati abbiano un impatto minimo e non vengano più utilizzati. Fondamentalmente, il loro ruolo è stato superato da altre tecniche di regolarizzazione (come dropout e normalizzazione batch), migliori inizializzazioni e metodi di allenamento. Questo è ciò che è scritto nelle note della lezione per il Corso Stanford CS321n su ConvNets:

Livello di normalizzazione

Molti tipi di strati di normalizzazione sono stati proposti per l'uso nelle architetture ConvNet, a volte con l'intenzione di implementare schemi di inibizione osservati nel cervello biologico. Tuttavia, questi livelli sono recentemente sfuggiti al favore perché in pratica il loro contributo si è dimostrato minimo, se del caso. Per vari tipi di normalizzazioni, vedi la discussione nell'API della libreria cuda-convnet di Alex Krizhevsky.


20

In effetti, non sembra esserci una buona spiegazione in un unico posto. La cosa migliore è leggere gli articoli da dove viene:

L'articolo AlexNet originale spiega un po 'nella Sezione 3.3:

  • Krizhevsky, Sutskever e Hinton, Classificazione ImageNet con reti neurali profonde convoluzionali, NIPS 2012. pdf

Il modo esatto per farlo è stato proposto in (ma non molte informazioni extra qui):

  • Kevin Jarrett, Koray Kavukcuoglu, Marc'Aurelio Ranzato e Yann LeCun, Qual è la migliore architettura multistadio per il riconoscimento di oggetti ?, ICCV 2009. pdf

È stato ispirato dalla neuroscienza computazionale:

  • S. Lyu ed E. Simoncelli. Rappresentazione di immagini non lineari mediante normalizzazione divisiva. CVPR 2008. pdf . Questo documento approfondisce la matematica ed è conforme alla risposta di seanv507.
  • [24] N. Pinto, DD Cox e JJ DiCarlo. Perché è difficile il riconoscimento di oggetti visivi nel mondo reale? PLoS Computational Biology, 2008.

15

Ecco la mia risposta suggerita, anche se non pretendo di essere informato. Quando si esegue la discesa gradiente su un modello lineare, la superficie dell'errore è quadratica, con la curvatura determinata da , dove è l'input. Ora la superficie di errore ideale per la discesa o la pendenza ha la stessa curvatura in tutte le direzioni (altrimenti la dimensione del passo è troppo piccola in alcune direzioni e troppo grande in altre). Normalizzando i tuoi input ridimensionando gli input a zero, la varianza 1 aiuta ed è veloce: ora le direzioni lungo ciascuna dimensione hanno tutte la stessa curvatura, che a sua volta limita la curvatura in altre direzioni.XXTX

La soluzione ottimale sarebbe quella di sfera / imbiancare gli input per ciascun neurone, tuttavia questo è computazionalmente troppo costoso. La LCN può essere giustificata come uno sbiancamento approssimativo basato sul presupposto di un alto grado di correlazione tra pixel (o canali) vicini. Quindi direi che il vantaggio è che la superficie dell'errore è più favorevole per SGD ... Un singolo tasso di apprendimento funziona bene attraverso le dimensioni di input (di ciascun neurone)


2
Normalizzazione in lotti: accelerare l'allenamento della rete profonda riducendo lo spostamento della covariata interna Sergey Ioffe, Christian Szegedy, arxiv.org/abs/1502.03167 eseguono un ridimensionamento (attentamente progettato) degli input dei neuroni e ottengono accelerazioni sostanziali grazie alla possibilità di utilizzare tassi di apprendimento più grandi.
seanv507,

Puoi modificare queste informazioni nella tua risposta utilizzando il pulsante Modifica sotto il testo della risposta.
Ripristina Monica il

10

Con questa risposta vorrei riassumere i contributi di altri autori e fornire una spiegazione in un unico posto della tecnica LRN (o di normalizzazione contrastante) per coloro che vogliono solo essere consapevoli di ciò che è e di come funziona.

Motivazione: ' Questo tipo di normalizzazione della risposta (LRN) implementa una forma di inibizione laterale ispirata al tipo che si trova nei neuroni reali, creando competizione per grandi attività tra le uscite dei neuroni calcolate usando kernel diversi. ' AlexNet 3.3

In altre parole, LRN consente di ridurre le risposte uniformemente grandi per il vicinato e di rendere più ampia l'attivazione più ampia all'interno di un quartiere, ovvero di creare un maggiore contrasto nella mappa di attivazione. prateekvjoshi.com afferma che è particolarmente utile con funzioni di attivazione illimitate come RELU.

Formula originale: Per ogni particolare posizione (x, y) e kernel i che corrisponde ad un singolo 'pixel' uscita si applica una 'filtro', che incorpora le informazioni relative uscite degli altri n noccioli applicata alla stessa posizione. Questa regolarizzazione viene applicata prima della funzione di attivazione. Questa regolarizzazione, infatti, si basa sull'ordine dei kernel che, per quanto ne so, è solo una sfortunata coincidenza.

LRN

In pratica (vedi Caffe ) si possono usare 2 approcci:

  1. WITHIN_CHANNEL. Normalizza su vicinato locale di un singolo canale (corrispondente a un singolo filtro convoluzionale). In altre parole, dividi la risposta di un singolo canale di un singolo pixel in base ai valori di output dello stesso neurone per i pixel vicini.
  2. ACROSS_CHANNELS. Per un singolo pixel normalizzare i valori di ogni canale in base ai valori di tutti i canali per lo stesso pixel

Uso effettivo LRN veniva usato più spesso durante i primi giorni di convegni come LeNet-5. L'attuale implementazione di GoogLeNet (Inception) in Caffe utilizza spesso LRN in connessione con le tecniche di pooling, ma sembra essere fatto per il solo gusto di averlo. Né Inception / GoogLeNet originali ( qui ) né una delle seguenti versioni menzionano LRN in alcun modo. Inoltre, l'implementazione di TensorFlow delle reti Inception (fornita e aggiornata dal team di autori originali) non utilizza LRN nonostante sia disponibile.

Conclusione L' applicazione di LRN insieme al livello di pooling non danneggerebbe le prestazioni della rete fintanto che i valori di iperparametri sono ragionevoli. Nonostante ciò, non sono a conoscenza di alcuna giustificazione recente per l'applicazione della normalizzazione LRN / contrasto in una rete neurale.


Vorrei anche aggiungere che LRN è una sorta di "normalizzazione competitiva", secondo la pagina 374 di Géron, Aurélien. Apprendimento automatico pratico con Scikit-Learn e TensorFlow: concetti, strumenti e tecniche per costruire sistemi intelligenti. "O'Reilly Media, Inc.", 2017 .. (Lo dico perché Hinton lo chiama solo "normalizzazione competitiva" nella conferenza Reti convoluzionali per il riconoscimento di oggetti nel suo corso di corso.
Oren Milman,

7

Il tipo di livello di risposta locale (LRN) risulta utile quando si utilizzano neuroni con attivazioni illimitate (ad es. Neuroni lineari rettificati), poiché consente il rilevamento di caratteristiche ad alta frequenza con una risposta neuronale elevata, mentre smorza risposte uniformemente grandi in un quartiere locale. È un tipo di regolarizzatore che incoraggia la "competizione" per le grandi attività tra i gruppi di neuroni vicini.

src- https://code.google.com/p/cuda-convnet/wiki/LayerParams#Local_response_normalization_layer_(same_map)


0

La normalizzazione della risposta locale (LRN) viene eseguita in pixel per ciascun canale :i

xi=xi(k+(αjxj2))β

dove sono costanti. Notare che si ottiene la normalizzazione L2 se si imposta , , .k,α,βRκ=0α=1β=12

Tuttavia, esiste una tecnica molto più recente chiamata "normalizzazione batch" (vedi articolo ) che funziona in modo abbastanza simile e suggerisce di non usare più LRN. La normalizzazione in batch funziona anche in termini di pixel:

y=xμσ2+ϵγ+β

dove è la media, è la varianza, è una piccola costante, sono parametri apprendibili che consentono alla rete di rimuovere la normalizzazione.μσ2ε>0γ,βR

Quindi la risposta è: la normalizzazione della risposta locale non è più importante, perché abbiamo qualcosa che funziona meglio e abbiamo sostituito LRN: normalizzazione batch.

Guarda anche


Penso che questo non sia corretto. LRN viene applicato nell'output del kernel, non in input (sebbene Alexnet utilizzi la normalizzazione dell'input, ma questo è separato).
Shital Shah,
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.