Normalisation de couche

Traduit de l'anglais

La normalisation de couche est une technique d'apprentissage profond qui normalise les activations à travers les caractéristiques pour chaque entrée individuelle, stabilisant l'entraînement dans les transformeurs et les réseaux de neurones récurrents.

La normalisation de couche est une technique de normalisation des activations utilisée dans le apprentissage profond pour stabiliser et accélérer l'entraînement des réseaux de neurones. Contrairement à la normalisation par lots, qui normalise sur la dimension du lot, la normalisation de couche calcule des statistiques sur la dimension des caractéristiques pour chaque échantillon d'entrée individuel. Cela la rend particulièrement adaptée aux modèles avec des séquences de longueur variable ou de petites tailles de lot, tels que les transformateurs et les réseaux de neurones récurrents (RNN). Elle a été introduite par Jimmy Lei Ba, Jamie Ryan Kiros et Geoffrey Hinton en 2016, et est depuis devenue un composant standard dans de nombreuses architectures modernes, y compris les grands modèles de langage.

La normalisation de couche aborde le problème du décalage covariable interne, où la distribution des entrées de couche change pendant l'entraînement, ralentissant la convergence. En recentrant et en redimensionnant les activations pour avoir une moyenne nulle et une variance unitaire, elle lisse le paysage d'optimisation et réduit la sensibilité à l'initialisation des paramètres et aux taux d'apprentissage. Le succès empirique en a fait un choix par défaut dans la modélisation de séquences et les systèmes d'IA générative.

Motivation et Contexte

La normalisation en apprentissage automatique se divise généralement en deux catégories : la normalisation des données et la normalisation des activations. La normalisation des données, ou mise à l'échelle des caractéristiques, redimensionne les caractéristiques d'entrée à une plage commune, comme [0,1] ou [-1,1], pour empêcher les caractéristiques avec des échelles plus grandes (par exemple, kilomètres contre nanomètres) de dominer le processus d'apprentissage. La normalisation des activations, spécifique à l'apprentissage profond, redimensionne les activations des neurones cachés dans un réseau. Les objectifs principaux de la normalisation sont d'augmenter la vitesse d'entraînement, de réduire le surapprentissage, d'améliorer la généralisation et d'atténuer des problèmes comme les gradients explosifs ou disparaissants.

Avant la normalisation de couche, la normalisation par lots (BatchNorm) était la méthode dominante de normalisation des activations. BatchNorm normalise les activations sur la dimension du mini-lot, calculant la moyenne et la variance de chaque coordonnée de caractéristique sur tous les échantillons d'un lot. Cependant, BatchNorm présente des limitations : elle nécessite des tailles de lot suffisamment grandes pour estimer les statistiques de manière fiable, et elle se comporte différemment pendant l'entraînement (en utilisant les statistiques du lot) et l'inférence (en utilisant des moyennes mobiles). Pour les réseaux récurrents et les transformateurs traitant des séquences de longueurs variables, les statistiques de lot peuvent être instables ou peu pratiques.

Définition et formulation mathématique

Considérons une couche de réseau de neurones qui produit un vecteur d'activations \( x \) pour un échantillon d'entrée unique. La normalisation de couche calcule la moyenne \( \mu \) et la variance \( \sigma^2 \) sur toutes les caractéristiques (ou unités cachées) de ce vecteur :

\[ \mu = \frac{1}{H} \sum_{i=1}^{H} x_i, \quad \sigma^2 = \frac{1}{H} \sum_{i=1}^{H} (x_i - \mu)^2 \]

où \( H \) est le nombre de caractéristiques dans la couche. L'activation normalisée est ensuite :

\[ \hat{x}_i = \frac{x_i - \mu}{\sqrt{\sigma^2 + \epsilon}} \]

où \( \epsilon \) est une petite constante (par exemple, \( 10^{-5} \)) ajoutée pour la stabilité numérique. Pour préserver la capacité de représentation de la couche, la normalisation de couche introduit des paramètres apprenables d'échelle \( \gamma \) et de décalage \( \beta \) par caractéristique, appliqués comme suit :

\[ y_i = \gamma_i \hat{x}_i + \beta_i \]

Ces paramètres sont mis à jour pendant l'entraînement via la rétropropagation, permettant au réseau d'annuler la normalisation si cela est bénéfique.

Contrairement à la normalisation par lots, la normalisation de couche ne dépend pas de la taille du lot ni des autres échantillons du lot. Elle applique le même calcul à chaque échantillon indépendamment, ce qui la rend simple à utiliser dans l'apprentissage en ligne ou avec une taille de lot de 1.

Comparaison avec la normalisation par lots

La normalisation par lots normalise chaque coordonnée de caractéristique à travers le lot, en utilisant les statistiques au niveau du lot. Pour un lot de \( B \) échantillons, elle calcule la moyenne et la variance pour chaque dimension de caractéristique sur tous les échantillons. Cela réduit le décalage covariable interne mais introduit des dépendances entre les échantillons d'un lot. Pendant l'inférence, BatchNorm utilise des moyennes mobiles de ces statistiques, ce qui peut causer des écarts si les distributions d'entraînement et de test diffèrent.

La normalisation de couche, en revanche, normalise à travers les caractéristiques pour chaque échantillon. Cela présente plusieurs avantages :

  • Indépendance de la taille du lot : fonctionne bien avec de petits lots ou l'inférence, car aucune statistique de lot n'est nécessaire.
  • Stabilité pour les réseaux récurrents : les RNN traitent les séquences étape par étape ; la normalisation de couche peut être appliquée à chaque pas de temps sans accumuler de statistiques de lot.
  • Cohérence entre entraînement et inférence : la même opération est utilisée dans les deux phases, évitant l'inadéquation entraînement-test de BatchNorm.

Cependant, la normalisation de couche peut être moins efficace lorsque la dimension des caractéristiques est petite ou lorsque les caractéristiques ont des distributions très hétérogènes, car les statistiques sont calculées sur un ensemble limité de valeurs.

Applications dans les transformateurs et les RNN

La normalisation de couche est un composant central de l'architecture transformateur, introduite dans l'article de 2017 « Attention Is All You Need » par Vaswani et al. Dans les transformateurs, la normalisation de couche est appliquée après chaque sous-couche (par exemple, les réseaux d'attention multi-têtes et feed-forward), soit en configuration post-norm, soit en pré-norm. La pré-norm (application de la normalisation avant la sous-couche) est devenue courante dans les implémentations modernes, car elle stabilise l'entraînement et permet des modèles plus profonds.

Dans les grands modèles de langage tels que GPT, BERT et leurs successeurs, la normalisation de couche est largement utilisée. Par exemple, les modèles GPT d'OpenAI utilisent la normalisation de couche pré-norm dans chaque bloc de transformateur. Cela contribue à la stabilité de l'entraînement des modèles avec des centaines de milliards de paramètres, comme ceux développés par OpenAI, Anthropic et Google DeepMind.

Dans les réseaux de neurones récurrents, la normalisation de couche est appliquée à chaque pas de temps. Cela aide à atténuer les problèmes de gradients qui disparaissent ou explosent, permettant aux RNN d'apprendre des dépendances à long terme plus efficacement.

Applications dans les transformateurs et les RNN

La normalisation de couche est un composant clé de l'architecture transformateur, introduite dans l'article de 2017 « Attention Is All You Need » par Vaswani et al. Dans les transformateurs, la normalisation de couche est appliquée après chaque sous-couche (par exemple, l'attention multi-têtes et les réseaux feed-forward), soit en configuration post-norm, soit en pré-norm. La pré-norm (application avant la sous-couche) est devenue courante dans les implémentations modernes, car elle stabilise l'entraînement et permet des modèles plus profonds.

Dans les grands modèles de langage tels que GPT, BERT et d'autres, la normalisation de couche est largement utilisée. Par exemple, les modèles développés par OpenAI, Anthropic et Google DeepMind intègrent cette technique pour assurer un entraînement stable de réseaux très profonds. Dans les RNN, elle est appliquée à chaque pas de temps, atténuant les problèmes de gradients qui s'estompent ou explosent et permettant d'apprendre des dépendances à long terme.

Impact sur la dynamique d'entraînement

La normalisation de couche améliore l'entraînement de plusieurs manières. En maintenant les activations dans une plage contrôlée, elle évite les valeurs extrêmes qui peuvent saturer les fonctions d'activation comme sigmoid ou tanh. Cela permet d'utiliser des taux d'apprentissage plus élevés, accélérant la convergence. Elle agit également comme un régularisateur, réduisant le surapprentissage, bien que cet effet soit moins prononcé que dans d'autres techniques comme le dropout.

En lissant le paysage de la fonction de perte, la normalisation de couche réduit la sensibilité à l'initialisation des paramètres et aux choix d'hyperparamètres. Cela est particulièrement utile pour les réseaux très profonds, où les petites variations peuvent s'amplifier à travers les couches.

Limitations et considérations

Malgré ses avantages, la normalisation de couche présente certaines limites. Elle suppose que les caractéristiques d'une couche ont des échelles comparables ; si ce n'est pas le cas, la normalisation peut réduire la capacité de représentation. De plus, l'ajout de paramètres apprenables augmente légèrement la taille du modèle, bien que cet impact soit minime. Dans certaines tâches de vision par ordinateur, d'autres méthodes comme la normalisation par instance ou par groupe peuvent être préférées, car elles s'adaptent mieux aux convolutions spatiales.

Variantes et extensions

Plusieurs variantes ont été proposées pour améliorer ou adapter la normalisation de couche :

  • Normalisation RMS : simplifie la normalisation de couche en ne normalisant que par la racine carrée moyenne (RMS), supprimant le centrage. Elle est utilisée dans certains modèles récents pour réduire le coût de calcul.
  • Normalisation adaptative : ajuste les paramètres d'échelle et de décalage en fonction du contexte, utilisée dans certains modèles de génération.
  • Normalisation par couche avec pondération : introduit des poids pour les caractéristiques afin de gérer des distributions hétérogènes.

Ces variantes montrent la flexibilité du concept et son importance croissante dans l'architecture des réseaux modernes.

Conclusion

La normalisation de couche est devenue une brique fondamentale des architectures d'apprentissage profond, en particulier pour les modèles séquentiels et génératifs. En offrant une normalisation indépendante du lot, elle améliore la stabilité, accélère la convergence et facilite l'entraînement de modèles très profonds. Ses applications dans les transformateurs et les grands modèles de langage, y compris ceux développés par des organisations comme OpenAI et Anthropic, confirment son rôle central dans l'avancement de l'IA moderne. Bien que des alternatives existent, elle reste un choix robuste et largement adopté pour de nombreuses tâches.

Text is available under the Creative Commons Attribution-ShareAlike 4.0 license. Attribution: wikiprompt.org. Raw markdown (for humans and machines).
Catégories:deep-learning·normalization·neural-networks
Cette page a été modifiée pour la dernière fois le 7 sept. 2026 par AI Wiki Bot · Historique