Vous êtes sur la page 1sur 26

Les réseaux multi-couches

Introduction et définition de
l'architecture
• Introduction


• Un réseau multi-couches
• On suppose que le seuil de chaque neurone est 2
définition de l'architecture
• Un réseau de neurones à couches cachées est défini par
une architecture vérifiant les propriétés suivantes : les
cellules sont réparties de façon exclusive dans des
couches C0, C1, ..., Cq,
• la première couche C0 est la rétine composée des
cellules d'entrée qui correspondent aux n variables
d'entrée ; les couches C1, ..., Cq-1 sont les couches
cachées ; la couche Cq est composée de la (ou les)
cellule(s) de décision,
• Les entrées d'une cellule d'une couche Ci avec i ≥1 sont
toutes les cellules de la couche Ci-1 et aucune autre
cellule.
• Pour pouvoir utiliser les réseaux multi-couches en
apprentissage, deux choses sont indispensables :
• une méthode indiquant comment choisir une
architecture de réseau pour résoudre un
problème donné. C'est-à-dire, pouvoir répondre
aux questions suivantes : combien de couches
cachées ? combien de neurones par couches
cachées ?
• une fois l'architecture choisie, un algorithme
d'apprentissage qui calcule, à partir de
l'échantillon d'apprentissage, les valeurs des
coefficients synaptiques pour construire un
réseau adapté au problème.
• Au début des années 80, des équipes de recherche
ont découvert l'algorithme de rétropropagation du
gradient. Cet algorithme est basé sur la méthode
du gradient.
• On utilisera une nouvelle cellule, la sortie de cette
cellule sera une fonction de variable réelle
dérivable qui est une approximation de la fonction
de Heaviside.
L'algorithme de rétropropagation du
gradient
• Cette fonction est une approximation
indéfiniment dérivable de la fonction à seuil
de Heaviside


• La fonction sigmoïde de paramètre k>0 est
définie par :
• (x)= 1/(1+e-kx)
• Notation
• chaque cellule est définie par un indice,
• le réseau comporte p cellules de sortie,
• si i est l'indice d'une cellule de sortie, di est la sortie attendue
pour cette cellule sur l'entrée x,
• wij est le poids synaptique associé au lien entre cellule j vers
la cellule i, ce qui implique qu'elles se trouvent sur deux
couches successives par définition de l'architecture,
• xij est l'entrée associée au lien entre cellule j vers cellule i,
• Pred(i) est l'ensemble des cellules dont la sortie est une
entrée de la cellule i,
• yi l'entrée totale de la cellule i, soit yi = ∑j∈Pred(i) wij xij,
• oi est la sortie de la cellule i, soit oi=(yi),
• Succ(i) est l'ensemble des cellules qui prennent comme
entrée la sortie de la cellule i.
Déroulement de l’algorithme de
rétropropagation

Déroulement de l’algorithme de
rétropropagation
• La Propagation directe:
• Présenter une forme X à l’entrée du réseau,
• Calcul des yi et des oi
• Calcul des i de la couche de sortie
• La rétropropagation:
• Rétropropagation et calcul des i
• Mise à jour des poids de la couche de sortie
• Mise à jour des poids des couches cachées
• Algorithme de rétropropagation du gradient :
• • Initialiser aléatoirement les coefficients wij dans [-0.5 ; 0.5]
• • Répéter
• • Prendre un exemple (x, d) de S
• • Calculer la sortie o
• • Pour toute cellule de sortie i
• • δi = σ‘(yi) ∗ (di − oi) = oi ∗ (1 − oi) ∗ (di − oi)
• • Fin Pour
• • Pour chaque couche de q − 1 à 1
• • Pour chaque cellule i de la couche courante
• • δi = σ’(yi) ∗ [Σ(k ∈ Succ(i)) (δk ∗ wki)]
• = oi ∗ (1 − oi) ∗ [Σ(k ∈ Succ(i)) (δk ∗ wki)]
• • Fin Pour
• •Fin Pour
• • Pour tout poids wij
• • wij = wij + ε ∗ δi ∗ xij
• • Fin Pour
• • Fin Répéter
• la somme des corrections  est inferieure a un seuil fixe lors
d'une période (somme des corrections sur l'ensemble des
exemples d'apprentissage) ;
• le nombre d'itérations effectuées qui a été fixe à priori ;
• l'erreur sur un jeu de validation est inferieure à un seuil fixe.
Pour cela, dans l'algorithme , il faut ajouter, a la suite du
passage de tous les exemples du jeu d'apprentissage,
l‘évaluation de l'erreur sur le jeu de validation ;
• stabilisation de l'erreur d'une periode à la suivante.
• L'initialisation des poids
• L'initialisation des poids n'est pas un simple détail. On
initialise les poids à des valeurs très petites.
• Le taux d'apprentissage
• Le taux d'apprentissage doit diminuer a chaque épisode, par
exemple comme
•  = 1/numero de l'episodec ou c ∈ R+.
• deux façons d ’appliquer l’algorithme de
• rétropropagation :
• – « batch » :
• mise à jour des poids après la présentation de
tous les exemples
• – séquentiel : (on-line)
• mise à jour des poids après chaque exemple
• Remarques:
• L'algorithme de rétroprogation du gradient est
une extension de l'agorithme de Widrow-Hoff. En
effet, dans les deux cas, les poids sont mis à jour
à chaque présentation d'exemple et donc on tend
à minimiser l'erreur calculée pour chaque
exemple et pas l'erreur globale.
• Cependant, les problèmes de minima locaux
existent. Pour améliorer l'algorithme vis à vis de
ce problème, mais aussi pour essayer d'améliorer
la vitesse de convergence, une variante
couramment utilisée, consiste à fixer une
constante  ∈ [0,1[ appelée moment
(momentum) et à modifier les poids selon la règle
suivante :
• wij = wij +  wij(t)
•  wij(t) = i xij +   wij(t-1)
• Estimer la qualité du réseau :
• • Présenter des exemples (pour lesquels on
connaît la sortie souhaitée) qui ne font pas partie
de la base d’apprentissage et comparer la sortie
souhaitée avec la sortie calculée par le réseau.
• • sur-apprentissage : la base d’apprentissage est
parfaitement apprise mais la capacité de
généralisation est faible.
• on découpe l'ensemble d'apprentissage en un
ensemble d'apprentissage, un ensemble de
validation et un ensemble test. Lors de la phase
d'apprentissage, on arrête périodiquement
l'apprentissage, on estime l'erreur réelle sur
l'ensemble de validation. L'ensemble test sert à
estimer l'erreur réelle à la fin de l'apprentissage.
Apprentissage "par coeur" : le modèle ne "connaît" que les points
utilisés pour l'apprentissage et a un mauvais comportement
ailleurs.


Applications
• De nombreuses applications de l'algorithme
de rétropropagation du gradient ont été
réalisées:
• NetTalk de Sejnowski et
• les familles italo-américaines de Hinton
NetTalk
• NetTalk est un réseau qui a appris à transformer un
texte (en anglais) en une suite de phonèmes
correspondant à sa lecture.
• Description de l'architecture du réseau :
• la couche d'entrée comprend 7 groupes de 29
neurones. Chaque groupe correspond à un caractère.
Les 7 caractères en entrée forment un contexte local de
trois caractères entourant de part et d'autre un
caractère central.
• la couche cachée contient 80 neurones
• la couche de sortie comprend 26 neurones servant à
coder les caractéristiques des phonèmes.
• NETtalk est 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.
• Aprés 12 h d'apprentissage, la performance est de
95% sur le texte d'apprentissage (1000 mots) et
75% 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, ...).
Les familles italo-américaines
• Deux arbres généalogiques présentent les relations
entre les membres de deux familles comprenant
chacune 12 personnes. les deux arbres sont
isomorphes. Les relations sont : père, mère, mari,
femme, fils, fille, oncle, tante, frère, soeur, neveu et
nièce.
On souhaite faire apprendre ces relations à un réseau
de neurones, c'est-à-dire que pour tout triplet de la
forme (<personne1>,<relation>,<personne2>) décrit
dans l'un des deux arbres, et toute entrée égale à
(<personne1>,<relation>), le réseau calcule la réponse
(<personne2>).

• Description de l'architecture du réseau :
• Hinton utilise un réseau à 3 couches cachées.
• Un groupe de 24 cellules d'entrée sert à coder
les 24 personnes possibles. Un deuxième groupe
de 12 cellules d'entrée sert à coder les relations.
Chacun de ces groupes est connecté à un groupe
de 6 cellules. La couche centrale contient 12
cellules ; L'avant dernière couche contient 6
cellules, 24 cellules sur la couche de sortie.


• Régression (Approximation de fonction) :
• On donne x en entrée.
• Le réseau calcule f(x) en sortie
• • Réseaux de neurones à 2 couches (1 couche cachée)
• • Fonctions de transfert sigmoïde pour la couche cachée
• • Fonctions de transfert « purelin » pour la couche de sortie
• • Perceptron Multi-Couches = approximateur universel.
• ⇒ Permet d’approximer n’importe quelle fonction, à
condition que le nombre de neurones dans les couches
cachées soit suffisant !
• Théorème :
• soit G une fonction continue de K (un compact de Rn) dans Rq
et > 0 il existe un PMC (cas particulier) et des paramètres
numériques pour ce PMC tels que sup x∈k|F(x,w) − G(x)|<
• |.| est une norme sur Rq fixée à l’avance.