La passe forward : l'entrée traverse le réseau, chaque couche applique sa transformation, et la couche finale produit une prédiction. La fonction de perte calcule à quel point la prédiction est fausse. La passe backward : en partant de la perte, la rétropropagation calcule ∂perte/∂poids pour chaque poids du réseau en utilisant la règle de la chaîne : ∂perte/∂w = ∂perte/∂sortie · ∂sortie/∂caché · ∂caché/∂w. Chaque couche reçoit le gradient de la couche au-dessus et passe son propre gradient à la couche en dessous.
Calculer naïvement le gradient pour chaque poids indépendamment nécessiterait une passe forward séparée par poids — impossiblement coûteux pour des milliards de paramètres. La rétropropagation réutilise les résultats intermédiaires : le gradient à chaque couche est calculé une fois et partagé avec tous les poids de cette couche. La passe backward coûte environ 2x la passe forward en calcul, ce qui signifie que le coût total d'une étape d'entraînement (forward + backward + mise à jour) est environ 3x une seule passe forward.
Les frameworks modernes d'apprentissage profond (PyTorch, JAX) implémentent la rétropropagation via la différentiation automatique (autograd). Tu définis le calcul forward, et le framework construit automatiquement le graphe de calcul backward et calcule les gradients. Cela signifie que tu ne dérives jamais manuellement les gradients — tu définis l'architecture du modèle et la perte, tu appelles loss.backward(), et le framework gère le reste. Cette automatisation est ce qui rend l'expérimentation architecturale rapide et pratique.