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 (backprop) est le processus de calcul de la manière dont la fonction de perte varie par rapport à chaque paramètre du réseau. L'objectif est de mettre à jour les paramètres dans la direction qui réduit la perte.

Pour cela, l'algorithme de descente de gradient est utilisé afin de calculer les dérivées de la perte par rapport aux valeurs de pré-activation de chaque couche (valeurs brutes avant l'application de la fonction d'activation) et de les propager en arrière.

Chaque couche contribue à la prédiction finale, il est donc nécessaire de calculer les gradients de manière structurée :

  1. Effectuer la propagation avant ;
  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 les gradients pour les poids et les biais afin de les mettre à jour.
Note
Note

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 variation 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, la notation suivante sera utilisée :

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

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, nous introduisons 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 l'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, le gradient de la perte par rapport aux activations de la couche de sortie, danda^n, est d'abord calculé. 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 obtenu :

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

Le symbole \odot représente la multiplication élément par élément. Comme nous travaillons avec des vecteurs et des matrices, le symbole de multiplication habituel \cdot représente le produit scalaire à la place. fnf'^n désigne la dérivée de la fonction d'activation de la couche de sortie.

Cette quantité représente la sensibilité de la fonction de perte aux variations de la pré-activation de la couche de sortie.

Une fois que nous avons dzn\text d z^n, nous calculons les gradients pour les poids et les biais :

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

(an1)T(a^{n-1})^T est le vecteur transposé d'activation de la couche précédente. Étant donné que le vecteur original est un vecteur nneurons×1n_{neurons} \times 1, le vecteur transposé est 1×nneurons1 \times n_{neurons}.

Pour propager cela en arrière, nous calculons la dérivée de la perte par rapport aux activations de la couche précédente :

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

Propagation des gradients vers les couches cachées

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

  1. Calcul de la dérivée de la perte par rapport aux pré-activations ;
  2. Calcul des gradients pour les poids et les biais ;
  3. Calcul de 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}

Cette étape se répète jusqu'à ce que l'on atteigne la couche d'entrée.

Mise à jour des poids et des biais

Une fois les gradients calculés pour toutes les couches, les poids et les biais sont mis à jour à l'aide de la descente de gradient :

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

α\alpha est le taux d'apprentissage, qui contrôle l'ampleur de l'ajustement des paramètres.

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 (backprop) est le processus de calcul de la manière dont la fonction de perte varie par rapport à chaque paramètre du réseau. L'objectif est de mettre à jour les paramètres dans la direction qui réduit la perte.

Pour cela, l'algorithme de descente de gradient est utilisé afin de calculer les dérivées de la perte par rapport aux valeurs de pré-activation de chaque couche (valeurs brutes avant l'application de la fonction d'activation) et de les propager en arrière.

Chaque couche contribue à la prédiction finale, il est donc nécessaire de calculer les gradients de manière structurée :

  1. Effectuer la propagation avant ;
  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 les gradients pour les poids et les biais afin de les mettre à jour.
Note
Note

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 variation 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, la notation suivante sera utilisée :

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

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, nous introduisons 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 l'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, le gradient de la perte par rapport aux activations de la couche de sortie, danda^n, est d'abord calculé. 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 obtenu :

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

Le symbole \odot représente la multiplication élément par élément. Comme nous travaillons avec des vecteurs et des matrices, le symbole de multiplication habituel \cdot représente le produit scalaire à la place. fnf'^n désigne la dérivée de la fonction d'activation de la couche de sortie.

Cette quantité représente la sensibilité de la fonction de perte aux variations de la pré-activation de la couche de sortie.

Une fois que nous avons dzn\text d z^n, nous calculons les gradients pour les poids et les biais :

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

(an1)T(a^{n-1})^T est le vecteur transposé d'activation de la couche précédente. Étant donné que le vecteur original est un vecteur nneurons×1n_{neurons} \times 1, le vecteur transposé est 1×nneurons1 \times n_{neurons}.

Pour propager cela en arrière, nous calculons la dérivée de la perte par rapport aux activations de la couche précédente :

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

Propagation des gradients vers les couches cachées

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

  1. Calcul de la dérivée de la perte par rapport aux pré-activations ;
  2. Calcul des gradients pour les poids et les biais ;
  3. Calcul de 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}

Cette étape se répète jusqu'à ce que l'on atteigne la couche d'entrée.

Mise à jour des poids et des biais

Une fois les gradients calculés pour toutes les couches, les poids et les biais sont mis à jour à l'aide de la descente de gradient :

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

α\alpha est le taux d'apprentissage, qui contrôle l'ampleur de l'ajustement des paramètres.

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