Accueil / Factory / Algos ML / Rétropropagation — factory / algos ML / apprentissage des réseaux de neurones

RÉTRO PROPAGATION.

La méthode qui permet à un réseau de neurones d'apprendre. Après chaque prédiction, l'erreur est renvoyée de la sortie vers l'entrée, couche par couche, pour calculer la part de responsabilité de chaque poids. Un optimiseur corrige ensuite les poids. Tous les réseaux actuels, des scores clients aux LLM, apprennent ainsi.

Deep learningApprentissageGradientFondamentalNiveau : intermédiaire

FICHE D'IDENTITÉ

notes sur 5 · usage entreprise
PerformanceCalcule le gradient exact, quelle que soit la taille du réseau
InterprétabilitéLe principe se suit à la main sur un petit réseau
VitesseCoûte de l'ordre de deux passes avant, pas une par poids
Facilité de réglageAutomatique dans PyTorch ou Keras, rien à régler en soi
Tolérance aux données brutesFragile si les variables ne sont pas à l'échelle
EN 30 SECONDES

Une chaîne de production sort une pièce défectueuse. On remonte la chaîne poste par poste en demandant à chacun : de combien ton réglage a-t-il contribué au défaut ? Puis chacun ajuste un peu son réglage.

1. Passe avant

Les données traversent le réseau de l'entrée à la sortie. Le réseau donne une probabilité de départ pour chaque client.

2. Mesure de l'erreur

On compare la prédiction au réel avec une fonction de perte, ici l'entropie croisée : elle est forte quand le réseau est sûr de lui et se trompe.

3. Passe arrière

L'erreur est renvoyée de la sortie vers l'entrée. À chaque couche, la règle de dérivation en chaîne donne la contribution de chaque poids à l'erreur : c'est le gradient.

4. Correction

Chaque poids bouge un peu dans le sens qui réduit l'erreur (descente de gradient). On recommence sur des milliers de passes jusqu'à ce que la perte ne baisse plus.

LE CAS MÉTIER

churn · télécom / énergie / assurance
EN ENTRÉE

Une ligne par client

Ancienneté, appels au support, montant mensuel, type de contrat, incidents récents, et le départ observé. Un réseau minuscule, 8 neurones cachés, codé à la main pour voir chaque étape.

EN SORTIE

Une perte qui baisse, puis se stabilise

Sur le jeu d'exemple, la perte passe de 0,80 au départ à 0,45 après 500 passes, puis ne bouge presque plus. Le réseau obtient une AUC de 0,79 sur les clients jamais vus, au niveau d'une régression logistique.

CE QU'ON MESURE

La courbe de perte

C'est le tableau de bord de l'apprentissage. Si elle ne baisse pas, le pas est mal réglé ou le gradient est faux. Si la perte de validation remonte pendant que celle d'entraînement baisse, le réseau récite : il faut l'arrêter.

QUAND LE SORTIR, QUAND L'ÉVITER

OUI

  • Comprendre ce que fait un framework (PyTorch, Keras) quand il entraîne un réseau
  • Diagnostiquer un apprentissage qui stagne, diverge ou produit des valeurs manquantes
  • Coder une couche ou une perte sur mesure : le calcul du gradient doit suivre
  • Former une équipe au deep learning avant de passer aux outils

NON

  • Coder la rétropropagation à la main en production : utiliser la différentiation automatique d'un framework
  • Modèle non dérivable (arbres, règles) : la rétropropagation ne s'applique pas, voir le boosting
  • Réseaux très profonds sans précaution : gradients qui s'éteignent ou explosent, ajouter normalisation et raccourcis (ResNet)
LES 3 CHOIX QUI COMPTENT

La rétropropagation elle-même n'a pas de réglage. Ce qui compte, ce sont les choix qui l'entourent.

Le pas d'apprentissage

La taille de la correction à chaque passe (0,5 ici). Trop grand, la perte oscille ou explose ; trop petit, l'apprentissage traîne.

L'initialisation des poids

Des poids tirés au hasard, ni trop grands ni trop petits. Tous à zéro, les neurones restent identiques et n'apprennent rien de différent. Les frameworks utilisent des tirages calibrés (Glorot, He).

La fonction d'activation

tanh ou sigmoïde s'écrasent aux extrêmes et le gradient s'éteint dans les réseaux profonds. ReLU limite ce problème, d'où son usage par défaut.

LE CODE MINIMAL

jeu d'exemple : clients_churn.csv ↓
# Churn clients : rétropropagation codée à la main en R
clients <- read.csv("clients_churn.csv")
X <- model.matrix(~ anciennete + appels_support + montant + contrat + incidents_3m, data = clients)[, -1]
y <- clients$churn

set.seed(42)
idx <- sample(nrow(X), round(0.7 * nrow(X)))
X_train <- scale(X[idx, ])
X_test <- scale(X[-idx, ], center = attr(X_train, "scaled:center"), scale = attr(X_train, "scaled:scale"))
y_train <- y[idx]

# Poids tirés au hasard (termes constants omis pour la lisibilité)
W1 <- matrix(rnorm(ncol(X) * 8, 0, 0.5), ncol(X), 8)
W2 <- matrix(rnorm(8, 0, 0.5), 8, 1)
sigmoide <- function(z) 1 / (1 + exp(-z))
for (epoque in 0:1500) {
  h <- tanh(X_train %*% W1)                 # passe avant : couche cachée de 8 neurones
  p <- sigmoide(h %*% W2)                   # puis probabilité de départ
  d2 <- (p - y_train) / length(y_train)     # passe arrière : erreur en sortie
  d1 <- (d2 %*% t(W2)) * (1 - h^2)          # erreur renvoyée à la couche cachée
  W2 <- W2 - 0.5 * t(h) %*% d2              # chaque poids corrigé selon sa part d'erreur
  W1 <- W1 - 0.5 * t(X_train) %*% d1
  if (epoque %% 500 == 0) cat("époque", epoque, ": perte =", round(-mean(y_train * log(p) + (1 - y_train) * log(1 - p)), 3), "\n")
}
proba <- as.vector(sigmoide(tanh(X_test %*% W1) %*% W2))
y_test <- y[-idx]
cat("Probabilité moyenne, partants :", round(mean(proba[y_test == 1]), 2), "| restés :", round(mean(proba[y_test == 0]), 2), "\n")

QUESTIONS FRÉQUENTES

Quelle différence entre rétropropagation et descente de gradient ?

La rétropropagation calcule le gradient : de combien l'erreur change quand on bouge chaque poids. La descente de gradient utilise ce gradient pour corriger les poids. La première est un calcul, la seconde une méthode d'optimisation, et on les emploie toujours ensemble.

Pourquoi parle-t-on de règle de dérivation en chaîne ?

Parce qu'un réseau est une suite de fonctions emboîtées. La dérivée de l'erreur par rapport à un poids de la première couche est le produit des dérivées de toutes les couches qui suivent. La rétropropagation calcule ce produit de la sortie vers l'entrée, en réutilisant les résultats déjà calculés.

Qu'est-ce que le problème du gradient qui disparaît ?

Dans un réseau profond, le gradient est un produit de nombreux termes. S'ils sont souvent inférieurs à 1, comme avec la sigmoïde aux extrêmes, le produit devient minuscule et les premières couches n'apprennent plus. ReLU, la batch normalization et les raccourcis des ResNet ont été introduits en grande partie pour cela.

LES ALGOS VOISINS

à comparer avant de choisir
l'étape suivante

Descente de gradient

La rétropropagation calcule la pente, la descente de gradient s'en sert pour corriger les poids.

Voir la fiche →
ce qu'elle entraîne

Réseau de neurones (MLP)

Le réseau le plus simple. scikit-learn ou nnet font la rétropropagation à votre place.

Voir la fiche →
l'optimiseur par défaut

Adam

Utilise les gradients fournis par la rétropropagation, avec un pas adapté à chaque poids.

Voir la fiche →
— formation

Passer de la fiche à la pratique

Dataistudio forme les équipes au machine learning et à l'IA, sur des cas concrets.

Voir les formations →