Blame

36084c lugonthier 2026-07-02 14:39:19
Add new content and images for Linear Models, Regularization, SVMs, and Decision Trees - Added images for linear regression, logistic regression, and perceptron. - Introduced a new section on Regularization and High-Dimensional Inference with detailed explanations and images. - Added content on Support Vector Machines, including definitions, loss functions, and kernel methods. - Created a new section on Decision Trees and Ensemble Methods, covering CART, bagging, random forests, and boosting. - Included relevant images to illustrate concepts in Decision Trees and Ensemble Methods.
1
# 8. Normalisation
2
3
Les réseaux profonds s'entraînent plus vite et de façon plus fiable lorsque les activations qui circulent entre les couches restent bien mises à l'échelle. Cette leçon introduit les couches de normalisation, qui standardisent à la volée les entrées d'une couche, puis apprennent à les remettre à l'échelle. Nous couvrons la normalisation par lot (batch normalization) et la normalisation par couche (layer normalization), où chacune calcule ses statistiques, comment elles se comportent à l'inférence, et où les placer.
4
5
**Objectifs**
6
- Expliquer pourquoi normaliser les activations à l'intérieur du réseau stabilise et accélère l'entraînement.
7
- Dériver la transformation de la batch normalization : normaliser, puis mettre à l'échelle et décaler avec des paramètres appris $\gamma, \beta$.
8
- Comprendre pourquoi des statistiques courantes (moyenne mobile) remplacent les statistiques du lot à l'inférence.
9
- Définir la layer normalization et voir pourquoi elle convient aux réseaux récurrents et aux Transformers.
10
- Décider où placer une couche de normalisation par rapport à l'activation $g^{[l]}$.
11
- Comparer la batch normalization et la layer normalization selon leur axe de normalisation et leurs cas d'usage.
12
13
## 8.1 Pourquoi normaliser à l'intérieur du réseau
14
15
Rappelons qu'une couche calcule $z^{[l]} = W^{[l]} a^{[l-1]} + b^{[l]}$ et $a^{[l]} = g^{[l]}(z^{[l]})$. À mesure que l'entraînement met à jour chaque $W^{[l]}$, la distribution de l'entrée $a^{[l-1]}$ de chaque couche ne cesse de se déplacer. Cette cible mouvante, parfois appelée décalage de covariance interne (internal covariate shift), force les couches suivantes à se ré-adapter en permanence et ralentit l'ensemble du réseau.
16
17
Normaliser les activations à chaque couche maintient leur moyenne et leur variance stables au fil des mises à jour. Les bénéfices immédiats :
18
19
- La surface de la fonction de coût devient plus lisse, ce qui permet d'utiliser un taux d'apprentissage plus élevé sans diverger.
20
- L'entraînement converge en moins d'époques et est moins sensible à l'initialisation des poids.
21
- L'échelle et le décalage appris redonnent au réseau la liberté d'annuler la normalisation si cela aide.
22
23
*Remarque :* la normalisation est appliquée à la pré-activation $z^{[l]}$ ou à l'activation $a^{[l]}$, pas aux paramètres. C'est une couche insérée dans la passe avant, avec ses propres paramètres apprenables.
24
25
## 8.2 Normalisation par lot (batch normalization)
26
27
La normalisation par lot (BatchNorm) standardise chaque caractéristique à travers les exemples d'un mini-lot, puis applique une transformation affine apprise. Elle opère par caractéristique, de sorte que chaque caractéristique conserve ses propres statistiques.
28
29
![Histogrammes de la pré-activation brute contre normalisée](/fr/Deep%20Learning/08%20Normalization/a/normalization-effect.png)
30
31
*La normalisation recentre et remet à l'échelle une entrée de couche à moyenne nulle et variance unitaire avant l'échelle et le décalage appris.*
32
33
### 8.2.1 Statistiques du lot
34
35
Pour une caractéristique $x$ sur un mini-lot $\mathcal{B} = \{x^{(1)}, \dots, x^{(m)}\}$ de taille $m$, on calcule la moyenne et la variance du lot :
36
37
$$\boxed{ \mu_\mathcal{B} = \frac{1}{m}\sum_{i=1}^{m} x^{(i)}, \qquad \sigma_\mathcal{B}^2 = \frac{1}{m}\sum_{i=1}^{m}\left(x^{(i)} - \mu_\mathcal{B}\right)^2 }$$
38
39
### 8.2.2 Normaliser, mettre à l'échelle et décaler
40
41
On standardise chaque valeur à moyenne nulle et variance unitaire, en utilisant une petite constante $\epsilon > 0$ pour la stabilité numérique :
42
43
$$\boxed{ \hat{x}^{(i)} = \frac{x^{(i)} - \mu_\mathcal{B}}{\sqrt{\sigma_\mathcal{B}^2 + \epsilon}} }$$
44
45
Puis on remet à l'échelle avec deux paramètres appris par caractéristique, une échelle $\gamma$ et un décalage $\beta$ :
46
47
$$\boxed{ y^{(i)} = \gamma\, \hat{x}^{(i)} + \beta }$$
48
49
*Remarque :* $\gamma$ et $\beta$ sont appris par descente de gradient comme n'importe quel poids. Si le comportement optimal correspond à l'entrée brute, le réseau peut le retrouver en apprenant $\gamma = \sqrt{\sigma_\mathcal{B}^2 + \epsilon}$ et $\beta = \mu_\mathcal{B}$. La normalisation ne retire jamais de capacité, elle ne fait que la reparamétrer.
50
51
### 8.2.3 Inférence avec des statistiques courantes
52
53
À l'inférence, on évalue souvent un seul exemple, de sorte qu'une moyenne et une variance de lot sont indéfinies ou dénuées de sens. À la place, BatchNorm utilise des estimations de population accumulées pendant l'entraînement sous forme de moyennes mobiles exponentielles, avec un momentum $\alpha \in [0, 1)$ :
54
55
$$\boxed{ \mu \leftarrow \alpha\, \mu + (1 - \alpha)\, \mu_\mathcal{B}, \qquad \sigma^2 \leftarrow \alpha\, \sigma^2 + (1 - \alpha)\, \sigma_\mathcal{B}^2 }$$
56
57
Au moment du test, la transformation est fixe et déterministe, en utilisant ces statistiques courantes à la place de celles du lot :
58
59
$$\boxed{ y = \gamma\, \frac{x - \mu}{\sqrt{\sigma^2 + \epsilon}} + \beta }$$
60
61
*Remarque :* cette séparation entraînement/inférence est la source de la plupart des bugs de BatchNorm. Oublier de basculer la couche en mode évaluation la laisse calculer les statistiques du lot au moment du test, ce qui corrompt les prédictions.
62
63
## 8.3 Normalisation par couche (layer normalization)
64
65
La normalisation par couche (LayerNorm) conserve la même recette normaliser-mettre à l'échelle-décaler mais change l'axe sur lequel elle moyenne. Plutôt que d'agréger à travers le lot, elle calcule les statistiques sur les caractéristiques d'un seul exemple. Chaque exemple est donc normalisé de manière autonome, indépendamment des autres dans le lot.
66
67
### 8.3.1 Statistiques par exemple
68
69
Pour un exemple avec un vecteur de caractéristiques $a \in \mathbb{R}^{H}$ (ses $H$ activations dans une couche), on moyenne sur les caractéristiques :
70
71
$$\boxed{ \mu = \frac{1}{H}\sum_{k=1}^{H} a_k, \qquad \sigma^2 = \frac{1}{H}\sum_{k=1}^{H}\left(a_k - \mu\right)^2 }$$
72
73
La normalisation, l'échelle et le décalage ont une forme identique à BatchNorm, appliqués par exemple :
74
75
$$\boxed{ \hat{a}_k = \frac{a_k - \mu}{\sqrt{\sigma^2 + \epsilon}}, \qquad y_k = \gamma_k\, \hat{a}_k + \beta_k }$$
76
77
### 8.3.2 Pourquoi LayerNorm pour les séquences
78
79
Parce que les statistiques proviennent d'un seul exemple, LayerNorm se comporte de la même manière à l'entraînement et à l'inférence, et ne dépend pas de la taille du lot. Cela compte lorsque le lot est minuscule ou lorsque les exemples ont une longueur variable, comme dans le texte. LayerNorm est la normalisation de choix pour les réseaux récurrents et les Transformers, où la longueur de la séquence varie et où une moyenne de lot par pas de temps serait mal définie.
80
81
*Remarque :* LayerNorm n'a besoin d'aucune statistique courante, il n'y a donc aucune divergence entraînement/inférence à gérer. Cela seul la rend plus simple à déployer que BatchNorm.
82
83
## 8.4 Placement et effets pratiques
84
85
Une couche de normalisation se situe entre l'étape linéaire $W^{[l]} a^{[l-1]} + b^{[l]}$ et la non-linéarité $g^{[l]}$. Deux ordres sont courants.
86
87
![Flux d'une couche, de la transformation linéaire à travers la normalisation et l'activation](/fr/Deep%20Learning/08%20Normalization/a/norm-placement.svg)
88
89
*La normalisation est insérée entre la transformation linéaire et l'activation à l'intérieur de chaque couche.*
90
91
- **Avant l'activation** (normaliser $z^{[l]}$, puis appliquer $g^{[l]}$) : le placement d'origine et le plus courant. Il maintient l'entrée de la non-linéarité centrée, là où la saturation nuit le plus.
92
- **Après l'activation** (normaliser $a^{[l]}$) : parfois utilisé et occasionnellement meilleur en pratique, bien qu'il soit moins standard.
93
94
Deux autres points pratiques :
95
96
- **Le biais devient redondant.** Le décalage $\beta$ remplace le biais de la couche, puisque la normalisation soustrait la moyenne et annulerait de toute façon $b^{[l]}$. Les couches suivies d'une normalisation sont souvent écrites sans leur propre biais.
97
- **BatchNorm dépend de la taille du lot.** Ses statistiques sont plus bruitées avec de petits lots, ce qui agit comme un régulariseur léger mais se dégrade fortement lorsque le lot est très petit. LayerNorm y est insensible, ce qui est une autre raison pour laquelle les modèles de séquence la préfèrent.
98
99
*Remarque :* le bruit dépendant du lot dans BatchNorm peut se substituer en partie à d'autres régulariseurs, de sorte que les réseaux qui l'utilisent ont parfois besoin de moins de dropout.
100
101
## 8.5 BatchNorm contre LayerNorm
102
103
Les deux couches partagent la transformation normaliser-mettre à l'échelle-décaler et ne diffèrent que par l'axe des statistiques et les conséquences qui en découlent.
104
105
| Aspect | Normalisation par lot | Normalisation par couche |
106
| --- | --- | --- |
107
| Axe de normalisation | à travers le lot, par caractéristique | à travers les caractéristiques, par exemple |
108
| Dépend de la taille du lot | oui | non |
109
| Entraînement vs inférence | statistiques du lot vs statistiques courantes | identique dans les deux |
110
| Statistiques courantes nécessaires | oui | non |
111
| Usage typique | CNN et modèles de vision feedforward | RNN et Transformers |
112
113
![Axes de la normalisation par lot contre par couche sur une grille lot par caractéristique](/fr/Deep%20Learning/08%20Normalization/a/batchnorm-vs-layernorm.svg)
114
115
*La normalisation par lot calcule les statistiques le long d'une colonne de caractéristique à travers le lot, la normalisation par couche à travers les caractéristiques d'un seul exemple.*
116
117
*Remarque :* le bloc Transformer de la leçon 16 place une LayerNorm avant ou après chaque sous-couche, précisément parce qu'elle supprime la dépendance au lot qui, sinon, lierait entre eux des exemples de longueurs différentes.
118
119
*Les activations restant bien mises à l'échelle, le réseau s'entraîne de façon stable à des taux d'apprentissage plus élevés. La prochaine leçon aborde le contrôle du surapprentissage par la régularisation et le dropout.*
120
121
---
122
Suivant : [Régularisation et dropout](/fr/Deep%20Learning/09%20Regularization%20and%20dropout) · [Vue d'ensemble du cours](/fr/Deep%20Learning)