LES RÉSEAUX NEURONAUX: RESEAUX A COUCHES CACHEES


Définition
Algorithme de la rétropropagation d´erreur
Exemple
Conclusion

















































Définition


       Limitation du perceptron

       Architecture

Limitation du perceptron

         Comme on l´a vu en 3-3-4 un perceptron ne peut résoudre que des problèmes linéairement séparables (un contre exemple est la fonction XOR). Différentes technique permettent, dans une certaine mesure, de dépasser cette limitation (comme le recodage du problème en un problème linéaire, ce qui n´est pas toujours possible).
         Mais la méthode la plus connue consiste à complexifier le perceptron en lui ajoutant des couches de neurones (simulant le cerveau dont l´architecture est hautement complexe).

Architecture

         Un réseau à couches cachées comporte (voir figure 5-1)
         1) Une couche d´entrée.
         2) Une ou plusieurs couches cachées.
         3) Une couche de sortie.
         4) Le flux se fait "en avant", c´est à dire que chaque neurone d´une couche est connecté à tous les neurones de la couche suivante et a aucun des neurones des couches précédentes.
         En pratique une ou deux couches cachées suffisent. La raison pour laquelle on limite le nombre de couches cachées est que, comme on le verra plus loin, l´algorithme de "rétropropagation de l´erreur" est très lent et demande un très grand nombre de transferts de données, d´ou une propagation des erreurs d´arrondi et des temps de calculs prohibitifs.


Figure 5-1

         Soit par exemple un réseau de neurones avec une couche d´entrée comportant Ne cellules, une couche cachée de Nc cellules et une couche de sortie ayant Ns cellules.
         On notera xk le vecteur de Ne éléments representant le stimulus numero k (valeur d´apprentissage) parmi Nk. La matrice Ne * Nk des k stimulus à apprendre sera notée X.
         On notera hk le vecteur de Nc éléments représentant la réponse des Nc cellules de la couche cachée.
         On notera ok le vecteur de Ns éléments représentant la réponse des Ns cellules de la couche de sortie.
         tk est le vecteur de Ns éléments de la réponse théorique pour l´entrée xk. L´apprentissage est défini par les Nk couples (x1,t1) ... (xNk,tNk). La matrice Ns * Nk des réponses théoriques sera notée T.
         Soit W la matrice Nc * Ne des poids des connexions reliant les cellules de la couche d´entrée à celles de la couche cachée. wj,i est le poids de la connexion de la cellule d´entrée numero i à la cellule cachée numéro j.
         Soit Z la matrice Nc * Ns des poids des connexions relaint les cellules de la couche cachée celles de la couche de sortie.
         Les Nk couples d´apprentissage seront notes:
                  {(x1,ox1) , (x2,ox2) , ... }
         On supposera que la fonction de transfert des neurones est la fonction sigmoïde.

Algorithme de la rétropropagation d´erreur


       Calcul du signal d´erreur local

       L´algorithme

       Correction des oscillations

       Exemple de la fonction sigmoide

Calcul du signal d´erreur locale


              Calcul du signal d´erreur d´une unité

              Couche de sortie

              Couche cachée

Calcul du signal d´erreur d´une unité

         La méthode dite de "rétropropagation de l´erreur" est une technique d´apprentissage "supervisée", c´est à dire que, pour apprendre, le réseau doit connaître la réponse théorique (celle qu´il doit apprendre). Si la réponse calculée est différente, on modifie les poids de manière à diminuer l´erreur commise par la cellule correspondant à la réponse. Le calcul de prise en compte de l´erreur est le même pour toutes les couches, mais celui du signal d´erreur diffère selon la couche.
         Soit, pour un exemple k, oi la sortie calculée et ti la sortie théorique, il s´agit de minimiser l´erreur quadratique:
La méthode du gradient consiste à faire évoluer les wi,j dans la direction inverse du gradient (voir figure 5-2):


Figure 5-2: Méthode du gradient

         n est la constante d´apprentissage, comprise entre 0.0 et 1.0
         Soit ei l´entrée du neurone i, ai sa sortie et f sa fonction de transfert, on a:
         La correction des poids de l´unité numéro i est alors:
         Le calcul du signal d´erreur di se déroule ensuite de deux façons différentes selon le niveau:

Couche de sortie

         L´erreur sur la couche de sortie est la différence entre la sortie théorique oi et la sortie calculée ai:

Couche cachée

         Soit i l´indice d´une couche cachée, elle influence les états de toutes les cellules de la couche suivante i+1. Soit k l´indice des unités de cette dernière couche. L´erreur quadratique Q dépend de tous les ak, lesquels dépendent de tous les ai et donc dans le calcul de di la différentielle partielle de Q relativement a ai contiendra les différentielles partielles de Q relativement à tous les ak, soit:

L´algorithme

         On a obtenu une méthode récurrente de calcul des signaux d´erreur des cellules d´une couche à partir de ceux de la couche suivante. On commence donc par calculer les signaux d´erreur pour la couche de sortie par la formule (2), puis, de proche en proche en descendant dans les couches, on utilise les signaux d´erreur des cellules de la couche i pour calculer celui de chaque cellule de la couche i-1 par la formule (3). D´ou le nom de "rétropropagation de l´erreur" de cet algorithme. voir figure 5-3
         Remarquons que ce calcul est local et n´utilise, pour chaque cellule d´une couche, que des informations relatives aux cellules voisines et aux poids des connexions les reliant.


Figure 5-3

Correction des oscillations

         La formule (1) de correction des poids modifie ceux-ci de façon à compenser exactement l´erreur commise pour le couple d´apprentissage en cours de validation et, de ce fait, ne tient pas compte des corrections apportées précédemment pour adapter le réseau à d´autres couples d´apprentissage. L´apprentissage ainsi conduit donne lieu aà des oscillations des poids et ne se termine donc pas puisque, pour celà, il faudrait que les poids soient stabilisés.
         Pour corriger ces oscillations on introduit, dans la formule (1), un terme proportionnel à la dernière variation des poids. Soit un couple d´apprentissage k, la correction des poids relative au couple k+1 est donné par:
         n est le taux d´apprentissage (entre 0.0 et 1.0)
         c est le "momentum" (entre 0.0 et 1.0)
         Cette formule permet de filtrer les oscillations haute fréquence. On prend couramment c = 0.5. Le réglage de ces paramètres est empirique, on évite d et c trop proches de zero, et c trop voisin de 1, de plus on peut les faire varier au cours de l´apprentissage.

Exemple de la fonction sigmoide

         Si f est la fonction sigmoide, le calcul de sa derivée donne:
         D´où le signal d´erreur pour la couche de sortie:
         Et celui d´une couche cachée:

Exemple

         Soit un réseau neuronal (d´apres [Abdi 1994]) constitué d´une couche d´entreé comportant 3 neurones (1,2,3), d´une couche cachée de 2 neurones (4,5) et d´une couche de sortie ayant 3 neurones (6,7,8).
         Les poids des connexions entrée -> cachée sont:
         w41 = 0.5 w42 = 0.3 w43 = 0.1
         w51 = 0.3 w52 = 0.2 w53 = 0.1
         Ceux des connexions cachée -> sortie sont:
         w64 = 0.1 w65 = 0.2
         w74 = 0.3 w75 = 0.4
         w84 = 0.5 w85 = 0.6
         Soit W la matrice des poids entrée -> cachée, Z celle des poids cachée -> sortie, et soi x le stimulus d´entrée devant donner la réponse théorique t:
         1) Calculons la réponse du réseau pour le stimulus x. Pour cela soit b l´activation de la couche cachée obtenue en appliquant la matrice W aià l´entrée x. Soit h la réponse de la couche cachée obtenue en appliquant la fonction sigmoide à b. Soit a l´activation de la couche de sortie obtenue en appliquant la matrice Z à h. Enfin soit o la réponse de la couche de sortie obtenue en appliquant la fonction sigmoide à a.

         2) L´apprentissage consiste à propager l´erreur en arrière: Le signal d´erreur de la couche de sortie est calculée par le "superviseur" par:

         3) Le signal d´erreur de la sortie est d´après (2):

         4) Soit la matrice R définie par:
         5) Après avoir propagé l´erreur vers la couche cachée (par d3), les neurones de la couche cachée corrigent les poids les reliant à la couche cachée. La formule (1) permet de recalculer la matrice Z (on a pris n=1 pour simplifier):
         6) Soit f l´estimation de l´erreur par les neurones de la couche cachée. Pour chaque cellule elle est la somme des signaux d´erreur propagés en retour, c´est à dire la somme de chaque colonne de R:
         7) Le signal d´erreur pour la couche cachée se calcule en appliquant la formule (3), c´est à dire en remplaçant l´erreur donnée par le superviseur par l´erreur estimée f par les neurones de la couche cachée:
         8) Les neurones de la couche cachée corrigent alors les poids de leurs connexions à la couche d´entrée en appliquant la formule (1):
         9) La première passe de l´apprentissage est terminée et comme il y a eu des corrections, le processus est repris, c´est à dire que l´on retourne en 1).

Conclusion

         L´algorithme de la rétropropagation décrite ici a été à l´origine du regain d´intérêt pour les réseaux neuronaux, puisqu´il permet de résoudre des problèmes de classification non linéaire (ce que ne savait pas faire le perceptron).
         Cependant cet algorithme ne résout pas tout... En particulier ses temps de convergence sont considérables (une expérience avec le XOR peut conduire à un apprentissage de plusieurs milliers de passes) et ne peut donc pas être utilisé pour des problèmes trop complexes. D´autre part cette méthode ne s´applique qu´en mode supervisé, c´est à dire avec un "professeur" qui connait les bonnes reponses. Enfin il ne semble pas que le système nerveux procéde ainsi.