Rétropropagation
La rétropropagation (backprop) est le processus de calcul de la façon 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, on utilise l'algorithme de la descente de gradient et on calcule 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), puis on les propage en arrière.
Chaque couche contribue à la prédiction finale, donc les gradients doivent être calculés de manière structurée :
- Effectuer la propagation avant ;
- Calculer la dérivée de la perte par rapport à la pré-activation de sortie ;
- Propager cette dérivée en arrière à travers les couches en utilisant la règle de la chaîne ;
- Calculer les gradients pour les poids et les biais afin de les mettre à jour.
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, utilisons la notation suivante :
- Wl est la matrice de poids de la couche l ;
- bl est le vecteur de biais de la couche l ;
- zl est le vecteur de pré-activations de la couche l ;
- al est le vecteur d'activations de la couche l ;
Ainsi, en posant a0 égal à x (les entrées), la propagation avant dans un perceptron à n couches peut être décrite par la séquence d'opérations suivante :
a0z1a1=x,=W1a0+b1,=f1(z1),...zlal...=Wlal−1+bl,=fl(zl),...znany^...=Wnan−1+bn,=fn(zn),=an.Pour décrire la rétropropagation mathématiquement, nous introduisons les notations suivantes :
- dal : dérivée de la perte par rapport aux activations à la couche l ;
- dzl : dérivée de la perte par rapport aux pré-activations à la couche l (avant l'application de la fonction d'activation) ;
- dWl : dérivée de la perte par rapport aux poids à la couche l ;
- dbl : dérivée de la perte par rapport aux biais à la couche l.
Calcul des gradients pour la couche de sortie
À la couche finale n, on commence par calculer le gradient de la perte par rapport aux activations de la couche de sortie, dan. Ensuite, en utilisant la règle de la chaîne, on calcule le gradient de la perte par rapport aux pré-activations de la couche de sortie :
dzn=dan⊙f′n(zn)Le symbole ⊙ représente la multiplication élément par élément. Comme nous travaillons avec des vecteurs et des matrices, le symbole de multiplication habituel ⋅ représente plutôt le produit scalaire. f′n est 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, nous calculons les gradients pour les poids et les biais :
dWndbn=dzn⋅(an−1)T=dznoù (an−1)T est le vecteur transposé d'activation de la couche précédente. Étant donné que le vecteur original est un vecteur nneurons×1, le vecteur transposé est 1×nneurons.
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 :
dan−1=(Wn)T⋅dznPropagation des gradients vers les couches cachées
Pour chaque couche cachée l, la procédure est identique. Étant donné dal :
- Calculer la dérivée de la perte par rapport aux pré-activations ;
- Calculer les gradients pour les poids et les biais ;
- Calculer dal−1 pour propager la dérivée en arrière.
Cette étape se répète jusqu'à ce que nous atteignions la couche d'entrée.
Mise à jour des poids et des biais
Une fois que les gradients pour toutes les couches ont été calculés, les poids et les biais sont mis à jour à l'aide de la descente de gradient :
Wlbl=Wl−α⋅dWl=bl−α⋅dbloù α est le taux d'apprentissage, qui contrôle l'ampleur de l'ajustement des paramètres.
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Awesome!
Completion rate improved to 4
Rétropropagation
Glissez pour afficher le menu
La rétropropagation (backprop) est le processus de calcul de la façon 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, on utilise l'algorithme de la descente de gradient et on calcule 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), puis on les propage en arrière.
Chaque couche contribue à la prédiction finale, donc les gradients doivent être calculés de manière structurée :
- Effectuer la propagation avant ;
- Calculer la dérivée de la perte par rapport à la pré-activation de sortie ;
- Propager cette dérivée en arrière à travers les couches en utilisant la règle de la chaîne ;
- Calculer les gradients pour les poids et les biais afin de les mettre à jour.
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, utilisons la notation suivante :
- Wl est la matrice de poids de la couche l ;
- bl est le vecteur de biais de la couche l ;
- zl est le vecteur de pré-activations de la couche l ;
- al est le vecteur d'activations de la couche l ;
Ainsi, en posant a0 égal à x (les entrées), la propagation avant dans un perceptron à n couches peut être décrite par la séquence d'opérations suivante :
a0z1a1=x,=W1a0+b1,=f1(z1),...zlal...=Wlal−1+bl,=fl(zl),...znany^...=Wnan−1+bn,=fn(zn),=an.Pour décrire la rétropropagation mathématiquement, nous introduisons les notations suivantes :
- dal : dérivée de la perte par rapport aux activations à la couche l ;
- dzl : dérivée de la perte par rapport aux pré-activations à la couche l (avant l'application de la fonction d'activation) ;
- dWl : dérivée de la perte par rapport aux poids à la couche l ;
- dbl : dérivée de la perte par rapport aux biais à la couche l.
Calcul des gradients pour la couche de sortie
À la couche finale n, on commence par calculer le gradient de la perte par rapport aux activations de la couche de sortie, dan. Ensuite, en utilisant la règle de la chaîne, on calcule le gradient de la perte par rapport aux pré-activations de la couche de sortie :
dzn=dan⊙f′n(zn)Le symbole ⊙ représente la multiplication élément par élément. Comme nous travaillons avec des vecteurs et des matrices, le symbole de multiplication habituel ⋅ représente plutôt le produit scalaire. f′n est 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, nous calculons les gradients pour les poids et les biais :
dWndbn=dzn⋅(an−1)T=dznoù (an−1)T est le vecteur transposé d'activation de la couche précédente. Étant donné que le vecteur original est un vecteur nneurons×1, le vecteur transposé est 1×nneurons.
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 :
dan−1=(Wn)T⋅dznPropagation des gradients vers les couches cachées
Pour chaque couche cachée l, la procédure est identique. Étant donné dal :
- Calculer la dérivée de la perte par rapport aux pré-activations ;
- Calculer les gradients pour les poids et les biais ;
- Calculer dal−1 pour propager la dérivée en arrière.
Cette étape se répète jusqu'à ce que nous atteignions la couche d'entrée.
Mise à jour des poids et des biais
Une fois que les gradients pour toutes les couches ont été calculés, les poids et les biais sont mis à jour à l'aide de la descente de gradient :
Wlbl=Wl−α⋅dWl=bl−α⋅dbloù α est le taux d'apprentissage, qui contrôle l'ampleur de l'ajustement des paramètres.
Merci pour vos commentaires !