La rétropropagation est le moteur invisible qui permet aux intelligences artificielles de s'améliorer. Voici comment ça fonctionne, étape par étape.
Comprendre comment les intelligences artificielles apprennent ressemble souvent à un mur infranchissable. Les équations mathématiques donnent l'impression d'une langue étrangère incompréhensible. Pourtant, derrière ce voile se cache une logique simple, presque évidente une fois qu'on l'a décortiquée.
Ce mécanisme s'appelle la rétropropagation. Sans elle, les modèles comme les grands modèles de langage (LLM) n'existeraient tout simplement pas. Mais comment fonctionne-t-elle vraiment ? Pourquoi est-elle si cruciale ? Et surtout, comment peut-on la comprendre sans devenir mathématicien ?
UNE DÉCOUVERTE QUI COMMENCE PAR UNE SIMPLE QUESTION
Si vous avez déjà essayé de comprendre la rétropropagation, vous savez à quel point ça peut être frustrant. Les explications techniques donnent l'impression de sauter directement dans le grand bain sans avoir appris à nager. Pourtant, il suffit de repartir de zéro, pas à pas, pour que tout devienne clair.
Cette aventure a commencé par un premier article où nous avions construit un réseau de neurones de zéro, en utilisant un jeu de données simple. L'objectif était de comprendre comment un réseau de neurones fait des prédictions. La réponse avait suscité un bel engouement. Alors aujourd'hui, continuons sur cette lancée.
La rétropropagation n'est pas une montagne à gravir d'un seul coup. C'est un escalier dont chaque marche se franchit facilement si on y va pas à pas. Au début, ce concept peut sembler écrasant, mais une fois les bases posées, tout le reste devient beaucoup plus simple à appréhender.
CE QUE NOUS AVONS DÉJÀ APPRIS : LE RÉSEAU DE NEURONES DE A À Z
Avant de plonger dans la rétropropagation, il est essentiel de se rappeler ce que nous avons déjà découvert sur les réseaux de neurones.
Dans un précédent article, nous avions constaté qu'une simple ligne droite ne suffisait pas à modéliser nos données. Un jeu de données d'examen, par exemple, ne suit pas une droite parfaite. Les notes ne montent pas de manière linéaire en fonction des heures étudiées. Il fallait donc trouver une solution plus sophistiquée.
Nous avions alors découvert l'équation d'un seul neurone. Puis, nous avions exploré les différentes couches qui composent un réseau de neurones. Pour simplifier, nous avions choisi un réseau avec une seule couche cachée contenant deux neurones. Ces deux neurones produisaient chacun une transformation linéaire différente. Mais en les combinant directement dans la couche de sortie, nous obtenions… une autre ligne droite. Pas la courbe dont nous avions besoin pour modéliser nos données.
C'est là que les fonctions d'activation entrent en jeu. Elles introduisent de la non-linéarité dans le modèle. En passant les sorties des neurones cachés à travers une fonction ReLU, puis en les combinant dans la couche de sortie, nous obtenions enfin la courbe souhaitée.
En résumé, nous avions construit l'architecture du réseau de neurones et compris comment il faisait des prédictions grâce à la propagation avant (ou forward propagation).
CE QUE NOUS ALLONS DÉCOUVRIR : COMMENT LE RÉSEAU S'AMÉLIORE
Mais une prédiction n'est pas suffisante. Un réseau de neurones doit apprendre de ses erreurs pour devenir plus précis. C'est exactement ce que fait la rétropropagation : elle ajuste les paramètres du réseau pour réduire les différences entre les prédictions et les vraies valeurs.
Pour comprendre comment cela fonctionne, revenons aux valeurs produites à chaque couche lors de la propagation avant. Ces valeurs serviront de référence pour comprendre comment le réseau apprend en mettant à jour ses paramètres.
Prenons un exemple concret. Imaginons que pour 1 heure d'étude, la note réelle à l'examen est de 55. Pourtant, notre réseau de neurones prédit seulement 28. L'écart est énorme. Le réseau doit donc apprendre à ajuster ses paramètres pour réduire cette différence.
Mais comment fait-il cela ? Comment sait-il quels paramètres augmenter ou diminuer pour réduire l'erreur ? C'est précisément le rôle de la rétropropagation.
DE LA RÉGRESSION LINÉAIRE À LA RÉTROPROPAGATION
Pour comprendre la rétropropagation, repartons d'un concept plus simple : la régression linéaire.
En régression linéaire, nous cherchons à trouver les meilleures valeurs pour deux paramètres : l'interception (β₀) et la pente (β₁). Nous avions déjà vu comment calculer ces valeurs, mais aussi comment les visualiser.
Nous avions tracé un graphique en trois dimensions. Un axe représentait β₀, un autre β₁, et le troisième représentait la fonction de perte. En traçant les valeurs de la perte pour différentes combinaisons de β₀ et β₁, nous obtenions une courbe en forme de bol. Le point le plus bas de cette courbe correspondait à la perte minimale.
Pour trouver ce point, nous avions utilisé la différentiation partielle. Nous avions calculé les dérivées partielles de la fonction de perte par rapport à β₀ et β₁. Ces dérivées nous indiquaient comment la perte changeait lorsque nous modifiions légèrement β₀ ou β₁. En trouvant où ces dérivées s'annulaient, nous avions déterminé les valeurs optimales de β₀ et β₁.
En régression linéaire, la fonction de perte la plus courante est la Moyenne des Erreurs Quadratiques (MSE). Elle se calcule comme suit :
L(β₀, β₁) = (1/n) * Σ (yᵢ - ŷᵢ)²
Ici, yᵢ représente la vraie valeur, et ŷᵢ la prédiction du modèle. La perte dépend uniquement de β₀ et β₁.
Notre objectif reste le même avec un réseau de neurones : trouver les valeurs des paramètres qui minimisent la perte. Mais dans un réseau de neurones, la perte ne dépend plus seulement de deux paramètres. Elle dépend de tous les paramètres du réseau : les poids (w₁, w₂, w₃, w₄) et les biais (b₁, b₂, b₃).
Pour minimiser cette perte, nous devons comprendre comment la perte change lorsque nous modifions chaque paramètre individuellement. Cela revient à calculer les dérivées partielles de la perte par rapport à chaque paramètre.
POURQUOI LE RÈGLE DE DÉRIVATION EN CHAÎNE EST INDISPENSABLE
Avant de calculer ces dérivées partielles, il y a un concept fondamental à maîtriser : la règle de dérivation en chaîne. Sans elle, impossible de comprendre comment la rétropropagation fonctionne.
La règle de dérivation en chaîne s'applique lorsqu'une quantité dépend d'une autre quantité, qui elle-même dépend d'une troisième quantité. Par exemple, si z dépend de y, et y dépend de x, alors z dépend de x. La règle de dérivation en chaîne nous permet de calculer dz/dx en passant par dy/dx et dz/dy.
Prenons un exemple simple. Supposons que z = (x²)². Nous voulons calculer dz/dx. Une méthode consiste à substituer y = x² dans l'équation de z, ce qui donne z = y². Ensuite, nous calculons dz/dy = 2y et dy/dx = 2x. En multipliant ces deux dérivées, nous obtenons dz/dx = 4x³.
Cette méthode fonctionne pour des expressions simples, mais imaginez une expression beaucoup plus complexe avec plusieurs variables intermédiaires. Substituer toutes ces variables avant de dériver devient fastidieux et source d'erreurs.
C'est là que la règle de dérivation en chaîne brille. Au lieu de tout substituer, nous décomposons le problème en petites étapes. Nous calculons dz/dy et dy/dx séparément, puis nous les multiplions. Cette approche est systématique et réduit les risques d'erreur.
Dans un réseau de neurones, la chaîne est simplement plus longue. Chaque neurone ajoute une étape à cette chaîne de dépendances. Mais le principe reste le même : nous décomposons le problème en petites dérivées et les combinons grâce à la règle de dérivation en chaîne.CALCULER LES DÉRIVÉES PARTIELLES DANS UN RÉSEAU DE NEURONES
Jusqu'à présent, nous avions utilisé des valeurs fixes pour les poids et les biais pour comprendre la propagation avant. Mais notre objectif est d'apprendre ces valeurs à partir des données. Pour cela, nous devons représenter ces paramètres par des variables.
Prenons l'exemple d'un réseau de neurones avec une couche cachée contenant deux neurones. La prédiction ŷᵢ se calcule comme suit :
ŷᵢ = w₃ ReLU(w₁ xᵢ + b₁) + w₄ ReLU(w₂ xᵢ + b₂) + b₃
En utilisant cette prédiction, nous pouvons calculer la fonction de perte MSE :
L = (1/n) * Σ (yᵢ - ŷᵢ)²
Notre objectif est de calculer la dérivée partielle de la perte par rapport à un paramètre, par exemple w₁ :
∂L/∂w₁ = (1/n) * Σ ∂/∂w₁ [(yᵢ - ŷᵢ)²]
Cette équation semble complexe, mais nous allons la simplifier étape par étape.
D'abord, nous savons que 1/n est une constante. Elle peut donc être sortie de la dérivée. Ensuite, la somme est linéaire : nous pouvons dériver chaque terme séparément puis les additionner.
Nous obtenons alors :
∂L/∂w₁ = (1/n) * Σ ∂/∂w₁ [(yᵢ - ŷᵢ)²]
La vraie valeur yᵢ est une constante. Nous devons donc dériver uniquement la prédiction ŷᵢ par rapport à w₁.
En regardant l'équation de ŷᵢ, nous voyons que w₁ n'apparaît que dans le premier terme : w₃ ReLU(w₁ xᵢ + b₁). La dérivée de ŷᵢ par rapport à w₁ se simplifie donc à :
∂ŷᵢ/∂w₁ = w₃ ∂/∂w₁ [ReLU(w₁ xᵢ + b₁)]
Mais comment dériver ReLU(w₁ * xᵢ + b₁) par rapport à w₁ ?
La fonction ReLU ne dépend pas directement de w₁. Cependant, l'expression w₁ xᵢ + b₁ en dépend. Donc, lorsque w₁ change, cela modifie d'abord w₁ xᵢ + b₁, ce qui à son tour modifie la sortie de ReLU. C'est exactement le type de situation où la règle de dérivation en chaîne est utile.
Pour dériver ReLU(w₁ * xᵢ + b₁) par rapport à w₁, nous appliquons la règle de dérivation en chaîne :
- D'abord, nous dérivons w₁ * xᵢ + b₁ par rapport à w₁. Cela donne xᵢ.
- Ensuite, nous dérivons ReLU par rapport à w₁ * xᵢ + b₁. La dérivée de ReLU est 1 si son entrée est positive, 0 sinon.
Nous obtenons donc :
∂/∂w₁ [ReLU(w₁ xᵢ + b₁)] = ReLU'(w₁ xᵢ + b₁) * xᵢ
En combinant tout cela, nous obtenons la dérivée partielle de la perte par rapport à w₁ :
∂L/∂w₁ = (1/n) Σ (yᵢ - ŷᵢ) w₃ ReLU'(w₁ xᵢ + b₁) * xᵢ
Cette équation peut sembler intimidante, mais elle est en réalité très logique. Elle nous indique comment la perte totale change lorsque nous faisons une toute petite modification à w₁. Cette valeur s'appelle le gradient.
CE QUE REPRÉSENTE VRAIMENT CE GRADIENT
Pour mieux comprendre ce que représente ce gradient, décomposons-le :
- (yᵢ - ŷᵢ) : L'écart entre la prédiction et la vraie valeur. Plus cet écart est grand, plus le gradient sera important.
- w₃ : Le poids qui relie le premier neurone caché à la sortie. Il indique à quel point ce neurone contribue à la prédiction finale.
- ReLU'(w₁ * xᵢ + b₁) : La dérivée de la fonction ReLU. Elle indique si une petite modification de w₁ peut influencer la sortie du neurone (si l'entrée de ReLU est positive, la dérivée est 1 ; sinon, elle est 0).
- xᵢ : La valeur d'entrée. Elle indique à quel point une petite modification de w₁ affecte l'entrée du neurone.
Chaque exemple d'entraînement contribue à son propre gradient en fonction de ces quantités. Nous additionnons tous ces gradients individuels, puis nous divisons par n pour obtenir le gradient moyen sur l'ensemble du jeu de données. Ce gradient moyen nous indique comment ajuster w₁ pour réduire la perte globale, et pas seulement l'erreur pour un seul exemple.
ET POUR LES AUTRES PARAMÈTRES ?
Notre réseau de neurones compte en réalité six autres paramètres : w₂, w₃, w₄, b₁, b₂ et b₃. Chacun de ces paramètres a sa propre dérivée partielle.
Faut-il répéter ce processus manuellement pour chaque poids et biais ? Avec des réseaux de neurones de plus en plus grands, cette méthode deviendrait rapidement inefficace, voire impossible à gérer.
Heureusement, nous n'avons pas besoin de nouvelles mathématiques. Il suffit d'organiser ces calculs de manière plus efficace. Tout repose toujours sur la même règle de dérivation en chaîne que nous avons utilisée jusqu'à présent.
Dans la prochaine partie de cette série, nous verrons comment appliquer la règle de dérivation en chaîne de manière efficace sur l'ensemble du réseau de neurones. Cela nous mènera à l'un des algorithmes les plus importants du deep learning : la rétropropagation.
POUR ALLER PLUS LOIN : REVOIR LES BASES
Si certains concepts de cet article restent flous, notamment sur les réseaux de neurones ou la régression linéaire, n'hésitez pas à relire l'article précédent. Il reprend les bases de manière détaillée et accessible.
Comprendre la rétropropagation est une étape clé pour maîtriser le fonctionnement des intelligences artificielles modernes. Mais comme le disait Confucius :
- Towards Data Science
L'indépendance de CLODCO est votre garantie.
Pour que l'actualité de l'IA reste sans filtre et sans concession, votre soutien est indispensable. Votre contribution est le seul moteur de notre liberté éditoriale.
Soutenir CLODCO

