Importance de la normalisation de la réponse locale dans CNN

41

J'ai découvert qu'Imagenet et d'autres grands réseaux CNN utilisent des couches de normalisation de réponse locale. Cependant, je ne peux pas trouver autant d'informations à leur sujet. Quelle est leur importance et quand doivent-ils être utilisés?

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

"La couche de normalisation de la réponse locale effectue une sorte d '" inhibition latérale "en normalisant les régions d'entrée locales. En mode ACROSS_CHANNELS, les régions locales s'étendent sur des canaux proches, mais n'ont pas d'étendue spatiale (c'est-à-dire qu'elles ont une forme taille locale x 1 x 1). En mode WITHIN_CHANNEL, les régions locales s'étendent dans l'espace, mais se trouvent dans des canaux distincts (c'est-à-dire qu'elles ont la forme 1 x taille locale x taille locale). Chaque valeur d'entrée est divisée par (1+ (α / n) ∑ix2i) β, où n est la taille de chaque région locale et la somme est prise sur la région centrée sur cette valeur (un remplissage nul est ajouté si nécessaire). "

Modifier:

Il semble que ces types de couches ont un impact minimal et ne sont plus utilisées. Fondamentalement, leur rôle a été minimisé par d’autres techniques de régularisation (telles que l’abandon et la normalisation par lots), de meilleures initialisations et des méthodes de formation. Voir ma réponse ci-dessous pour plus de détails.

pir
la source

Réponses:

20

Il semble que ces types de couches ont un impact minimal et ne sont plus utilisées. Fondamentalement, leur rôle a été minimisé par d’autres techniques de régularisation (telles que l’abandon et la normalisation par lots), de meilleures initialisations et des méthodes de formation. Voici ce qui est écrit dans les notes de cours du cours Stanford CS321n sur ConvNets:

Couche de normalisation

De nombreux types de couches de normalisation ont été proposés pour une utilisation dans les architectures ConvNet, avec parfois l’intention de mettre en œuvre des schémas d’inhibition observés dans le cerveau biologique. Cependant, ces couches sont récemment tombées en disgrâce, car leur contribution s’est avérée minime, voire inexistante. Pour différents types de normalisation, voir la discussion dans l'API de bibliothèque cuda-convnet d'Alex Krizhevsky.

pir
la source
20

En effet, il ne semble pas y avoir de bonne explication à un seul endroit. Le mieux est de lire les articles d’où il vient:

L'article original d'AlexNet explique un peu à la section 3.3:

  • Krizhevsky, Sutskever et Hinton, Classification ImageNet avec réseaux de neurones à convolution profonde, NIPS 2012. pdf

La manière exacte de le faire a été proposée dans (mais pas beaucoup d’informations supplémentaires ici):

  • Kevin Jarrett, Koray Kavukcuoglu, Marc'Aurelio Ranzato et Yann LeCun, Quelle est la meilleure architecture multi-étapes pour la reconnaissance d'objet ?, ICCV 2009. pdf

Il a été inspiré par la neuroscience computationnelle:

  • S. Lyu et E. Simoncelli. Représentation d'image non linéaire utilisant la normalisation par division. CVPR 2008. pdf . Cet article va plus loin dans les calculs, et est conforme à la réponse de seanv507.
  • [24] N. Pinto, DD Cox et JJ DiCarlo. Pourquoi la reconnaissance d'objets virtuels dans le monde réel est-elle difficile? PLoS Computational Biology, 2008.
Jasper Uijlings
la source
15

XXTX

La solution optimale consisterait à sphère / blanchir les entrées de chaque neurone, mais cela coûte trop cher en calcul. LCN peut être justifié comme un blanchiment approximatif basé sur l'hypothèse d'un degré élevé de corrélation entre les pixels voisins (ou les canaux). Je dirais donc que l'avantage est que la surface d'erreur est plus bénigne pour SGD ... Un taux d'apprentissage unique fonctionne bien à travers les dimensions d'entrée (de chaque neurone)

seanv507
la source
2
Normalisation des lots: accélération de la formation en réseau en profondeur en réduisant le décalage de covariable interne Sergey Ioffe, Christian Szegedy, arxiv.org/abs/1502.03167 refactualise (avec soin) les entrées de neurones et permet d’accélérer considérablement la cadence en utilisant des vitesses d’apprentissage plus importantes.
Seanv507
Vous pouvez modifier ces informations dans votre réponse à l'aide du bouton d'édition situé sous le texte de votre réponse.
Sycorax dit: Réintégrer Monica le
10

Avec cette réponse, je voudrais résumer les contributions d’autres auteurs et donner une explication unique de la technique de la LRN (ou normalisation contrastive) à ceux qui veulent simplement savoir de quoi il s’agit et comment cela fonctionne.

Motivation: ' Ce type de normalisation de réponse (LRN) implémente une forme d'inhibition latérale inspirée du type présent dans les neurones réels, créant une compétition pour les grandes activités parmi les sorties de neurones calculées à l'aide de différents noyaux. ' AlexNet 3.3

En d’autres termes, LRN permet de diminuer les réponses uniformément grandes pour le quartier et de rendre l’activation importante plus prononcée dans un quartier, c’est-à-dire de créer un contraste plus élevé sur la carte d’activation. prateekvjoshi.com déclare qu'il est particulièrement utile avec les fonctions d'activation non liées comme RELU.

Formule d'origine: Pour chaque position particulière (x, y) et le noyau i correspondant à une sortie 'pixel' unique, nous appliquons un 'filtre' intégrant des informations sur les sorties des autres n noyaux appliqués à la même position. Cette régularisation est appliquée avant la fonction d'activation. Cette régularisation repose en effet sur l'ordre des noyaux qui, à ma connaissance, n'est qu'une coïncidence malheureuse.

LRN

En pratique (voir Caffe ) 2 approches peuvent être utilisées:

  1. WITHIN_CHANNEL. Normaliser sur le voisinage local d'un seul canal (correspondant à un filtre de convolution unique). En d'autres termes, divisez la réponse d'un seul canal d'un seul pixel en fonction des valeurs de sortie du même neurone pour les pixels proches.
  2. ACROSS_CHANNELS. Pour un seul pixel normaliser les valeurs de chaque canal en fonction des valeurs de tous les canaux pour le même pixel

Utilisation réelle Le LRN a été utilisé plus souvent pendant les premiers convets comme LeNet-5. La mise en œuvre actuelle de GoogLeNet (Inception) dans Caffe utilise souvent le LRN en relation avec des techniques de pooling, mais cela semble être fait pour le simple plaisir de l'avoir. Ni Inception / GoogLeNet d'origine ( ici ), ni aucune des versions suivantes ne mentionnent LRN de quelque manière que ce soit. De plus, la mise en œuvre des réseaux Inception par TensorFlow (fournie et mise à jour par l'équipe des auteurs originaux) n'utilise pas le réseau LRN, même s'il est disponible.

Conclusion L'application de LRN avec la couche de regroupement ne nuirait pas aux performances du réseau tant que les valeurs hyper-paramètres sont raisonnables. Malgré cela, je ne suis au courant d'aucune justification récente pour appliquer la normalisation LRN / contraste dans un réseau neuronal.

y.selivonchyk
la source
J'ajouterais également que LRN est une sorte de "normalisation compétitive", selon la page 374 de Géron, Aurélien. Apprentissage automatique pratique avec Scikit-Learn et TensorFlow: concepts, outils et techniques permettant de construire des systèmes intelligents. "O'Reilly Media, Inc.", 2017 .. (Je mentionne cela parce que Hinton appelle cela seulement "la normalisation compétitive" dans la lecture . Réseaux de résolution de convolution pour la reconnaissance d'objet dans son cours.
Oren Milman
7

Le type de couche de normalisation de réponse locale (LRN) s’avère utile lors de l’utilisation de neurones à activations non bornées (par exemple, neurones linéaires rectifiés), car il permet la détection de caractéristiques à haute fréquence avec une réponse neuronale importante, tout en amortissant les réponses uniformément grandes dans un quartier local. C'est un type de régularisateur qui encourage la "compétition" pour les grandes activités parmi les groupes de neurones proches.

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

Vivkul
la source
0

i

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

k,α,βRκ=0α=1β=12

Cependant, il existe une technique beaucoup plus récente appelée "normalisation par lots" (voir document ) qui fonctionne de manière assez similaire et suggère de ne plus utiliser LRN. La normalisation par lots fonctionne également au pixel près:

y=xμσ2+ϵγ+β

μσ2ε>0γ,βR

La réponse est donc la suivante: la normalisation de la réponse locale n’est plus importante, car nous avons quelque chose qui fonctionne mieux et qui a remplacé LRN: Batch Normalization.

Voir également

Martin Thoma
la source
Je pense que ce n'est pas correct. LRN est appliqué dans la sortie du noyau, pas en entrée (bien qu'Alexnet utilise la normalisation en entrée, mais cela est séparé).
Shital Shah