réseaux de neurones et connexionnisme résumé de cours et exercices Pierre De Lo
réseaux de neurones et connexionnisme résumé de cours et exercices Pierre De Loor CERV-ENIB deloor@enib.fr Les objectifs du connexionnisme • Imitation du cerveau – Absence de localisation de l’information – Fonctionnement massivement parallèle – Créer artificiellement une signification – Auto organisation – Émergence de configurations globales issues de connexions entre éléments simples – Système non déterministe Un premier réseau de neurone couche de sortie couche « cachée » couche d’entrée entrées sorties 0 1 -7 4.2 0 0 1 Un premier neurone formel ∑= = n k k k i w I 1 * I e I f − + = 1 1 ) ( y i1 i2 i3 in w1 w2 w3 wn ⎭ ⎬ ⎫ ⎩ ⎨ ⎧ > = on T I f si I f y sin 0 ) ( ) ( Une première illustration avec JavaNNS • Démarrez javaNNS • Chargez le réseau font.net – 576 neurones d’entrées – 2 paquets de 24 neurones cachés • 1 pour les lignes • 1 pour les colonnes – 75 neurones de sorties – 150 patterns de 75 caractères (2 par caractères) – Au chargement, le réseaux reconnaît ces caractères – Vérifiez le – Réinitialisez-le – Tester l’apprentissage tel qu’il est configuré en observant la progression des erreurs Le perceptron Le Perceptron Warren Mc Culloh et Walter Pitts 1943 • Vecteur d’entrées continues + ou – • Sortie +1 ou -1 (selon catégorie) • Apprentissage (Rossenblatt 1958) – Pour chaque nouvel exemple : ∑= = n k k k i w I 1 * 0 , 1 , 1 = ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ < − >= + = T ent classiquem T siI T siI y ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ − + = + = fausse est elle si correcte est réponse la si x y w w old new 1 1 * * β β x2 x1 y w1 w2 Le Perceptron exercices Catégorie A (+1) A1=(0.3,0.7) A2=(0.7,0.3) Catégorie B (-1) B1=(-0.6, 0.3) B2=(-0.2, -0.8) A1 A2 B1 B2 Départ : w0 =(-0.6,0.8) A1(0.3,0.7) →I=0.38 →y=1 exemple bon w1 =(-0.6+1*1*0.3,0.8+1*1*0.7) w1 =(-0.3,1.5) A2(0.7,0.3) w2 = B1(-0.6,0.3) w3 = B2(-0.2,-0.8) w4 = w0 w1 terminez l’apprentissage le résultat final re-classe-t-il tous les patterns ? Le Perceptron exercices • Tester la classification de nouveaux points. Comment sont-ils classés ? Observer cette valeur relativement au vecteur des poids. • Implémenter un algorithme de calcul de sortie d’un perceptron (java). • Implémenter un algorithme d’apprentissage du perceptron. • Utiliser cet algorithme pour répondre aux questions suivantes : • Au fur et à mesure que l’on ajoute des points, que se passe-t-il pour le vecteur des poids ? • Quand le vecteur des poids est à peu près bon, est-ce que quelque chose peut l’amener à diminuer ? Si oui quoi ? • Quelle conséquence cela a sur l’écriture d’un programme informatique? • Quelles sont vos remarques concernant l’utilisation du perceptron comme modèle biologique du système neuronal ? • Que se passe-t-il si un point noté +1 doit désormais être noté -1 ? • Décrire un problème que le perceptron ne peut pas résoudre. Apprentissage par minimisation d’erreur Minimisation d’erreur : Adaptive linear element. Bernard Widrow et Ted Hoff 1960 ∑= = n k k k i w I 1 * 0 , 1 , 1 = ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ < − >= + = T T siI T siI y x2 x1 y w1 w2 Valeur désirée comparaison Erreur : E correction ) 1 0 ( ' * * 2 < < = + = β β β age apprentiss d taux x x E w w old new delta-rule • La mise à jour des poids n’implique pas une sortie conforme • Cette mise à jour est ‘itérée’ autant de fois que nécessaire • Elle peut modifier la valeur des exemples précédents • Donc il faut revoir ces exemples Minimisation d’erreur : Adaptive linear element. Bernard Widrow et Ted Hoff 1960 Algorithme d’apprentissage de Adaline Pour chaque exemple { calculer I, Y et E si E\=0 { pour l’exemple en cours à tous les exemples précédents { calculer E si E\=0 { calculer L=x12+x22+… pour chaque poids wi{ deltai= +(B*E*xi)/L; wi=wi+deltai } calculer E } } } } • Mécanisme non trivial • Exemple (avec B=0.5 et w initial = (-0.6;0.8) : • A1=(0.3,0.7) • I=-0.18+0.56=0.38 • Y=+1 • Tout va bien • B1=(-0.6,0.3) • I=0.36+0.24=0.6 • Y=+1 -> E=-2 • L(B1)=0.36+0.0=0.45 • delta1=(0.5*-2*-0.6)/0.45=1.3 • delta2=(0.5*-2*0.3)/0.45=-0.7 • W=(0.7,0.1) • Il n’y a plus d’erreur pour B1 – Car I=-0.39 -> Y=-1 • Il n’y a pas non plus d’erreur pour A1, donc c’est terminé Adaline exercices • Tracer l’évolution du vecteur des poids lors d’un apprentissage d’Adaline sur les exemples suivants : A = +1 A1=(0.3,0.7) A2=(0.4,0.9) A3=(0.5,0.5) A4=(0.7,0.3) Taux d’apprentissage B=0.5 B = -1 B1=(-0.6,0.3) B2=(-0.4,-0.2) B3=(0.3,-0.4) B4=(-0.2,-0.8) Adaline exercices • Combien de fois avez-vous du ajuster les poids pour B1 et au total ? • Quel est le rôle de la règle delta par rapport aux ‘pattern’ à apprendre • Supposons que w=(0.8,1.0) et qu’un nouveau pattern B5=(0.6,-0.2) soit à apprendre. Que fait l’algorithme ? • Combien de fois a-t-il fallu modifier le vecteu • L’apprentissage est-il terminé ? • Pourquoi ? • Tenter de faire apprendre un XOR à Adaline Un peu d’histoire • Minsky et Papert (1969) : Perceptron – Montrent que les problèmes non linéairement séparables ne peuvent être appris – Donc les RDN ne peuvent pas être utilisés pour ce type de problème (on voulait leur faire faire de la logique = raisonnement) – N’imaginent pas qu’il soit possible de mettre en œuvre des procédures d’apprentissage sur plusieurs couches de neurones formels • Rumelhart et Le Cun (1985) : Retro-Propagation Du perceptron aux couches cachées Rétro-propagation sorties couche de sortie couche « cachée » couche d’entrée entrées 0 1 -7 4.2 0 0 1 ∑= = n k k k i w I 1 * ∑ = = − = < < = ∆ − − = − + = = n j sortie j ij middle i middle i actuel j desiré j sortie j ij E w dI I f d E cachée couche erreur y y E sortie en erreur I f E w I f I f I f simple dérivée I Exp I f sigmoide souvent I f y 1 ) ( ) ( ( : : ) 1 0 ( ) ( * * )) ( 1 ( ) ( ) ( ' : ) ( 1 1 ) ( ) ( β β Retro-propagation • Pourquoi ça marche ? Erreur1 Erreur2 Erreur3 w1 w2 w3 • Une erreur positive correspond à une sortie trop faible • (Réciproquement une erreur négative correspond à une sortie trop forte) • Plus il y a d’erreur de sortie, plus i doit être augmenté Pour corriger cette erreur • Plus i à d’influence sur une erreur (wj) plus i est facteur d’erreur • Plus f(I) à une pente raide, plus il faut la corriger i ∑ = = n j sortie j ij middle i middle i E w dI I f d E 1 ) ( ) ( ( Retro-propagation Faire { Pour chaque pattern { Propager l’entrée vers les sorties Calculer les erreurs de la couche de sortie Calculer les erreurs de la couche cachée Ajuster les poids entre c.cachée et c.sortie Ajuster les poids entre c.entrée et c.cachée } } Tant que (la somme des erreurs de sortie n’est pas acceptable) Test du XOR • Chargez le XOR dans SNNS • Tester l’apprentissage avec rétro- propagation et avec souvenirs • Varier les paramètres des algorithmes et évaluer leur impact sur les temps d’apprentissage Les neurones ‘unit’ de SNSS • Attributs importants : – Type : input/output/dual/hidden/special – activation(a)/bias(θ)/output(o): – Exemple : Act_logistic : )) ( ( ) ( ) ), ( ), ( * ( ) 1 ( t a f t o t a t o w f t a j out j i j j i ij act j = = + ∑ θ ) ) ( _( 1 1 ) 1 ( ∑ + = + − i j j ij t o w j e t a θ SNNS : Fonctions d’activations • Fonction Nom Usuel Expression • Act_Identity Linéaire a(t) = net(t) • Act_IdentityPlusBias Linéaire avec Seuil a(t) = net(t)+θ • Act_Logistic Sigmoïde a(t) = 1/(1+exp(-(net(t)-θ)) • • Act_Perceptron Perceptron a(t) = 0 si net(t) < θ • 1 si net(t) > θ • Act_Signum Binaire a(t) = -1 si net(t) < 0 • 0 si net(t) = 0 • 1 si net(t) > 0 • • • Act_Signum0 Binaire incluant zéro a(t) = 0 si net(t) = 0 • -1 si net(t) < 0 • 1 si net(t) > 0 • Act_StepFunc Échelon a(t) = 1 si net(t) >0 • 0 si net(t)<=0 • • Act_Tanh Tangente Hyperbolique a(t) = tanh(net(t)+ θ) A propos des biais sur NNS • uploads/Ingenierie_Lourd/ connexionnisme.pdf
Documents similaires
-
14
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Aoû 26, 2021
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 0.5876MB