Couches normalisatrices (BatchNormalization)
Les couches BatchNormalization sont utilisées dans les réseaux de neurones pour stabiliser et accélérer l’entraînement. L’objectif est de normaliser les activations de chaque couche afin de réduire le décalage interne des covariables (internal covariate shift) et d’améliorer la convergence du réseau.
Le principe consiste à normaliser les sorties d’une couche en soustrayant la moyenne et en divisant par l’écart-type calculés sur le mini-batch, puis à appliquer une transformation linéaire avec des paramètres appris (scale et shift). Cela permet au réseau de conserver la capacité à représenter des fonctions complexes tout en stabilisant l’apprentissage.
Les couches BatchNormalization sont utilisées dans tous les types de réseaux de neurones, y compris fully connected, convolutionnels et récurrents, et peuvent être placées avant ou après les fonctions d’activation.
En résumé, les couches BatchNormalization permettent de stabiliser et d’accélérer l’entraînement en normalisant les activations, améliorant la performance et la robustesse du réseau.
Fonctions :
-
BatchNormalization()
La couche BatchNormalization normalise les activations d'une couche précédente afin d'accélérer et stabiliser l'entraînement des réseaux de neurones. Elle ajuste les sorties pour avoir une moyenne proche de zéro et une variance proche de un sur chaque mini-lot, tout en apprenant des paramètres de décalage et d’échelle.
Importation :
from keras.layers import BatchNormalizationAttributs :
Paramètre Type Description Valeur par défaut axisint Axe sur lequel normaliser (typiquement l’axe des canaux). -1momentumfloat Moment pour la moyenne mobile des statistiques (moyenne et variance). 0.99epsilonfloat Petite valeur ajoutée pour éviter la division par zéro lors de la normalisation. 1e-3centerbool Si True, ajoute un paramètre de biais (offset) appris.Truescalebool Si True, ajoute un paramètre d’échelle appris.TrueExemple de code :
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, BatchNormalization, Activation import numpy as np # Données simulées : 100 exemples avec 20 caractéristiques X = np.random.rand(100, 20) y = np.random.randint(0, 2, size=(100, 1)) # Modèle avec BatchNormalization model = Sequential() model.add(Dense(64, input_shape=(20,))) model.add(BatchNormalization()) model.add(Activation('relu')) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.summary()
Explication du code :
Importation des bibliothèques
Les couches `Dense`, `BatchNormalization` et `Activation` sont importées depuis Keras pour construire le modèle.Création des données
Les données contiennent 100 exemples avec 20 caractéristiques aléatoires, et une cible binaire.Définition du modèle
Une couche dense est suivie par `BatchNormalization`, qui normalise la sortie. Puis une activation ReLU est appliquée.Compilation
Le modèle est compilé avec Adam et une fonction de perte binaire.