Chapitre 9: Réseaux multicouches
Module: Réseaux de Neurones et
Apprentissage Automatique
Chargé de cours: Dr. Makhlouf A.
2
Introduction
• Apparus en 1985, les réseaux multicouches sont aujourd'hui les
modèles les plus employés. Plusieurs couches de traitement leurs
permettent de réaliser des associations non linéaires entre l'entrée
et la sortie. Ils sont ainsi capables de résoudre le cas du "ou exclusif"
(cf Perceptron).
• On sait depuis les années soixante que les possibilités de traitement
des réseaux multicouches sont supérieures à celle du Perceptron,
cependant l'algorithme d'apprentissage manquait. Pour la couche de
sortie, on peut appliqué l'apprentissage du Perceptron, mais
comment modifier les poids pour les connexions qui ne sont pas en
relation avec un neurone de sortie ?
• Le problème est ramené à l'obtention d'une estimation de la valeur
désirée pour chaque neurone de la couche cachée. La
rétropropagation de gradient est une solution à ce problème. Cet
algorithme a été proposé indépendamment par trois équipes en
1985, dont Y. le Cun. Des recherches bibliographiques ont montré
qu'il s'agit en fait d'une redécouverte. Concluons que le Faire-savoir
est aussi important que le Savoir dans le domaine scientifique.
3
Introduction
• Le principe utilisé par la rétropropagation ("backpropagation" en
anglais) de gradient est la minimisation d'une fonction dépendante
de l'erreur. Il s'agit d'une méthode générale, largement employée
dans d'autres domaines tels que la physique. Une perception
intuitive de cet algorithme consiste à considérer l'apprentissage
comme la recherche sur la surface de coût de la position de coût
minimal. A chaque configuration de poids correspond un coût. Le
gradient est une estimation locale de la pente de la surface. La
minimisation du gradient permet de parcourir cette surface
orthogonalement aux courbes de niveau d'un pas fixé. Les
problèmes rencontrés durant l'apprentissage résultent des zones
très plates et des minima locaux.
4
Introduction
Figure 1. Recherche de la zone de coût minimal dans l'espace de configuration des poids du
réseau (ramener ici en deux dimensions) pour les exemples de la base d'apprentissage.
Les courbes de niveaux sont en trait fin.
5
Structure / Fonctionnement
Les neurones sont continus. La fonction de transfert est une sigmoïde (cf
chapitre 3) qui peut être définie, par exemple, par l'équation :
où Ò spécifie la pente de la sigmoïde.
L'architecture d'un réseau multicouche et son fonctionnement en phase
d'utilisation ont été présenté au chapitre 3.
6
Apprentissage
L'apprentissage est supervisé : on associe une configuration d'entrée à une
configuration de sortie. L'algorithme de la rétropropagation est un
algorithme de gradient itératif conçu pour minimiser un critère
quadratique ("à la puissance 2") d'erreur entre la sortie obtenue d'un
réseau multicouche et la sortie désirée. Cette minimisation est réalisée par
une configuration des poids adéquate. L'erreur (e) est la différence entre la
valeur désirée (d) pour le neurone de sortie et sa valeur calculée par
propagation (x). Ce signal d'erreur permet de définir une fonction de coût :
où, j indique un numéro d'indice pour les neurones de sortie et l indique
un exemple d'apprentissage. M est l'opérateur de moyennage, c'est une
estimation de la moyenne temporelle dans le cas stochastique. On réalise
donc la moyenne des erreurs obtenues pour chacun des exemples de la
base d'apprentissage.
7
Apprentissage
Cet algorithme nécessite une fonction continue, non-linéaire et différentiable
comme fonction de transfert du neurone.
1/ Initialisation des poids à des valeurs aléatoires de faible grandeur;
2/ Sélection d'un exemple d'apprentissage (E, d)l dans la base d'apprentissage
3/ Présentation de la forme d'entrée (E) sur la couche d'entrée du réseau;
4/ Calcul par propagation de la sortie obtenue (o);
5/ Si erreur en sortie alors pour tous les neurones i (depuis la sortie jusqu'à
l'entrée)
Si i est un neurone de sortie alors yi = 2 f '(ai).(di - xi) ;
Si i est un neurone caché (ou d'entrée) alors yi = f '(ai). Σk(wki.yk) ;
(k : neurones compris entre la couche actuelle et la couche de sortie)
6/ Application de la procédure de gradient. μ est un gain fixé par l'utilisateur.
wij(t+1) = wij(t) + μ .yi .xj ;
7/ Tant que l'erreur est trop importante, retour à l'étape 2 (exemple suivant).
8
Apprentissage
L'algorithme de la rétropropagation de gradient, bien que très simple à
implanter, nécessite un certain savoir-faire pour une utilisation efficace. En
effet, la convergence de l'algorithme n'est pas prouvée et de multiples
variables sont à ajuster précisément en fonction du problème traité. Parmi
ces variables à fixer, citons par exemple : les paramètres apparaissants dans
les différentes équations (gain de la procédure de gradient (μ), pente de la
fonction sigmoïde (Ò), ..), la sélection des exemples pour l'apprentissage et le
test, l'ordre de présentation et les distributions relatives des exemples dans la
base d'apprentissage, le choix du codage des informations en entrée et en
sortie, la structure du réseau (présence éventuelle de connexions directes de
la couche d'entrée sur la couche de sortie pour traiter à ce niveau la partie
linéaire du problème, limitation pratique du nombre de couches, taille de la
couche cachée), la configuration initiale des poids, le nombre d'itérations
d'apprentissage, ...
9
Résultats
L'application la plus connue est le logiciel NETtalk (fig. 2). Un réseau de
neurones multicouche apprend à prononcer du texte en anglais. Un exemple
d'apprentissage est constitué d'une chaine de caractères et de sa transcription
phonétique.
Figure 2. NETtalk : 309 neurones (3
couches) et 10629 poids (80 cellules cachées).
Après 12 h d'apprentissage, la performance est
de 95% sur le texte d'apprentissage (1000
mots) et 90% sur du texte nouveau (mots
nouveaux).
On a connecté en sortie un synthétiseur de
paroles, le texte est compréhensible. De plus,
il semble que durant l'apprentissage, NETtalk
se comporte de la même manière qu'un enfant
apprenant à lire (même type de fautes, ...).