Vous êtes sur la page 1sur 8

3A - Fili`re 4 e

TP 2 - Carte de Kohonen

TP 2 - Rseaux de neurones e

Carte de Kohonen

Sommaire
1 2 3 Mise en place dune carte de Kohonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Remarques sur limplmentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 2 3 6

Introduction
Ce second TP va permettre la manipulation dun type de rseau de neurones dont lapprentissage est e non-supervis, ` la dirence de celui dun perceptron multi-couches (Cf. TP1). De plus, lobjectif de e a e ce rseau nest pas de sparer lespace des patterns par des hyperplans mais de construire une nouvelle e e reprsentation de lespace des patterns, reprsentation ayant une dimension plus faible (en gnral, 2 e e e e pour une carte classique). Cette reprsentation est compose de neurones lis entre eux par une certaine e e e topologie dont le rle est de prserver la topologie existante de lespace des patterns : apr`s apprentissage, o e e deux neurones proches topologiquement doivent correspondre ` des patterns proches cest-`-dire ayant a a des proprits voisines. ee La premi`re partie de ce TP va consister ` mettre en place les routines Matlab ncessaires ` lapprentissage e a e a dune carte de Kohonen. Dans un second temps, lapprentissage de cartes de Kohonen sera ralis dans e e plusieurs cas de gure pour mettre en vidence certains comportements ou proprits de ces cartes. Les e ee bases de patterns seront soit simules manuellement, soit issues du TP prcdent (bases articielles ou e e e provenant de cas concrets comme la base des chires manuscrits). Chacun des probl`mes soulevs dans ce TP ncessite la mthodologie suivante : e e e e Complter certaines fonctions dont le code est partiellement donn. A chaque fois, tr`s peu de e e e lignes de code supplmentaires sont ncessaires. e e Valider le comportement des rseaux construits par le lancement de plusieurs simulations (en ape prentissage et en test). Interprter les rsultats obtenus. e e A ladresse perso.enst-bretagne.fr/dgueriot, vous trouverez une archive TP Kohonen.zip contenant tous les scripts & jeux de donnes ncessaires ` ce TP. e e a

3A - Fili`re 4 e

TP 2 - Carte de Kohonen

1
1.1

Mise en place dune carte de Kohonen


Cration dune carte e

Question 1 : Ecrire une fonction SOM Create2D qui initialise une structure qui contienne toutes les donnes relatives ` une carte bidimensionnelle de Kohonen (topologie de dimension 2) et ` son e a a apprentissage. On initialisera galement les poids de mani`re alatoire entre 0 et 1. Les attributs de la e e e structure map devront respecter les contraintes donnes dans la derni`re section du TP o` les dirents e e u e champs (avec leur nom) sont dcrits. e map = SOMCreate2D (N , learningrate , neighborhoodspread , patternsize) Question 2 : Ecrire une fonction SOM Create1D qui initialise une structure qui contienne toutes les donnes relatives ` une ficelle de Kohonen (topologie de dimension 1) et ` son apprentissage. On e a a initialisera galement les poids de mani`re alatoire entre 0 et 1. Les attributs de la structure map devront e e e respecter les contraintes donnes dans la derni`re section du TP o` les dirents champs (avec leur nom) e e u e sont dcrits. e map = SOMCreate1D (N , learningrate , neighborhoodspread , patternsize)

1.2

Algorithme dapprentissage

Lalgorithme dapprentissage dune carte de Kohonen a pour objectif de dplier la carte de Kohonen e de telle mani`re ` mapper la topologie de lespace des patterns. e a Question 3 : Ecrire la routine SOM OneStepLearning qui met ` jour une carte de Kohonen map pour a une itration donne iter dans le processus dapprentissage (3 ou 4 lignes). On pourra sappuyer sur les e e fonctions SOM NearestNode et SOM UpdateWeights pour raliser les tches de plus bas niveau, fonctions e a dont limplmentation at lobjet des questions suivantes. data reprsente la base des patterns dentre e e e et iter max, le nombre maximum ditrations de lapprentissage. e map = SOMOneStepLearning (map , data , iter , itermax) Question 4 : Ecrire la routine SOM NearestNode qui recherche parmi les neurones de la carte map celui qui est le plus proche du pattern patt in. La distance d ` ce neurone ainsi que lindex de ce neurone a inode sont ` retourner. a [d inode] = SOMNearestNode (pattin , map) Question 5 : Ecrire la routine SOM UpdateWeights qui vient eectivement modier les poids synaptiques des neurones de la carte, pour litration iter sur un nombre total iter max ditrations. e e Lamplitude de la modication des poids synaptiques des neurones autour du neurone gagnant dpend de e la distance entre le neurone concern et le neurone gagnant mais aussi du moment de cette modication e au sein de lapprentissage. map = SOMUpdateWeights (map , pattin , inode , iter , itermax)

1.3

Vrication de limplmentation e e

Le script suivant disponible dans larchive sert de base de lancement de lapprentissage dune carte de Kohonen. Il doit permettre la validation des routines Matlab crites dans les questions prcdentes. e e e Question 6 : Analyser le script et complter les parties manquantes (gnration manuelle dune base e e e de patterns comportant 1000 patterns rpartis uniformment sur un espace 2D [0.25, 0.75] [0.25, 0.75]. e e

3A - Fili`re 4 e

TP 2 - Carte de Kohonen

% Cration dune base de patterns (un carr darte 0.5 centr en (0.5,0.5) e e e e data = [] ; data.diminput = 2 ; data.npattern = 1000 ; data.pattern(1:data.npattern,:) = # ` complter # a e % Cration dune carte de Kohonen e N = 10 ; learningrate = [0.5 0.1] ; % Initial et final neighborhoodspread = [3.0e0 1.0e-1] ; % Initial et final sizepattern = data.diminput ; map = SOMCreate2D (N , learningrate , neighborhoodspread , sizepattern) ;

waitforbuttonpress ; figure(1) ; % Lancement de lapprentissage sur un certain nombre ditration e itermax = 1000 ; % Mise ` jour de la carte pour chaque itration a e for iter = 1:itermax % Mise ` jour de la carte a map = SOMOneStepLearning (map , data , iter , itermax) ; % Affichage des poids des neurones if iter = itermax delete(h) ; end h = SOMPlotNodes(map) ; title(sprintf(T = %d, iter)) ; drawnow ; end

% Nettoyage de laffichage clf ; % Initialisation du premier affichage hold on ; plotpoints(data.pattern) ; h = SOMPlotNodes(map) ; title(T = 0. Cliquer pour commencer ...)

Question 7 : Lancer lapprentissage. Quobservez-vous ? Expliquer.

Simulations

Lobjectif de cette seconde partie est dobserver le comportement des cartes de Kohonen en cours dapprentissage et en phase de test. Chaque simulation permettra de mettre en avant des sujets importants propres aux cartes de Kohonen mais aussi ` tout probl`me de classication / clustering / data a e mining.

2.1

Simulation de jeux de donnes articiels e

Carte de Kohonen bi-dimensionnelle Lobjectif des questions suivantes est dobserver le comportement du dpliement des cartes de Kohonen lors de lapprentissage en fonction des dirents param`tres e e e de la simulation. Question 8 : Changer le jeu dapprentissage en gnrant de mani`re alatoire 1000 patterns dans e e e e un disque de rayon 0.5 centr en (0.5,0.5). On travaillera en coordonnes polaires o` la distance r entre e e u les patterns et le centre du disque suit une loi uniforme entre [0 et 0.5] et o` langle entre lhorizontale u et le segment form par le centre du disuqe et le pattern suit une loi uniforme entre 0 et 2. Les deux e variables alatoires sont indpendantes. e e Question 9 : Lancer plusieurs fois lapprentissage. Deux phnom`nes sont ` observer. Expliquer. e e a Question 10 : Changer les bornes du taux dapprentissage ainsi que de la zone dinuence de la modication des poids. Relancer plusieurs fois les apprentissages. Conclusions sur les eets. Question 11 : Augmenter le nombre de patterns (10000 par exemple). Regnrer ventuellement e e e plusieurs fois la base des patterns avant apprentissage. Que se passe-t-il ? Question 12 : Augmenter le nombre de patterns (100 par exemple). Regnrer ventuellement e e e plusieurs fois la base des patterns avant apprentissage. Quelles conclusions pouvez-vous tirer de ces rseaux en termes de capacit de gnralisation ? e e e e Question 13 : A prsent, modier la gnration des patterns pour que la distribution de ceux-ci soit e e e uniforme sur lensemble du disque. Commentaires sur les rseaux obtenus. e Carte de Kohonen mono-dimensionnelle : celle de Kohonen La topologie dune carte de Kohonen nest pas ncessairement bi-dimensionnelle. Dans cette partie, on sintressera ` une carte ` une e e a a dimension. Question 14 : Ritrer les questions suivantes en utilisant une carte de Kohonen mono-dimensionnelle. e e Conclusions. Question 15 : Il est possible dobtenir le rsultat suivant de la gure ?? sur les donnes de la e e question 12. Quelles sont les conditions pour obtenir un tel rsultat ? e

3A - Fili`re 4 e

TP 2 - Carte de Kohonen

Figure 1: Exemple de celle de Kohonen apr`s apprentissage e

2.2

Exemple de jeux de donnes non-compacts e

Les jeux de donnes set1.txt, set2.txt et set xor.txt du TP prcdent vont tre rutiliss. e e e e e e

(a) Jeu linairement sparable set1.txt e e

(b) Jeu dissymtrique set2.txt e

(c) OU exclusif set xor.txt

Figure 2: Jeux de donnes pour lapprentissage e Question 16 : Observer successivement sur les trois jeux de donnes le comportement de cartes et e de celles de Kohonen. Conclusions.

2.3

Application ` la base des chires manuscrits a

Les donnes ` utiliser se trouvent dans les chiers dj` manipuls lors du TP prcdent. Ces chiers e a ea e e e digit learn10 16x16.txt et digit test10 16x16.txt contiennent des sries dimagettes de chires e manuscrits, chaque imagette tant considre comme un pattern. Chaque pattern prsent dans ces e ee e chiers provient donc dune image binaire dun chire manuscrit (sur 16 16 pixels). La dimension des patterns dentre sera donc de 256. Les valeurs dun pattern sont soit 0, soit 1, selon que le pixel e correspondant dans limage 16x16 appartienne au fond ou ` un trait du caract`re. De plus, ces chires a e se rpartissent en 4 classes correspondant aux chires 0 (classe 0), 1 (classe 1), 2 (classe 2) et 3 (classe e 3). Toutes ces imagettes de chires sont extraits de la base de chires manuscrits qui a servi ` la a reconnaissance automatique des codes postaux. Question 17 : Utiliser la routine SOM BuildImageFromData pour acher sous forme dune image lensemble des patterns (ou imagettes) contenus dans une base de chires manuscrits. Question 18 : Dnir les caractristiques dune carte de Kohonen approprie au probl`me de la e e e e reconnaissance des chires manuscrits. Question 19 : Raliser une routine SOM BuildImageFromMap qui cre une image img contenant e e lensemble des poids synaptiques dune carte de Kohonen map, en reprsentant de mani`re approprie les e e e 4

3A - Fili`re 4 e

TP 2 - Carte de Kohonen

(a)

(b)

Figure 3: (a) : Jeu complet 16x16 : digit10 16x16 *.txt, (b) : Jeu rduit 8x8 : digit4 8x8 *.txt. e poids synaptiques associs ` chaque neurone cest-`-dire en prenant en compte linterprtation de lespace e a a e des patterns. La gure 4 illustre le rsultat ` obtenir. e a
img = SOMBuildImageFromMap (map)

2.3.1

Apprentissage

Question 20 : Mettre ` jour le script Script digit.m en prenant en compte les spcicits du a e e probl`me (dimension, . . .). e
% Lecture de la base de patterns data = # ` complter # a e % Taille dune imagette carre e pw = int16(sqrt(data.diminput)) ; % Cration dune carte de Kohonen e N = # ` complter # a e learningrate = [0.5 0.1] ; % Initial et final neighborhoodspread = [3 1.0e-1] ; % Initial et final 3 0.1 sizepattern = # ` complter # a e map = SOMCreate2D (N , learningrate , neighborhoodspread , sizepattern) ; % Nettoyage de laffichage clf ; end % Lancement de lapprentissage sur un certain nombre ditration e itermax = 2000 ; % Mise ` jour de la carte pour chaque itration a e for iter = 1:itermax % Mise ` jour de la carte a map = SOMOneStepLearning (map , data , iter , itermax) ; % Construction de limage des poids des neurones img = SOMBuildImage (map) ; % Affichage de limage des poids imagesc (img) ; title(sprintf(T = %d, iter)) drawnow ;

Question 21 : Raliser quelques apprentissages et commenter leur comportement par rapport aux e apprentissages des paragraphes prcdents. e e 2.3.2 Test

Une fois lapprentissage non-supervis termin, lobjectif est dutiliser la carte obtenue pour raliser e e e de la classication.

3A - Fili`re 4 e

TP 2 - Carte de Kohonen

Figure 4: Exemple de reprsentation souhaite des poids dune carte de Kohonen de taille 15 15 dans e e le cas de lapprentissage ralis sur la base compl`te des chires manuscrits e e e Question 22 : Quelle stratgie simple peut-on mettre en uvre pour utiliser une carte de Kohonen e issue dun apprentissage en phase de test pour la classication des chires manuscrits ? Question 23 : En sinspirant de la routine SOM BuildImageFromData, crire une nouvelle routine e SOM BuildImageFromDataThroughMap qui produise une image compose dimagettes o` chaque imagette e u de limage nale corresponde non pas ` limagette dun pattern de la base mais ` limagette des poids a a synaptiques du neurone de la carte le plus proche du dit-pattern.
img = SOMBuildImageFromDataThroughMap (map , data)

Question 24 : Raliser lapprentissage et le test sur deux bases de patterns direntes. Analyser les e e rsultats obtenus. e Question 25 : Raliser lapprentissage et le test sur deux bases de patterns identiques. Analyser les e rsultats obtenus. e

Remarques sur limplmentation e

Toutes les implmentations seront ralises avec Matlab en utilisant ses fonctionnalits de manipue e e e lation de matrices et la notion de structure (an de crer des entits manipulables plus facilement). e e Lide est de rassembler les donnes lies ` chaque entit manipule sous forme de structures an de e e e a e e faciliter leur manipulation et daugmenter la lisibilit du code. En Matlab, une variable de type struce ture se manipule comme une variable simple, lacc`s ` ses champs seectuant au travers de la syntaxe e a nom variable.nom champ.

3A - Fili`re 4 e

TP 2 - Carte de Kohonen

3.1

Donnes dapprentissage et de test e

La routine dataset = read input(filename) permet de rcuprer des ensembles de patterns avec e e leurs classes associes. La structure dataset poss`de dirents champs indiquant le nombre de patterns, e e e la dimension dun pattern, le nombre de classes du jeu de donnes contenu dans le chier filename. e 3.1.1 Format des chiers contenant les bases de patterns

Pour information, et si vous souhaitez introduire des patterns personnaliss pour des tests supplmentaires, e e voici le format de chier texte utilis pour stocker ces jeux de donnes : les trois premi`res lignes contiene e e nent les informations relatives au jeu de donnes (commentaire puis dimension des patterns puis nombre e de classes), ensuite chaque ligne contient le pattern suivi de lidentiant de sa classe (index ` partir de ea 0).
Nuages linairement sparables (50/50) e e 2 2 0.990681 0.863072 0 0.6765 0.715986 0 0.776633 0.79874 0 0.89661 0.786454 0 0.988434 0.725722 0 0.245975 0.20934 1 0.0861772 0.180822 1 0.109825 0.273286 1 0.0999787 0.0416723 1 0.309232 0.049519 1

3.1.2

Structure reprsentant une base de patterns e

filename : Nom du chier contenant la base de patterns dim input : Dimension de chaque pattern (taille du vecteur reprsentant un pattern) e e n class : Nombre de classes dans lesquelles se rpartissent les patterns n pattern : Nombre de patterns contenus dans la base pattern : Matrice (n pattern x dim input contenant les patterns (1 ligne = 1 pattern) class : Vecteur (n pattern x 1 contenant la classe de chaque pattern (1 ligne = 1 pattern)

3.2

Reprsentation dune carte de Kohonen e

n dims : Dimension de la topologie de la carte (ici 1 ou 2) n nodesPerDim : Nombre de neurones par dimension topologique de la carte n nodes : Nombre total de neurones de la carte e learning rate i : Taux dapprentissage en dbut dapprentissage learning rate f : Taux dapprentissage en n dapprentissage neighborhood spread i : Zone dinuence des modications de poids en dbut dapprentissage e neighborhood spread f : Zone dinuence des modications de poids en n dapprentissage weights : Matrice n nodes x size pattern contenant les poids de lensemble des neurones de la carte topology : Matrice contenant la topologie des neurones de la carte en 1D : Matrice n nodes x 1 (exemple A : celle ` 5 neurones) a 7

3A - Fili`re 4 e

TP 2 - Carte de Kohonen

en 2D : Matrice n nodes x 2 (exemple B : carte ` 3 3 neurones) a 1 1 1 2 B = 2 2 3 3 3 1 2 3 1 2 3 1 2 3

1 2 A = 3 4 5