651 likes | 1.1k Views
Chapitre 4. Perceptron multicouche. Plan. 4- Perceptron multicouche Intro: labo 2 Erreur et gradient d’erreur Rétro-propagation du gradient d’erreur Algorithme Choix des paramètres Exemples. Découverte.
E N D
Chapitre 4 Perceptron multicouche
Plan 4- Perceptron multicouche • Intro: labo 2 • Erreur et gradient d’erreur • Rétro-propagation du gradient d’erreur • Algorithme • Choix des paramètres • Exemples
Découverte • L.P.J. Veelenturf, Analysis and applications of Neural Networks, Prentice Hall, 1995. • Couvre à fond le perceptron, le perceptron multicouche et SOM • Traitement complet, mais plutôt math (théorèmes, axiomes) • K. Swingler, Applying Neural Networks, Academic Press, 1996. • 1 seul modèle: perceptron multicouche • Guide pratique • Plusieurs exemples
Extraction des primitives Laboratoire 2: Primitives d’une image
Sortie (arête) 1- Construction du réseau Réseau à rétro-propagation NI = 3x3 Nh = 6 No = 1 Couche cachée Entrée
Extraction des primitives Sous-image pour l’apprentissage Construction d’une base d’apprentissage
2- Choix d’une base d’apprentissage 586 vecteurs 3x3 d’apprentissage sont sélectionnés (distance euclidienne plus grande que 0,17)
3- Apprentissage 4- Généralisation
x1 x2 xn xN Couche d’entrée Couche cachée 1 Couche cachée 2 Couche de sortie 4- Réseaux multicouches Algorithme de BP X S
1 b1 1 X1 b3 Z1 w11 v1 w21 Y Z2 w12 v2 X2 w22 b2 1 Réseaux Madaline x2 x1 Plans de classification convexes
Théorème de Kolmogorov (1963) « Un perceptron à 3 couches comprenant N(2N+1) neurones utilisant des fonctions non-linéaires continûment croissantes peut approximer toute fonction continue de N variables »
Dimensions pour répondre à un problème de reconnaissance de formes ? x1 s1 x2 sm xn xN sM M N
Comment associer une sortie à chaque classe ? X Cm sm=1, etsm’=0 si mm’ Classe « m » : Quelle est la nature des sorties ? Neurone de McCulloch&Pitts • sorties bipolaires +1 et -1 • sorties binaires +1 et 0 Comment réaliser l’apprentissage des poids synaptiques ? fonctions «dérivables» Algorithme du gradient
Problèmes avec l’approche de Rosenblatt - L’apprentissage avec un algorithme de descente de gradient et une fonction de Heaviside = un Dirac et des zéros presque partout Mais on doit tout de même utiliser une fonction non-linéaire pour l’activation sinon le perceptron multicouche se comporterait comme un perceptron linéaire !
« Légère » modification du modèle proposé par McCulloch & Pitts Fonction seuil la fonction sigmoïde
Nouveau paramètre à régler : la pente de la fonction sigmoïde L’algorithme de la rétropropagation du gradient Base d’apprentissage étiquetée B= {( Xk, Dk), k=1, 2, …, K} Xk=(x1(k), .., xn(k), .., xN(k)), k=1, 2, .., K une forme d’entrée • Dk=(d1(k), .., d m(k), .., d M(k)) {0, 1}M • vecteur de sortie désirée correspondant • àXk
Cas d’une couche cachée x1(k) s1(k) x2(k) Xk vj,n wm,j Sk sm(k) xn(k) yj(k) xN(k) sM(k) Vecteur d’entrée Couche cachée comportant J neurones Vecteur de sortie obtenu
Algorithme de descente du gradient classique : Fonction du coût à minimiser : Coût(p) Coût(p) P(n+1)= P(n) + h p P(n) P (n+1) Fonction du coût à minimiser : Coût(p1, p2 ,…., pL ) Pl(n+1)= Pl(n) + h
Fonction du coût : Erreur quadratique instantanée pour les poids synaptiqueswm,j Wm,j Erreur liée à sm
Le déroulement de l'algorithme de la rétropropagation du gradient La propagation directe 1. La forme Xkest présentée à l'entrée du réseau 2. Calcul des hj(k), j= 1, 2, .., J, et ym(k), m= 1, 2, .., M 3. Calcul des dm(k), m= 1, 2, .., M La rétropropagation 1. Rétropropagation et calcul de j, j=1,2, … ,J 2. Actualisation des poids wm,j 3. Actualisation des poids vj,n
Interprétation du réseau multicouches Point de vue probabiliste : Théorème de Ruck Sm(X) fCm/X : densité de probabilité a posteriori
Point de vue extraction de primitives 0 Extraction des primitives Discrimination linéaire . * . . . * * . . . 0 . 0 0 . 0 0 0 0 0 0 0 0 * 0 * * * * * *
1 1 Z1 X1 Y1 X2 X Y Zj Ym Xn wm,j vj,n ZJ YM XN Couche cachée J neurones Vecteur de sortie M neurones Vecteur d’entrée N neurones MLP à une couche cachée
La propagation directe Calcul des Zj Calcul des Ym
La rétropropagation Adaptation des poids synaptiqueswjk wj,k Erreur liée à Yk
La rétropropagation Adaptation des poids synaptiques vij ? vj,n Erreur liée à Zj Comment calculer ?
La rétropropagation Adaptation des poids synaptiques vij
ALGORITHME: RÉSUMÉ • 1 debut initialisation des poids du MLP • faire propagation directe: pour chaque vecteur de donnée • - Affecter Xk= xn (n=1,..,N); envoyer les signaux aux neurones cachés • 4 - Chaque neurone caché calcule son entrée • - Appliquer sa fonction d’activation pour calculer sa sortie • - Chaque neurone de sortie calcule son entrée • 7 - Appliquer sa fonction d’activation pour calculer sa sortie • 8 rétropropagation:chaque neurone de sortie reçoit son étiquette tm • 9 - calculer les gradient • 10 - calculer les incréments* • 11 - rétropropager les gradients vers la couche cachée qui précède
12 - chaque neurone cachée calcule son correspondant selon • - chaque neurone caché calcule son gradient • - calculer les incréments * • - mise à jour des poids et biais* selon • jusqu’àcritère d’arrêt satisfait • 10 retournerles poids du MLP • 11 fin
6.1 : Trouver les nouveaux poids du réseau de la figure ci-dessous si on présente le vecteur d’apprentissage (0,1) (réf. Fausett, Prentice Hall, 1994) 1. Net de la couche cachée Propagation avant z_in1 = 0.4 + (0.0) (0.7) + (1.0) (-0.2) = 0.2 z_in2 = 0.6 + (0.0) (-0.4) + (1.0) (0.3) = 0.9 Y -0.3 0.5 0.1 1 Z2 Z1 0.4 0.6 0.7 0.3 -0.2 -0.4 1 1 X1 X2
6.1 : Trouver les nouveaux poids du réseau de la figure ci-dessous si on présente le vecteur d’apprentissage (0,1). D=1 et =0,25. Propagation avant Y 2. Out de la couche cachée -0.3 z1 = 1 / (1+ exp (- z_in1)) = 0.550 0.5 0.1 1 z2 = 1 / (1+ exp (- z_in2)) = 0.711 Z2 Z1 0.4 0.6 0.7 0.3 -0.2 -0.4 1 1 X1 X2
6.1 : Trouver les nouveaux poids du réseau de la figure ci-dessous si on présente le vecteur d’apprentissage (0,1). D=1 et =0,25. Propagation avant Y -0.3 0.5 0.1 1 Z2 Z1 3. Net de la couche de sortie 0.4 0.6 y_in = -0.3 + (z1) (0.5) + (z2) (0.1) = 0.046 0.7 0.3 -0.2 -0.4 1 1 X1 X2
6.1 : Trouver les nouveaux poids du réseau de la figure ci-dessous si on présente le vecteur d’apprentissage (0,1). D=1 et =0,25. 1. Net de la couche cachée Propagation avant z_in1 = 0.4 + (0.0) (0.7) + (1.0) (-0.2) = 0.2 z_in2 = 0.6 + (0.0) (-0.4) + (1.0) (0.3) = 0.9 Y 2. Out de la couche cachée -0.3 z1 = 1 / (1+ exp (- z_in1)) = 0.550 0.5 0.1 1 z2 = 1 / (1+ exp (- z_in2)) = 0.711 Z2 Z1 3. Net de la couche de sortie 0.4 0.6 y_in = -0.3 + (z1) (0.5) + (z2) (0.1) = 0.046 0.7 0.3 -0.2 -0.4 1 1 4. Out de la couche de sortie X1 X2 y = 1 / (1+ exp (- y_in)) = 0.511
6.1 : Trouver les nouveaux poids du réseau de la figure ci-dessous si on présente le vecteur d’apprentissage (0,1). D=1 et =0,25. 5. Erreur Rétro-propagation t - y = 1 – 0.511 = 0.489 d k t 6. dk b D a dk = (t – y) (y) (1 - y) = 0.122 Y -0.3 1 0.5 0.1 Z2 Z1 0.4 0.6 0.7 0.3 -0.2 -0.4 1 1 X1 X2
dk Y -0.2695 0.5168 d j1 d j2 (-0.3) 0.1217 1 (0.5) (0.1) Z2 Z1 0.4 0.6 0.7 0.3 -0.2 -0.4 1 1 X1 X2 6.1 : Trouver les nouveaux poids du réseau de la figure ci-dessous si on présente le vecteur d’apprentissage (0,1). D=1 et =0,25. Rétro-propagation Dans le cas général : Dérivée de f (z_inj) 8. d j1 d j1 = (d k) (w1) (z1) (1 - z1)= 0.015 9. d j2 d j2 = (d k) (w2) (z2) (1 - z2)= 0.0025
6.1 : Trouver les nouveaux poids du réseau de la figure ci-dessous si on présente le vecteur d’apprentissage (0,1). D=1 et =0,25. Rétro-propagation dk Y D wjk -0.2695 7. D wjk 0.5168 1 0.1217 D w01 = (h) (dk) = 0.0305 Z2 Z1 D w11 = (h) (dk) (z1) = 0.0168 0.4 0.6 0.7 0.3 -0.2 -0.4 1 1 D w21 = (h) (dk) (z2) = 0.0217 X1 X2
6.1 : Trouver les nouveaux poids du réseau de la figure ci-dessous si on présente le vecteur d’apprentissage (0,1). D=1 et =0,25. Rétro-propagation Y d j1 d j2 0.0305 (-0.3) 0.0168 0.0217 D vn1 D vn2 1 10. D vnp Z2 Z1 D v01 = (h) (d j1) = 0.038 D v11 = (h) (d j1) (x1) = 0.0 0.438 0.6006 D v21 = (h) (d j1) (x2) = 0.038 0.7 0.3006 D v02 = (h) (d j2) = 0.0006 1 1 -0.1962 -0.4 D v12 = (h) (d j2) (x1) = 0.0 X1 X2 D v22 = (h) (d j2) (x2) = 0.0006
Exercice à faire: 6.2 : Trouver les nouveaux poids du réseau de la figure ci-dessous si on présente le vecteur d’apprentissage (-1,1) et on utilise une sigmoïde bipolaire comme fonction d’activation Seuls changent la dérivée de la fonction d’activation bipolaire et la mise à jour des poids entre l’entrée et la couche cachée. Pour le détail voir 6.1 Y -0.3 0.5 0.1 1 Z2 Z1 0.4 0.6 0.7 0.3 -0.2 -0.4 1 1 X1 X2