Rétropropagation

La rétropropagation (du gradient) est une méthode d'optimisation utilisée en particulier dans les réseaux de neurones.

Elle consiste à corriger les erreurs selon l'importance des éléments qui ont justement participé à la réalisation de ces erreurs. Dans le cas des réseaux de neurones, les poids synaptiques qui contribuent à engendrer une erreur importante se verront modifier de manière plus significative que les poids qui ont engendré une erreur marginale.

Ce principe fonde les méthodes de type descente de gradient, qui sont efficacement utilisées dans des réseaux de neurones multicouches comme les perceptrons multicouches (MLP pour « multi-layers perceptrons »). Les descentes de gradient ont pour but de converger de manière itérative vers une configuration optimisée des poids synaptiques. Cet état peut être un minimum local de la fonction à optimiser et idéalement, un minimum global de cette fonction (dite fonction de coût).

Normalement, la fonction de coût est non-linéaire au regard des poids synaptiques. Elle dispose également d'une borne inférieure et moyennant quelques précautions lors de l'apprentissage, les procédures d'optimisation finissent par aboutir à une configuration stable au sein du réseau de neurones.

Sommaire

Utilisation au sein d'un apprentissage supervisé

Dans le cas d'un apprentissage supervisé, des données sont présentées à l'entrée du réseau de neurones et celui-ci produit des sorties. La valeur des sorties dépend des paramètres liés à la structure du réseau de neurones : connectique entre neurones, fonctions d'agrégation et d'activation ainsi que les poids synaptiques.

Les différences entre ces sorties et les sorties désirées forment des erreurs qui sont corrigées via la rétropropagation, les poids du réseau de neurones sont alors changés. La manière de quantifier cette erreur peut varier selon le type d'apprentissage à effectuer. En appliquant cette étape plusieurs fois, l'erreur tend à diminuer et le réseau offre une meilleure prédiction. Il se peut toutefois qu'il ne parvienne pas à échapper à un minimum local, c'est pourquoi on ajoute en général un terme d'inertie (momentum) à la formule de la rétropropagation pour aider la descente de gradient à sortir de ces minimums locaux.

Algorithme

Les poids dans le réseau de neurones sont au préalable initialisés avec des valeurs aléatoires. On considère ensuite un ensemble de données qui vont servir à l'apprentissage. Chaque échantillon possède ses valeurs cibles qui sont celles que le réseau de neurones doit à terme prédire lorsque on lui présente le même échantillon. L'algorithme se présente comme ceci :

x_j^{(n)} = g^{(n)}(h_j^{(n)}) = g^{(n)}(\sum_k w_{jk}^{(n)}x_k^{(n-1)})

e_i^{sortie} = g'(h_i^{sortie})[t_i - y_i]

e_j^{(n-1)} = g'^{(n-1)}(h^{(n-1)})\sum_i w_{ij}e_i^{(n)}

\Delta w_{ij}^{(n)} = \lambda e_i^{(n)}x_j^{(n-1)}λ représente le taux d'apprentissage (de faible magnitude et inférieur à 1.0)

Implémentation

L'algorithme présenté ici est de type « online », c'est à dit que l'on met à jour les poids pour chaque échantillon d'apprentissage présenté dans le réseau de neurones. Une autre méthode est dite en « batch », c'est à dire que l'on calcule d'abord les erreurs pour tous les échantillons sans mettre à jour les poids (on additionne les erreurs) et lorsque l'ensemble des données est passée une fois dans le réseau, on applique la rétropropagation en utilisant l'erreur total. Cette façon de faire est préférée pour des raisons de rapidité et de convergence.

L'algorithme est itératif et la correction s'applique autant de fois que nécessaire pour obtenir une bonne prédiction. Il faut cependant veiller aux problèmes de surapprentissage liés à un mauvais dimensionnement du réseau ou un apprentissage trop poussé.

Ajout d'inertie

Pour éviter les problèmes liés à une stabilisation dans un minimum local, on ajoute un terme d'inertie (momentum). Celui-ci permet de sortir des minimums locaux dans la mesure du possible et de poursuivre la descente de la fonction d'erreur. À chaque itération, le changement de poids conserve les informations des changements précédents. Cet effet de mémoire permet d'éviter les oscillations et accélère l'optimisation du réseau. Par rapport à la formule de modification des poids présentée auparavant, le changement des poids avec inertie au temps t se traduit par :

\Delta w_{ij}^{(n)}(t) = \lambda e_i^{(n)}x_j^{(n-1)} + \alpha \Delta w_{ij}^{(n)}(t-1)

avec α un paramètre compris entre 0 et 1.0.

See also: Rétropropagation, Erreur, Inertie, Réseau de neurones, Surapprentissage, Synapse, Apprentissage supervisé, Fonction de coût, Perceptron, Descente de gradient