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.
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.
En pratique (voir Caffe ) 2 approches peuvent être utilisées:
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.
la source
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)
la source
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:
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
la source