Deep Learning: comprendre et construire des réseaux de neurones

Auteur: Mohamed CHINY Durée necessaire pour le cours de Deep Learning: comprendre et construire des réseaux de neurones Niveau recommandé pour le cours de Deep Learning: comprendre et construire des réseaux de neurones Supports vidéo non disponibles pour ce cours Exercices de renforcement non disponibles pour ce cours Quiz non disponibles pour ce cours

Leçon 7: Training Loss et Validation Loss: détecter l'overfitting dans les réseaux de neurones

Toutes les leçons

Deep Learning: comprendre et construire des réseaux de neurones

Leçon 1
Deep Learning et réseaux de neurones: définition, utilité et histoire d'évolution
Leçon 2
Réseaux de neurones artificiels: la base du Deep Learning
Leçon 3
Feed Forward et Backpropagation: les pilliers de l'apprentissage des réseaux de neurones
Leçon 4
TensorFlow, PyTorch et Keras: les piliers actuels du Deep Learning
Leçon 5
Sequential, Input et Dense: construire un réseau de neurones pour la régression avec Keras
Leçon 6
Construire un réseau de neurones pour des données non linéaires avec Keras
Leçon 7
Training Loss et Validation Loss: détecter l'overfitting dans les réseaux de neurones
Leçon 8
Réseaux de neurones appliqués à la classification binaire
Leçon 9
Application des réseaux de neurones à la classification multiclasse sur Iris
Leçon 10
Prévenir l'overfitting grace à la régularisation: principes et techniques fondamentales
Leçon 11
Régularisation L1, L2, Dropout, Batch Normalization et Early Stopping - Mise en pratique
Leçon 12
Convolutional Neural Networks (CNN): réseaux de neurones dédiés aux images
Leçon 13
CNN et MNIST: reconnaissance et classification des chiffres manuscrits
Leçon 14
CNN et CIFAR-10: reconnaissance et classification d'images en couleur
Leçon 15
Recurrent Neural Networks (RNN): Réseaux de neurones dédiés aux séquences
Leçon 16
Apprendre à construire un RNN simple pour la prédiction séquentielle
Leçon 17
Limites des RNN face au vanishing gradient et aux dépendances longues: apports des LSTM et GRU
Leçon 18
LSTM: Long Short-Term Memory - une mémoire longue durée pour les séquences
Leçon 19
Apprentissage séquentiel avec LSTM pour comprendre la dynamique des températures
Leçon 20
GRU: Gated Recurrent Unit - vers une simplification des architectures récurrentes
Leçon 21
Analyse des séries temporelles de consommation électrique domestique par réseaux GRU

Surveiller l'overfitting grâce à la validation loss

Learning Curve: visualiser la progression de l’apprentissage

La courbe d’apprentissage (Learning Curve) constitue un outil central pour analyser le comportement d’un réseau de neurones au fil des époques. Elle illustre l’évolution de la perte (loss) en fonction du nombre d’itérations, permettant de visualiser comment le modèle réduit progressivement ses erreurs. Cette représentation met en évidence la dynamique d’apprentissage et offre une lecture claire de la convergence du réseau vers une solution plus optimale tout en facilitant la détection d’éventuels problèmes comme le surapprentissage.

Une courbe qui descend régulièrement traduit un apprentissage efficace, tandis qu’une stagnation ou une remontée peut signaler un problème de sous-apprentissage (underfitting) ou de surapprentissage (overfitting).
Les phénomènes d’underfitting et d’overfitting ne concernent pas uniquement les réseaux de neurones, mais touchent aussi les modèles classiques comme la régression ou les arbres de décision. Cependant, ils sont particulièrement critiques en deep learning, car la complexité et le grand nombre de paramètres des réseaux profonds accentuent ces risques. D’où l’importance de surveiller attentivement les métriques de validation pour garantir une bonne généralisation.
Lorsque l’on ajoute une courbe de validation en parallèle, il devient possible de comparer la performance sur les données d’entraînement et sur des données inédites, ce qui aide à ajuster le nombre d’époques et à prévenir l’overfitting.

Si on veut visualiser la learning curve du modèle de la séance précédente, on remplace tout simplement l'instruction d'entrainement par ceci:
# Entrainement
history=model.fit(
   X_scaled,y_scaled,epochs=300, validation_split=0.2
)
Dans l’objet history retourné par Keras après l’entraînement, la clé history.history["loss"] correspond à l’évolution de la perte sur l’ensemble d’entraînement au fil des époques. Elle indique dans quelle mesure le modèle parvient à s’adapter aux données qu’il utilise pour ajuster ses poids.

En parallèle, history.history["val_loss"] enregistre la perte sur l’ensemble de validation, c’est‑à‑dire sur des données mises de côté et non utilisées pour l’apprentissage direct.

D'ailleurs, lors de l'entrainement, Keras affiche un rapport à chaque époque. Ce rapport ne se limite pas à la valeur de la training loss, mais inclut également la validation loss, ainsi que d’autres métriques définies lors de la compilation du modèle, comme l’erreur absolue moyenne (mae) ou l’erreur quadratique moyenne (mse) et leurs équivalents sur l’ensemble de validation (val_mae, val_mse).
Epoch 32/300
3/3 ━━━━━━ 0s 95ms/step - loss: 0.0542 - mae: 0.1794 - mse: 0.0542 - val_loss: 0.3143 - val_mae: 0.5281 - val_mse: 0.3143
L’affichage permet donc de suivre simultanément la progression du réseau de neurones sur les données d’apprentissage et sur les données de validation, offrant une vision complète de la performance et facilitant la détection d’un éventuel surapprentissage.

Surveiller la performance réelle et l’overfitting grâce à la validation loss

La validation loss est un indicateur fondamental pour mesurer la capacité d’un modèle à généraliser au-delà des données utilisées pendant l’entraînement.

Lorsqu’un réseau est entraîné avec l’option validation_split=0.2, Keras réserve automatiquement 20% des données pour constituer un ensemble de validation. Cet ensemble n’intervient pas dans l’optimisation des poids, mais sert uniquement à évaluer la performance du modèle sur des exemples qu’il n’a jamais vus.

La perte calculée sur ce set de validation (val_loss) permet ainsi de comparer la progression de l’apprentissage avec la réalité de la généralisation. Contrairement à la training loss, qui reflète uniquement l’adaptation du modèle aux données d’entraînement, la validation loss révèle les signes de surapprentissage (overfitting). En effet, une baisse continue de la training loss accompagnée d’une hausse de la validation loss indique que le modèle mémorise trop les données d’entraînement et perd en robustesse.

En pratique, suivre la validation loss est indispensable pour ajuster le nombre d’époques, l’architecture ou les hyperparamètres afin d’obtenir un modèle fiable et performant sur de nouvelles données.

Pour visualiser la learning curve (y compris la validation loss), on peut exécuter ce code:
# Entrainement
history=model.fit(X_scaled,y_scaled,epochs=300, validation_split=0.2)

# Learning Curve
plt.plot(history.history["loss"], label="Training Loss")
plt.plot(history.history["val_loss"], label="Validation Loss")

plt.xlabel("Époques")
plt.ylabel("Loss")
plt.title("Courbe d'apprentissage")
plt.legend()
plt.show()

Le code précédent produit ce résultat:
Learning curve - Validation Loss - Overfitting

On constate que training loss diminue progressivement au fil des époques, cela traduit une amélioration constante de l’adaptation du réseau de neurones aux données d’entraînement. En effet, le modèle apprend à réduire ses erreurs internes.

En revanche, on constate une validation loss instable au début (elle descend puis remonte avant de redescendre progressivement), ce qui constitue un comportement assez fréquent. Cette phase traduit l’ajustement initial du modèle, où les poids s’adaptent rapidement et peuvent provoquer des fluctuations sur l’ensemble de validation. Le fait qu’elle se stabilise et baisse ensuite indique que le réseau parvient à mieux généraliser, réduisant ses erreurs sur des données qu’il n’a pas vues.

En somme, cette dynamique suggère un apprentissage sain, c'est à dire que le modèle apprend efficacement sans tomber dans un surapprentissage marqué.          
         
         
         
         
         
         
Leçon 7
Training Loss et Validation Loss: détecter l'overfitting dans les réseaux de neurones