• Aucun résultat trouvé

Chapitre 2: Application des réseaux de neurones en diagnostic

2.10 Apprentissage d’un réseau multicouche

L’algorithme de rétropropagation (backpropagation) est l’un des algorithmes supervisé les plus utilisés pour l’apprentissage des réseaux de neurones. La rétropropagation constitue en fait la suite logique de l’enchaînement des règles d'apprentissage du Perceptron (PLR) et Widrow-Hoff (de Delta). L’objectif de cet algorithme est de modifier les poids du réseau dans le sens contraire du gradient du critère de performance.

Le problème du Perceptron est qu’il minimise une erreur en tout ou rien à cause de sa fonction d’activation sans prendre en compte une notion de distance. De ce fait, il est très peu robuste. La règle d’apprentissage de Widrow-Hoff ne travail plus en tout ou rien mais minimise une fonction d’erreur quadratique, donc elle est plus robuste et donne des solutions approchée lorsqu’il n’y a pas de solutions. Mais le problème est que la fonction d’erreur de cette règle n’est pas une véritable fonction d’erreur, car le signal est pris avant le seuillage. De plus, et c’est ceci qui est très limitatif, les règles d'apprentissage du Perceptron et de Widrow-Hoff ne fonctionnent que sur des réseaux avec une seule couche de poids adaptatifs (Hunt et al., 1992; Zemouri, 2003).

Le problème était donc de trouver une véritable fonction d’erreur qui permet l’apprentissage des réseaux multi-couches. C’est donc en étendant la règle de Widrow-Hoff que plusieurs équipes de chercheurs Le Cun, (1985) et Werbos, (1974) ont développé un algorithme d’apprentissage appelé rétropropagation du gradient de l’erreur, qui a été généralisé ensuite par l’équipe de Rummelhart en 1986 (Rummelhart et al., 1986). Cet algorithme fournit une façon de modifier les poids des connexions de toutes les couches d’un MLP.

L’idée qui est à la base de cet algorithme est simple, elle consiste à l’utilisation d’une fonction dérivable (fonction sigmoïde) en remplacement de la fonction de seuil utilisée dans le neurone linéaires a seuil. Le principe de cet algorithme consiste dans un premier temps à circuler vers l'avant les données d'entrées jusqu'à l'obtention d'une sortie calculée par le réseau, puis la seconde étape est de comparer la sortie calculée à la sortie réelle connue (Figure 2.9). Les poids sont modifiés de telle sorte qu'à la prochaine itération, l'erreur commise entre la sortie calculée est minimisée, en prenant en considération la présence des couches cachées, l'erreur est rétro-propagée vers l'arrière jusqu'à la couche d'entrée tout en modifiant la pondération, d’ou le nom rétro-propagation (Rumelhart et al., 1986).

Chapitre 2. Application des réseaux de neurones en diagnostic

41 Le processus est répété sur tous les exemples jusqu'au temps où l'on obtienne une erreur de sortie considérée comme négligeable.

Autrement dit, l'algorithme de rétro-propagation se divise en deux étapes :

 une phase de propagation, qui consiste à présenter les exemples à l’entrée du réseau, puis à propager cette entrée de proche en proche de la couche d’entrée à la couche de sortie en passant par les couches cachées;

 une phase de rétro-propagation, qui consiste à minimiser l’erreur (équation 2.8) commise sur l’ensemble des exemples présentés en modifiant les paramètres du réseau.

2.10.2 Limites de l’algorithme de rétropropagation

L’algorithme de rétro-propagation du gradient de l’erreur a permis de dépasser les limites du Perceptron simple. Il s’avère capable de résoudre un grand nombre de problèmes de classification et de reconnaissance des formes et à donné lieu à beaucoup d’applications. L'algorithme de rétropropagation souffre néanmoins de nombreux défauts, parmi lesquels

(Zemouri, 2003; Zwinglestein, 1995):

 une des limitations importantes est le temps de calcul : le temps d'apprentissage est relativement long, de quelques minutes à quelques heures, suivant la complexité et le nombre d'exemples d'apprentissage;

 une grande sensibilité aux conditions initiales, c'est-à-dire à la manière dont sont initialisés les poids des connexions;

 l'algorithme peut converger vers des minima locaux. Ce problème est en partie résolu avec le gradient stochastique, mais il subsiste quand même;

 le problème de dimensionnement du réseau: La rétro-propagation apprend une base d’apprentissage sur un réseau dont la structure est fixée a priori. Un mauvais choix de structure peut dégrader considérablement les performances du réseau, s’il est sous-

Figure 2.9 - Principe d’entraînement du réseau par rétro-propagation de l’erreur (Mokhnache, 2004) y Sortie désirée Entrée vers le réseau n couches cachées d - y Sortie du réseau d L'erreur Réadaptation des poids ws we

42 dimensionné, l’algorithme n’arrivera pas à apprendre. S’il est sur-dimensionné, la base d’apprentissage sera apprise mais ses performances en généralisation seront faible;

 l'erreur global décroit rapidement au début de l'apprentissage puis se met à augmenter. Alors la mémorisation de la configuration des poids qui reflète l'erreur minimale est importante. Pratiquement il est préférable de partitionner l’ensemble des exemples en trois sous-ensembles: le premier pour l'apprentissage, le deuxième pour la généralisation et le dernier pour le test.

2.10.3 Quelques algorithmes de rétropropagation

L’implantation la plus simple de la rétropropagation effectue la mise à jour des poids et des biais du réseau dans la direction dans laquelle la fonction d’erreur diminue le plus rapidement. Il y a beaucoup de variantes de l'algorithme de rétropropagation, citons par exemple:

Les algorithmes de descente de gradient Conjugué: L’algorithme de rétropropagation de

base ajuste les poids dans la direction de descente du gradient la plus raide (négatif du gradient). C’est la direction dans laquelle la fonction d’erreur diminue. Il s’avère que, ceci ne produit pas nécessairement la convergence la plus rapide. Dans les algorithmes de gradient conjugué une recherche est effectuée le long des directions conjuguées, qui produit une convergence généralement plus rapide. Parmi ces algorithmes nous citons les variantes suivantes avec leurs codes en MATLAB (MATLAB 8.1, 2013):

 Mise à jour de Fletcher-Reeves (Fletcher-Reeves Update TRAINCGF);

 Mise à jour de Polak-Ribiére (Polak-Ribiére Update  TRAINCGP);

 Relancements de Powell-Beale (Powell-Beale Restarts  TRAINCGB);

 Gradient conjugué mesuré (Scaled Conjugate Gradient  TRAINSCG).

Les algorithmes Quasi-newtoniens: La méthode de Newton est une alternative aux méthodes

de gradient conjugué pour une optimisation rapide. Le principe de base de la méthode de Newton est l’introduction des informations du second ordre ou la matrice Hessienne (dérivés

secondes) de la fonction de performance. La méthode de Newton converge souvent plus

rapidement que les méthodes de gradient conjugué. Il y a une classe d’algorithmes qui sont basés sur la méthode de Newton mais qui n’exige pas le calcul des dérivés secondes, qui s’appellent, algorithmes quasi-newtoniens. Ils mettent à jour une matrice approximative du Hessien à chaque itération de l’algorithme.

Parmi ces algorithmes nous citons:

 Broyden, Fletcher, Goldfarb, and Shanno algorithm (TRAINBFG);

 One step secant algorithm (TRAINOSS);

 Levenberg-Marquardt (TRAINLM);

L'algorithme de Levenberg-Marquardt a était conçu pour accélérer de manière significative

la convergence de l’apprentissage, sans devoir calculer la matrice Hessienne. Cet algorithme semble être la méthode la plus rapide pour l’apprentissage des réseaux neuronaux de taille

Chapitre 2. Application des réseaux de neurones en diagnostic

43 modérée de type feedforward comprenant plusieurs centaines de poids. L'inconvénient principal de l'algorithme de Levenberg-Marquardt est qu'il exige le stockage de quelques matrices qui peuvent être tout à fait grandes pour certains problèmes.