Normalization
La normalisation remet les caractéristiques ou les activations à une échelle commune pour éviter qu’une plage de valeurs ne domine les autres. Présentation des méthodes min-max, z-score et L2, ainsi que des couches de normalisation.
La normalisation consiste à remettre les valeurs numériques à une échelle commune afin qu’aucune caractéristique ne domine un modèle en raison de son unité. En prétraitement des données, elle désigne généralement la transformation de chaque caractéristique d’entrée dans une plage fixe, comme [0, 1], ou pour obtenir une moyenne nulle et une variance unitaire, avant l’entraînement. Dans un réseau de neurones, les couches de normalisation, comme la normalisation par lots, appliquent la même idée aux activations intermédiaires. Sans normalisation, une caractéristique mesurée en milliers, comme le revenu, pèse davantage qu’une caractéristique mesurée en chiffres simples, comme la taille du foyer, dans chaque calcul de distance et chaque étape de gradient.
Techniques courantes de normalisation#
- Mise à l’échelle min-max : Ramène chaque caractéristique dans [0, 1] avec (x − min) / (max − min). Une valeur extrême comprime toutes les autres dans une plage étroite ; cette méthode convient donc aux caractéristiques dont les bornes sont connues et fixes, comme les valeurs de pixels sur 8 bits divisées par 255.
- Standardisation par score z : Soustrait la moyenne de la caractéristique et divise par son écart-type, pour obtenir une moyenne de 0 et un écart-type de 1. C’est le choix habituel pour les caractéristiques sans bornes fixes.
- Mise à l’échelle robuste : Soustrait la médiane et divise par l’écart interquartile ; quelques valeurs aberrantes modifient donc à peine la mise à l’échelle des autres valeurs.
- Mise à l’échelle logarithmique : Applique un logarithme, souvent log(1 + x), afin de comprimer les caractéristiques à longue traîne, comme les prix, les populations ou le nombre de vues, avant toute autre mise à l’échelle.
- Normalisation par vecteur unitaire (L2) : Divise le vecteur de chaque échantillon par sa norme afin que tous les vecteurs aient une norme de 1. Appliquée aux incorporations, elle transforme la similarité cosinus en simple produit scalaire. Le Normalizer de scikit-learn effectue cette opération par échantillon, ce qui surprend les utilisateurs qui s’attendent à ce qu’il mette chaque caractéristique à l’échelle comme
MinMaxScaler.
La technique à choisir dépend de ce qui est mis à l’échelle et de la distribution de ses valeurs :
Pourquoi la normalisation est importante#
Les méthodes fondées sur la distance, comme les k plus proches voisins (k-NN), le regroupement k-means et les machines à vecteurs de support à noyau RBF, comparent les distances euclidiennes brutes ; la caractéristique dont la plage est la plus large détermine donc quels points sont considérés comme proches. Les modèles à base de gradient s’entraînent plus vite sur des entrées normalisées, car des caractéristiques d’échelles très différentes étirent la surface de perte en vallées étroites où la descente de gradient doit avancer par petits pas. Les ensembles d’arbres, comme les forêts aléatoires, effectuent des séparations à partir d’un seuil sur une seule caractéristique à la fois et produisent les mêmes séparations après toute transformation monotone de l’échelle. La mise à l’échelle du jeu de données Wine avant le k-NN montre l’ampleur de cet effet :
from sklearn.datasets import load_wine
from sklearn.model_selection import cross_val_score
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import MinMaxScaler, StandardScaler
# 13 chemical features on very different scales, from hue (about 0.5-1.7) to proline (about 280-1,680)
X, y = load_wine(return_X_y=True)
# k-NN compares raw distances, so unscaled proline dominates every distance
for name, scaler in [("none", "passthrough"), ("min-max", MinMaxScaler()), ("z-score", StandardScaler())]:
# The pipeline fits the scaler on each training fold only, so no test statistics leak in
model = make_pipeline(scaler, KNeighborsClassifier())
accuracy = cross_val_score(model, X, y, cv=5).mean()
print(f"scaling {name:8s} 5-fold accuracy: {accuracy:.3f}")Sans mise à l’échelle, le k-NN atteint une exactitude de 0,691, car la proline, dont la plage couvre environ 1 400 unités, pèse davantage que les 12 autres caractéristiques dans chaque distance. La mise à l’échelle min-max porte l’exactitude à 0,950, et la standardisation par score z à 0,949. Il est important d’ajuster le transformateur à l’intérieur du pipeline : calculer le minimum, le maximum, la moyenne ou l’écart-type sur l’ensemble du jeu de données avant la séparation révèle des informations de l’ensemble de test à l’entraînement, une forme de fuite de données.
Normalisation en vision par ordinateur#
Les images sont normalisées par canal. La division des valeurs de pixels sur 8 bits par 255 les ramène à [0, 1], puis de nombreux backbones de classification soustraient une moyenne par canal et divisent par un écart type : le ResNet-50 de torchvision préentraîné sur ImageNet attend une moyenne de (0.485, 0.456, 0.406) et un écart type de (0.229, 0.224, 0.225). Fournir à un modèle préentraîné des entrées normalisées différemment de ses données d’entraînement décale toutes les activations et réduit la précision. Le prétraitement Ultralytics YOLO divise les valeurs des pixels par 255 sans décalage de moyenne ni d’écart type, pendant l’entraînement comme pendant la prédiction, de sorte que YOLO26 reçoit toujours des entrées dans [0, 1].
Les images médicales nécessitent des règles propres à chaque modalité. Les tomodensitogrammes stockent les intensités en unités Hounsfield, une échelle physique où l’air vaut −1000 et l’eau 0 ; les mêmes statistiques peuvent donc être utilisées pour toutes les analyses. Le cadre de segmentation nnU-Net, largement utilisé, écrête les intensités CT aux 0,5e et 99,5e percentiles des valeurs de premier plan de tous les cas d’entraînement, puis les normalise par score z à l’aide de la moyenne et de l’écart-type de l’ensemble du jeu de données. Les intensités d’IRM n’ont pas d’échelle physique fixe et varient d’un scanner à l’autre ; nnU-Net normalise donc chaque analyse IRM séparément par score z.
Normalisation et termes associés#
- Standardisation : Le nom habituel de la mise à l’échelle par score z. De nombreuses sources appellent « normalisation » aussi bien la mise à l’échelle min-max que celle par score z, tandis que d’autres réservent ce terme à la mise à l’échelle min-max.
- Augmentation de données : Modifie le contenu ou la géométrie des images, par exemple avec des retournements, des recadrages et des changements de couleur, afin d’apporter de la variété, tandis que la normalisation ne modifie que l’échelle des valeurs.
- Couches de normalisation : La normalisation par lots standardise chaque canal à partir des statistiques du mini-lot courant. La normalisation par couche standardise chaque exemple sur l’ensemble de ses caractéristiques, indépendamment de la taille du lot, et est utilisée dans les transformers. Ces couches complètent la normalisation par une mise à l’échelle et un décalage appris.
- RMSNorm : Une normalisation par couche simplifiée qui omet la soustraction de la moyenne et divise uniquement par la racine de la moyenne des carrés. C’est la couche de normalisation utilisée dans Llama de Meta et dans de nombreux autres grands modèles de langage.










