82 votes

Normalisation d'instance vs normalisation par lot

Je comprends que la normalisation par lots permet d'accélérer l'apprentissage en rapprochant l'activation de la distribution gaussienne unitaire, ce qui permet de résoudre le problème des gradients évanescents. Les actes de normalisation par lot sont appliqués différemment au moment de la formation (utilisation de la moyenne/var de chaque lot) et au moment du test (utilisation de la moyenne/var courante finalisée de la phase de formation).

La normalisation d'instance, d'autre part, agit comme une normalisation de contraste comme mentionné dans ce document. https://arxiv.org/abs/1607.08022 . Les auteurs mentionnent que les images stylisées de sortie ne doivent pas dépendre du contraste de l'image de contenu d'entrée et que la normalisation des instances est donc utile.

Mais alors, ne devrions-nous pas également utiliser la normalisation d'instance pour la classification d'images où l'étiquette de classe ne devrait pas dépendre du contraste de l'image d'entrée. Je n'ai pas vu d'article utilisant la normalisation d'instance à la place de la normalisation par lot pour la classification. Quelle en est la raison ? De plus, la normalisation par lot et la normalisation par instance peuvent-elles et doivent-elles être utilisées ensemble ? J'ai hâte d'avoir une compréhension intuitive et théorique de l'utilisation de chaque normalisation.

125voto

Maxim Points 28843

Définition

Commençons par la définition stricte des deux :

Normalisation par lots batch-norm-formula

Normalisation des instances instance-norm-formula

Comme vous pouvez le remarquer, ils font la même chose, sauf pour le nombre de tenseurs d'entrée qui sont normalisés conjointement. La version par lot normalise toutes les images à travers le lot et les emplacements spatiaux (dans le cas du CNN, dans le cas ordinaire c'est différent ) ; la version instance normalise chaque élément du lot indépendamment, c'est-à-dire, à travers emplacements spatiaux seulement.

En d'autres termes, là où la norme de lot calcule une moyenne et un écart-type (rendant ainsi la distribution de la couche entière gaussienne), la norme d'instance calcule T d'entre elles, ce qui donne à chaque distribution d'image individuelle un aspect gaussien, mais pas de manière conjointe.

Une analogie simple : lors de l'étape de prétraitement des données, il est possible de normaliser les données par image ou de normaliser l'ensemble des données.

Crédit : les formules sont issues de ici .

Quelle normalisation est la meilleure ?

La réponse dépend de l'architecture du réseau, en particulier de ce qui est fait après la couche de normalisation. Les réseaux de classification d'images empilent généralement les cartes de caractéristiques et les transmettent à la couche FC, laquelle partager les poids dans le lot (la méthode moderne consiste à utiliser la couche CONV au lieu de FC, mais l'argument reste valable).

C'est là que les nuances de la distribution commencent à avoir de l'importance : le même neurone va recevoir l'entrée de toutes les images. Si la variance dans le lot est élevée, le gradient des petites activations sera complètement supprimé par les activations élevées, ce qui est exactement le problème que la norme de lot tente de résoudre. C'est pourquoi il est fort possible que la normalisation par instance n'améliore pas du tout la convergence du réseau.

D'autre part, la normalisation par lots ajoute un bruit supplémentaire à l'apprentissage, car le résultat d'une instance particulière dépend des instances voisines. Il s'avère que ce type de bruit peut être soit bon soit mauvais pour le réseau. Ceci est bien expliqué dans le "Normalisation du poids" L'article de Tim Salimans et al, qui nomme les réseaux neuronaux récurrents et les DQNs d'apprentissage par renforcement en tant que applications sensibles au bruit . Je ne suis pas tout à fait sûr, mais je pense que la même sensibilité au bruit était le principal problème dans la tâche de stylisation, que l'instance norm a essayé de combattre. Il serait intéressant de vérifier si la norme de poids est plus performante pour cette tâche particulière.

Peut-on combiner la normalisation par lot et par instance ?

Bien qu'il s'agisse d'un réseau neuronal valable, il n'a aucune utilité pratique. Le bruit de normalisation des lots aide le processus d'apprentissage (dans ce cas, il est préférable) ou lui nuit (dans ce cas, il est préférable de l'omettre). Dans les deux cas, laisser le réseau avec un seul type de normalisation est susceptible d'améliorer les performances.

7 votes

Vous dites que "dans le CNN, c'est différent", mais les formules que vous fournissez ici son les formules pour les CNNs. Dans la normalisation standard du lot, les éléments sont normalisés uniquement à travers la dimension du lot. Dans le cas du CNN, les éléments sont normalisés à travers le lot. y les dimensions spatiales. La réponse dont vous donnez le lien l'explique correctement.

3 votes

J'aimerais ajouter qu'un article récent a été publié, suggérant une couche qui combine différentes normalisations avec des paramètres apprenables. Ainsi, pour laisser le réseau "décider" de la normalisation à prendre en compte "Apprentissage différentiable de la normalisation via la normalisation commutable".

3 votes

De même, avec la normalisation des instances, le comportement est le même lors de la formation et de l'inférence. Pendant l'inférence, les statistiques utilisées pour la normalisation sont calculées à partir des images d'entrée, plutôt que d'utiliser les statistiques calculées dans l'ensemble d'entraînement.

78voto

Stephen Morrell Points 101

Excellente question, à laquelle il a déjà été répondu de manière satisfaisante. Juste pour ajouter : j'ai trouvé cette visualisation du document Group Norm de Kaiming He utile.

Source : lien vers l'article sur Medium qui contraste les normes

21 votes

C = canaux ; N = taille du lot ; H,W = représentation 1D des sorties dans le canal.

0 votes

Et la norme de la chaîne ? Est-ce que ça existe ?

20voto

hkchengrex Points 796

Je voulais ajouter des informations à cette question car il existe des travaux plus récents dans ce domaine. Votre intuition

utiliser la normalisation d'instance pour la classification d'images où l'étiquette de classe ne doit pas dépendre du contraste des images. ne doit pas dépendre du contraste de l'image d'entrée

est en partie correct. Je dirais qu'un cochon en plein jour est toujours un cochon lorsque l'image est prise de nuit ou à l'aube. Cependant, cela ne signifie pas que l'utilisation de la normalisation d'instance sur l'ensemble du réseau vous donnera un meilleur résultat. Voici quelques raisons :

  1. La distribution des couleurs joue toujours un rôle. S'il y a beaucoup de rouge, il est plus probable qu'il s'agisse d'une pomme que d'une orange.
  2. Dans les couches ultérieures, on ne peut plus imaginer que la normalisation des instances agisse comme une normalisation des contrastes. Des détails spécifiques à la classe apparaîtront dans les couches plus profondes et leur normalisation par instance nuira considérablement aux performances du modèle.

IBN-Net utilise à la fois la normalisation par lot et la normalisation par instance dans son modèle. Ils n'ont utilisé la normalisation d'instance que dans les premières couches et ont obtenu une amélioration de la précision et de la capacité de généralisation. Ils ont ouvert le code ici .

enter image description here

7voto

praveen Points 1

IN fournit une in-variance visuelle et d'apparence et BN accélère la formation et préserve la caractéristique discriminante. IN est préféré dans les couches peu profondes (couche de départ de CNN) afin d'éliminer la variation d'apparence et BN est préféré dans les couches profondes (dernière couche de CNN) devrait être réduit afin de maintenir la discrimination.

0 votes

Il serait très utile que vous puissiez fournir une preuve de cette affirmation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X