Que fait la normalisation par lots ?

Questions d’entrevue Deep learning

Seniornormalisationoptimisation

Elle normalise les activations d’une couche — moyenne nulle, variance unité — en utilisant les statistiques calculées sur le lot courant, puis les remet à l’échelle par deux paramètres appris, un facteur et un décalage. Ces deux paramètres sont importants : ils permettent au réseau d’annuler la normalisation si elle ne lui sert pas.

Ce qu’elle apporte

  • Un entraînement plus stable et plus rapide, avec un taux d’apprentissage plus élevé qu’il serait impossible d’utiliser sans elle.
  • Une tolérance à l’initialisation : les échelles sont remises d’aplomb à chaque étage, donc un mauvais tirage initial ne condamne plus l’entraînement.
  • Un effet régularisant léger, dû au bruit des statistiques d’un lot à l’autre. C’est ce qui explique qu’on puisse souvent réduire le dropout quand on l’utilise.

Sur l’explication du pourquoi, il faut être honnête, et c’est ce qui distingue une bonne réponse : l’article d’origine invoquait la réduction du internal covariate shift, c’est-à-dire la dérive des distributions d’activations pendant l’entraînement. Des travaux ultérieurs ont contesté cette explication et montré que l’effet principal est un lissage du paysage de la fonction de perte, qui rend les gradients plus prévisibles. Savoir que l’explication canonique est discutée vaut mieux que de la réciter.

Le piège de l’inférence, qui est la vraie question posée

À l’inférence, il n’y a pas de lot : on prédit souvent un seul exemple, et il n’existe pas de moyenne de lot à utiliser. La couche conserve donc pendant l’entraînement une moyenne mobile des statistiques, et s’en sert au moment de prédire.

Les conséquences pratiques, qui sont autant de pannes réelles :

  • Oublier model.eval() fait utiliser les statistiques du lot à l’inférence. Les prédictions dépendent alors des autres exemples présents dans le même lot, ce qui produit des résultats instables et incompréhensibles.
  • Un lot trop petit rend les statistiques d’entraînement bruitées et la moyenne mobile peu fiable. En dessous de 8 ou 16 exemples, la normalisation par lots se dégrade franchement — c’est sa limite fondamentale.
  • L’écart entre les statistiques mémorisées et les données de production est une source de dégradation silencieuse quand la distribution d’entrée change.

Les variantes, et pourquoi elles existent

C’est précisément cette dépendance au lot que les autres normalisations éliminent, en changeant l’axe sur lequel les statistiques sont calculées :

NormalisationStatistiques calculées surUsage
par lotsle lot, par canalvision convolutive
de coucheles caractéristiques d’un exempletransformeurs, séquences
d’instancechaque canal d’un exempletransfert de style
de groupedes groupes de canauxvision à petits lots

La normalisation de couche est celle des transformeurs, et pour une raison directe : elle ne dépend que de l’exemple lui-même, donc elle fonctionne avec un lot de taille 1, avec des séquences de longueurs variables, et à l’inférence sans statistiques mémorisées. C’est ce qui la rend indispensable aux modèles de langage.

Toutes les questions Deep learning