Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Rétropropagation | Réseau de Neurones à Partir de Zéro
Introduction aux Réseaux de Neurones

bookRétropropagation

La rétropropagation, ou backpropagation, est le processus qui consiste à déterminer comment la fonction de perte varie par rapport à chaque paramètre du réseau de neurones. L'objectif est d'ajuster ces paramètres de manière à réduire la perte globale.

Ce processus repose sur l'algorithme de la descente de gradient, qui utilise les dérivées de la perte par rapport aux valeurs de pré-activation de chaque couche (les sorties brutes avant l'application de la fonction d'activation) et les propage en sens inverse à travers le réseau.

Puisque chaque couche contribue à la prédiction finale, les gradients sont calculés étape par étape :

  1. Effectuer la propagation avant pour obtenir les sorties ;
  2. Calculer la dérivée de la perte par rapport à la pré-activation de sortie ;
  3. Propager cette dérivée en arrière à travers les couches en utilisant la règle de la chaîne ;
  4. Calculer et utiliser les gradients pour les poids et les biais afin de les mettre à jour pendant l'entraînement.
Note
Remarque

Les gradients représentent le taux de variation d'une fonction par rapport à ses entrées, c'est-à-dire ses dérivées. Ils indiquent dans quelle mesure une petite modification des poids, des biais ou des activations affecte la fonction de perte, guidant ainsi le processus d'apprentissage du modèle via la descente de gradient.

Notation

Pour clarifier l'explication, utilisons la notation suivante :

  • WlW^l est la matrice de poids de la couche ll ;
  • blb^l est le vecteur de biais de la couche ll ;
  • zlz^l est le vecteur de pré-activations de la couche ll ;
  • ala^l est le vecteur d'activations de la couche ll ;

Ainsi, en posant a0a^0 égal à xx (les entrées), la propagation avant dans un perceptron à n couches peut être décrite par la séquence d'opérations suivante :

a0=x,......z1=W1a0+b1,zl=Wlal1+bl,zn=Wnan1+bn,a1=f1(z1),al=fl(zl),an=fn(zn),......y^=an.\begin{aligned} a^0 &= x, & &... & &...\\ z^1 &= W^1 a^0 + b^1, & z^l &= W^l a^{l-1} + b^l, & z^n &= W^n a^{n-1} + b^n,\\ a^1 &= f^1(z^1), & a^l &= f^l(z^l), & a^n &= f^n(z^n),\\ &... & &... & \hat y &= a^n. \end{aligned}

Pour décrire la rétropropagation mathématiquement, introduire les notations suivantes :

  • dalda^l : dérivée de la perte par rapport aux activations à la couche ll ;
  • dzldz^l : dérivée de la perte par rapport aux pré-activations à la couche ll (avant application de la fonction d'activation) ;
  • dWldW^l : dérivée de la perte par rapport aux poids à la couche ll ;
  • dbldb^l : dérivée de la perte par rapport aux biais à la couche ll.

Calcul des gradients pour la couche de sortie

À la couche finale nn, la première étape consiste à calculer le gradient de la perte par rapport aux activations de la couche de sortie, noté danda^n.

Ensuite, en utilisant la règle de la chaîne, le gradient de la perte par rapport aux pré-activations de la couche de sortie est calculé comme suit :

dzn=danfn(zn)dz^n = da^n \odot f'^n(z^n)

Ici, fn(zn)f'^n(z^n) représente la dérivée de la fonction d'activation à la couche nn, et le symbole \odot désigne la multiplication élément par élément.

Note
Remarque

Le symbole \odot désigne la multiplication élément par élément, ce qui signifie que chaque élément d’un vecteur est multiplié par l’élément correspondant d’un autre vecteur. En revanche, le symbole \cdot représente le produit scalaire, utilisé pour la multiplication standard de matrices ou de vecteurs. Le terme fnf'^n fait référence à la dérivée de la fonction d’activation à la couche de sortie.

Cette valeur indique la sensibilité de la fonction de perte aux variations des valeurs de pré-activation de la couche de sortie.

Après avoir calculé dzndz^n, l'étape suivante consiste à déterminer les gradients pour les poids et les biais :

dWn=dzn(an1)T,dbn=dzn\begin{aligned} dW^n &= dz^n \cdot (a^{n-1})^T,\\ db^n &= dz^n \end{aligned}

Ces gradients décrivent dans quelle mesure chaque poids et biais de la couche de sortie doit être ajusté afin de réduire la perte.

Ici, (an1)T(a^{n-1})^T représente le vecteur d'activation transposé de la couche précédente. Si le vecteur original a la forme nneurons×1n_{\text{neurons}} \times 1, sa transposée a la forme 1×nneurons1 \times n_{\text{neurons}}.

Pour poursuivre la rétropropagation, la dérivée de la perte par rapport aux activations de la couche précédente est calculée comme suit :

dan1=(Wn)Tdznda^{n-1} = (W^n)^T \cdot dz^n

Cette expression permet de transmettre le signal d'erreur en arrière à travers le réseau, rendant possible l'ajustement des couches précédentes lors de l'entraînement.

Propagation des gradients vers les couches cachées

Pour chaque couche cachée ll, la procédure reste identique. Étant donné dalda^l :

  1. Calculer la dérivée de la perte par rapport aux pré-activations ;
  2. Calculer les gradients pour les poids et les biais ;
  3. Calculer dal1da^{l-1} pour propager la dérivée en arrière.
dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Ce processus est répété pour chaque couche précédente, étape par étape, jusqu'à atteindre la couche d'entrée.

Mise à jour des poids et des biais

Après avoir calculé les gradients pour toutes les couches, les poids et les biais sont mis à jour à l'aide de l'algorithme de descente de gradient :

Wl=WlαdWl,bl=blαdbl.\begin{aligned} W^l &= W^l - \alpha \cdot dW^l,\\ b^l &= b^l - \alpha \cdot db^l. \end{aligned}

Ici, α\alpha représente le taux d'apprentissage, qui contrôle l'ampleur de l'ajustement des paramètres à chaque étape d'entraînement.

Ici, α\alpha est le taux d'apprentissage, un hyperparamètre qui détermine la taille de l'ajustement appliqué aux poids et aux biais à chaque étape de mise à jour.

question mark

Lors de la rétropropagation, comment un réseau de neurones met-il à jour ses poids et ses biais afin de minimiser la fonction de perte ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 7

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 4

bookRétropropagation

Glissez pour afficher le menu

La rétropropagation, ou backpropagation, est le processus qui consiste à déterminer comment la fonction de perte varie par rapport à chaque paramètre du réseau de neurones. L'objectif est d'ajuster ces paramètres de manière à réduire la perte globale.

Ce processus repose sur l'algorithme de la descente de gradient, qui utilise les dérivées de la perte par rapport aux valeurs de pré-activation de chaque couche (les sorties brutes avant l'application de la fonction d'activation) et les propage en sens inverse à travers le réseau.

Puisque chaque couche contribue à la prédiction finale, les gradients sont calculés étape par étape :

  1. Effectuer la propagation avant pour obtenir les sorties ;
  2. Calculer la dérivée de la perte par rapport à la pré-activation de sortie ;
  3. Propager cette dérivée en arrière à travers les couches en utilisant la règle de la chaîne ;
  4. Calculer et utiliser les gradients pour les poids et les biais afin de les mettre à jour pendant l'entraînement.
Note
Remarque

Les gradients représentent le taux de variation d'une fonction par rapport à ses entrées, c'est-à-dire ses dérivées. Ils indiquent dans quelle mesure une petite modification des poids, des biais ou des activations affecte la fonction de perte, guidant ainsi le processus d'apprentissage du modèle via la descente de gradient.

Notation

Pour clarifier l'explication, utilisons la notation suivante :

  • WlW^l est la matrice de poids de la couche ll ;
  • blb^l est le vecteur de biais de la couche ll ;
  • zlz^l est le vecteur de pré-activations de la couche ll ;
  • ala^l est le vecteur d'activations de la couche ll ;

Ainsi, en posant a0a^0 égal à xx (les entrées), la propagation avant dans un perceptron à n couches peut être décrite par la séquence d'opérations suivante :

a0=x,......z1=W1a0+b1,zl=Wlal1+bl,zn=Wnan1+bn,a1=f1(z1),al=fl(zl),an=fn(zn),......y^=an.\begin{aligned} a^0 &= x, & &... & &...\\ z^1 &= W^1 a^0 + b^1, & z^l &= W^l a^{l-1} + b^l, & z^n &= W^n a^{n-1} + b^n,\\ a^1 &= f^1(z^1), & a^l &= f^l(z^l), & a^n &= f^n(z^n),\\ &... & &... & \hat y &= a^n. \end{aligned}

Pour décrire la rétropropagation mathématiquement, introduire les notations suivantes :

  • dalda^l : dérivée de la perte par rapport aux activations à la couche ll ;
  • dzldz^l : dérivée de la perte par rapport aux pré-activations à la couche ll (avant application de la fonction d'activation) ;
  • dWldW^l : dérivée de la perte par rapport aux poids à la couche ll ;
  • dbldb^l : dérivée de la perte par rapport aux biais à la couche ll.

Calcul des gradients pour la couche de sortie

À la couche finale nn, la première étape consiste à calculer le gradient de la perte par rapport aux activations de la couche de sortie, noté danda^n.

Ensuite, en utilisant la règle de la chaîne, le gradient de la perte par rapport aux pré-activations de la couche de sortie est calculé comme suit :

dzn=danfn(zn)dz^n = da^n \odot f'^n(z^n)

Ici, fn(zn)f'^n(z^n) représente la dérivée de la fonction d'activation à la couche nn, et le symbole \odot désigne la multiplication élément par élément.

Note
Remarque

Le symbole \odot désigne la multiplication élément par élément, ce qui signifie que chaque élément d’un vecteur est multiplié par l’élément correspondant d’un autre vecteur. En revanche, le symbole \cdot représente le produit scalaire, utilisé pour la multiplication standard de matrices ou de vecteurs. Le terme fnf'^n fait référence à la dérivée de la fonction d’activation à la couche de sortie.

Cette valeur indique la sensibilité de la fonction de perte aux variations des valeurs de pré-activation de la couche de sortie.

Après avoir calculé dzndz^n, l'étape suivante consiste à déterminer les gradients pour les poids et les biais :

dWn=dzn(an1)T,dbn=dzn\begin{aligned} dW^n &= dz^n \cdot (a^{n-1})^T,\\ db^n &= dz^n \end{aligned}

Ces gradients décrivent dans quelle mesure chaque poids et biais de la couche de sortie doit être ajusté afin de réduire la perte.

Ici, (an1)T(a^{n-1})^T représente le vecteur d'activation transposé de la couche précédente. Si le vecteur original a la forme nneurons×1n_{\text{neurons}} \times 1, sa transposée a la forme 1×nneurons1 \times n_{\text{neurons}}.

Pour poursuivre la rétropropagation, la dérivée de la perte par rapport aux activations de la couche précédente est calculée comme suit :

dan1=(Wn)Tdznda^{n-1} = (W^n)^T \cdot dz^n

Cette expression permet de transmettre le signal d'erreur en arrière à travers le réseau, rendant possible l'ajustement des couches précédentes lors de l'entraînement.

Propagation des gradients vers les couches cachées

Pour chaque couche cachée ll, la procédure reste identique. Étant donné dalda^l :

  1. Calculer la dérivée de la perte par rapport aux pré-activations ;
  2. Calculer les gradients pour les poids et les biais ;
  3. Calculer dal1da^{l-1} pour propager la dérivée en arrière.
dzl=dalfl(zl)dWl=dzl(al1)Tdbl=dzldal1=(Wl)Tdzl\begin{aligned} dz^l &= da^l \odot f'^l(z^l)\\ dW^l &= dz^l \cdot (a^{l-1})^T\\ db^l &= dz^l\\ da^{l-1} &= (W^l)^T \cdot dz^l \end{aligned}

Ce processus est répété pour chaque couche précédente, étape par étape, jusqu'à atteindre la couche d'entrée.

Mise à jour des poids et des biais

Après avoir calculé les gradients pour toutes les couches, les poids et les biais sont mis à jour à l'aide de l'algorithme de descente de gradient :

Wl=WlαdWl,bl=blαdbl.\begin{aligned} W^l &= W^l - \alpha \cdot dW^l,\\ b^l &= b^l - \alpha \cdot db^l. \end{aligned}

Ici, α\alpha représente le taux d'apprentissage, qui contrôle l'ampleur de l'ajustement des paramètres à chaque étape d'entraînement.

Ici, α\alpha est le taux d'apprentissage, un hyperparamètre qui détermine la taille de l'ajustement appliqué aux poids et aux biais à chaque étape de mise à jour.

question mark

Lors de la rétropropagation, comment un réseau de neurones met-il à jour ses poids et ses biais afin de minimiser la fonction de perte ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 2. Chapitre 7
some-alt