Je lisais le document de normalisation par lots [1] et il y avait une section où se trouve un exemple, essayant de montrer pourquoi la normalisation doit être effectuée avec soin. Honnêtement, je ne peux pas comprendre comment l'exemple fonctionne et je suis vraiment très curieux de comprendre autant que possible le papier. Permettez-moi d'abord de le citer ici:
Par exemple, considérons une couche à l'entrée u qui ajoute le biais appris b, et normalise le résultat en soustrayant la moyenne de l'activation calculée sur les données de où est l'ensemble des valeurs de sur l'ensemble d'apprentissage, et . Si une étape de descente de gradient ignore la dépendance de sur b , alors elle mettra à jour b ← b + Δ > b , où Δ b ∝ - ∂ l . Alorsu+(b+Δb)-E[u+(b+Δb)]=u+b-E[u+b]. Ainsi, la combinaison de la mise à jour debet du changement ultérieur de normalisation n'a conduit à aucun changement dans la sortie de la couche ni, par conséquent, à la perte.
Je pense que je comprends le message, que si l'on ne fait pas la normalisation correctement, cela peut être mauvais. Je ne sais simplement pas comment l'exemple qu'ils utilisent dépeint cela.
Je suis conscient qu'il est difficile d'aider quelqu'un s'il n'est pas plus précis sur ce qui le rend confus. Je vais donc fournir dans la section suivante les choses qui me déroutent dans leur explication.
Je pense que la plupart de mes confusions peuvent être notées, je vais donc clarifier.
Tout d'abord, je pense que l'une des choses qui me déroute beaucoup, c'est ce que cela signifie pour les auteurs d'avoir une unité dans le réseau et ce qu'est une activation. Habituellement, je pense à une activation comme:
où est les vecteurs d'entités brutes de la première couche d'entrée.
De plus, je pense que l'une des premières choses qui m'embrouille (pour la raison précédente) est le scénario qu'ils essaient d'expliquer. Ça dit:
normalise le résultat de la soustraction de la moyenne de l'activation calculé sur les données où x = u + b
Je pense que ce qu'ils essaient de dire, c'est qu'au lieu d'utiliser les activations calculées par la passe avant, on effectue une sorte de "normalisation" en soustrayant l'activation moyenne:
puis transmet cela à l'algorithme de rétropropagation. Ou du moins c'est ce qui aurait du sens pour moi.
À ce sujet, je suppose que ce qu'ils appellent est peut-être x ( l ) ? C'est ce que je devinerais parce qu'ils l'appellent "entrée" et ont l'équation x = u + b (je suppose qu'ils utilisent l'unité d'identité / d'activation linéaire pour leur réseau neuronal? Peut-être).
Pour plus me embrouiller, ils définissent comme quelque chose de proportionnel à la dérivée partielle, mais la dérivée partielle est calculé par rapport à x , ce qui me semble vraiment bizarre. Habituellement, les dérivées partielles lors de l'utilisation de la descente de gradient sont par rapport aux paramètres du réseau. Dans le cas d'un offset, j'aurais pensé:
est plus logique que de prendre la dérivée de par rapport aux activations normalisées. Je tentais de comprendre pourquoi ils prendraient la dérivée par rapport à x et je pensais que peut - être qu'ils se référaient aux deltas quand ils ont écrit ∂ l cargénéralementqui est la seule partie de l'algorithme avant-prop qui a une dérivée par rapport au pré-activation depuis l'équation de delta est:
Une autre chose qui me déroute est:
Alors .
ils ne disent pas vraiment ce qu'ils essaient de calculer dans l'équation ci-dessus mais je déduis qu'ils essaient de calculer l'activation normalisée mise à jour (pour la première couche?) après que soit mis à jour en b + Δ b ? Je ne sais pas si j'achète leur point car je pense que la bonne équation aurait dû être:
Je ne sais pas si c'est la bonne compréhension mais j'ai réfléchi à leur exemple. Il semble que leur exemple n'ait pas d'unité d'activation non linéaire (utilise l'identité) et ils ne parlent que de la première couche d'entrée? Puisqu'ils ont omis beaucoup de détails et que la notation n'est pas très claire, je ne peux pas en déduire exactement de quoi ils parlent. Est-ce que quelqu'un sait comment exprimer cet exemple avec une notation qui exprime ce qui se passe à chaque couche? Est-ce que quelqu'un comprend ce qui se passe réellement avec cet exemple et veut partager sa sagesse avec moi?
[1]: Ioffe S. et Szegedy C. (2015),
«Batch Normalisation: Accelerating Deep Network Training by Reducing Internal Covariate Shift»,
Actes de la 32e Conférence internationale sur l'apprentissage automatique , Lille, France, 2015.
Journal of Machine Learning Recherche: W&CP volume 37
la source
Réponses:
Ils ont donc rendu l'étape de descente du gradient consciente de la normalisation de leur méthode.
Concernant vos questions
Il peut être utile de jeter un œil à certaines implémentations open source de normalisation par lots, par exemple dans Lasagne et Keras .
Il y a une autre question qui peut sembler liée, pourquoi prendre le gradient des moments (moyenne et variance) lors de l'utilisation de la normalisation par lots dans un réseau neuronal?
la source