Réseaux de neurones artificiels et apprentissage non supervisé II Laboratoire V
Andres Perez-Uribe
Dans un apprentissage non supervisé, le réseau de neurones doit découvrir par lui-même les corrélations existant entre les patrons d'apprentissage. Les neurones et les connexions doivent dégager un certain degré d'auto-organisation. Objectifs
Mettre en oeuvre des cartes de Kohonen pour découvrir de la régularité dans une base de données, sous la forme de classes ou groupes d'exemples qui se ressemblent.
Introduction
Vous allez d'abord utiliser des applets Java pour vous familiariser avec le fonctionnement de l'algorithme de Kohonen. Vous allez ensuite utiliser une implémentation en C de l'algorithme de Kohonen pour faire l'apprentissage non supervisé et une réduction de la dimensionnalité des données pour faciliter la visualisation de la régularité inhérente dans une base de données.1. DemoGNG
DemoGNG est un applet Java qui permet de faire apprendre des réseaux de neurones de manière non supervisé la distribution de points d'un espace 2D. Cet applet implémente plusieurs algorithmes. Choisissez d'abord les "Self-Organizing Maps" dans l'option Network Model. Vous pouvez ensuite essayer d'autres algorithmes, par exemple, le Growing Neural Gas (GNG) qui fait l'apprentissage non supervisé incrémentale.
Changez la distribution de points en entrée à l'aide de l'option "prob Distrib."et les paramètres d'apprentissage (pour un SOM, epsilon_i et epsilon_f est le taux d'apprentissage initiale et finale, sigma_i et sigma_f est la taille du voisinage initiale et finale). L'option "Signals" vous permet de visualiser les points qui sont en train d'être utilisés pour l'entraînement, l'option "Teach" vous permet de voir le neurone gagnant et ces voisins, et l'option Voronoi vous montre les régions de Voronoi résultants du groupement réalisé par le réseaux de neurones.2. ColorDemo
ColorDemo est un applet Java qui vous permet de mieux comprendre ce qu'une carte de Kohonen est capable de faire. Vous avez 4 classes de données et des données à deux dimensions: x et y. Vous pouvez modifier la plage de données de chaque classe ainsi que le pourcentage de la base de données appartenant à une classe donnée.
Vous trouverez les sources de l'applet ici.
![]()
L'image ci-dessous donne un exemple de représentation d'un graphique de Kohonen avec une faible représentation des coordonnées bleues et des coordonnées proches pour les autres couleurs. Cette représentation nous permet de mettre en évidence les ressemblances entre les points de couleur vert,jaune et rouge. L'orientation des points pour ces couleurs est similaire à la différence de la couleur bleu qui est opposée. On peut également mettre en évidence le "déplacement" des coordonnées de la couleur verte à la couleur rouge en passant par le jaune. Les cases de couleur "vides" représentent des points avec une faible activation. Puisque le coordonées correspondantes à la couleur bleue sont opposés aux autres couleurs, les cases de couleur "bleu" sont séparés par des cases "vides".
3. Logiciel SOM_PAK
Vous trouverez des fichiers exécutables pour DOS ici, ainsi qu'une guide d'utilisation du logiciel. Vous trouverez également les sources de ce logiciel au Neural Networks Research Centre, Helsinki University of Technology.3.1. Les données
Copier le fichier de données suivant animal_data.txt. Ce fichier contient une liste d'animaux et 13 traits leur décrivant. Il s'agit d'utiliser une carte de Kohonen pour placer ces animaux dans une carte à deux dimensions et observer si les animaux qui se ressemblent sont effectivement placés proches entre eux dans la carte. Ensuite, il s'agit d'analyser si le placement de ces animaux dans une carte 2D vous permet d'extraire des informations concernant la régularité inhérente dans les données décrivant les traits des animaux. Il est important de vous rendre compte que ces régularités sont très difficile d'extraire à partir des données de base (fichier animal_data.txt).3.2. Entraînement de la carte de Kohonen
- 1. Initialiser la carte de Kohonen
Exemple:randinit -xdim 10 -ydim 10 -din animal_data.txt -cout carte-init.txt -topol rect -neigh bubble
Le programme randinit initialise une carte 10x10 (xdim et ydim) avec un voisinage rectangulaire et un voisinage de type "pas unitaire" (bubble) au lieu du type Gaussien. L'option -din indique le fichier de données pour l'entrinement et l'option -cout doit indiquer le nom d'un fichier intermédiaire que ce programme va utiliser pour sauver la carte initiale.
- 2. Entraîner la carte de Kohonen
Exemple:vsom -din animal_data.txt -cin carte-init.txt -cout proto-vectors.txt -rlen 10000 -alpha 0.05 -radius 4
Le programme vsom entraîné la carte initialisée précédemment. On doit donner comme paramètres -din : le fichier d'entraînement, -cin : le fichier qui contient la carte initialisée, -cout : le fichier pour sauver les vecteurs prototypes de la carte entraînée, -rlen : nombre d'itérations pour faire l'entraînement, -alpha : taux d'apprentissage initiale, -radius : taille initiale du voisinage (typiquement 1/2 ou 2/3 de la taille de la carte).
- 3. Classification des données en entrée
Exemple:visual -cin proto-vectors.txt -din animal_data.txt -dout clusters.txt
Le programme visual génère un fichier qui associe une position dans la carte de Kohonen à chaque donnée en entrée. Il affiche également l'erreur de quantification. On doit donner comme paramètres -din : le fichier d'entraînement, -cin : le fichier qui contient la carte entraînée, et -dout : le fichier pour sauver la sortie de ce programme.
3.3. Visualisation de la carte de Kohonen
Exécuter l'applet Java qui se trouve dans ce lien. Copier-coller les fichiers d'entraînement (animal_data.txt) et le fichier généré par le programme visual (clusters.txt) dans les onglets correspondants. Clicker sur le bouton "Dessiner le graphique" pour dessiner la carte de Kohonen.4. Carte de Kohonen de pays
Il s'agit de générer une carte de Kohonen à partir de cette base de données wfb27_data.txt issue des informations de la CIA factbook 1996. Utilisez le fichier wfb27_norm_data.txt qui contient que des données dans la plage de valeurs (0,1). Les données dans la base de données sont les suivantes: surface (sq km), population, life expectancy at birth (years), literacy (%), GDP per capita($), Exports (billion $), et Imports (billion $).
5. Application des cartes de Kohonen à la fouille des données textuelles
Il s'agit d'utiliser des cartes de Kohonen pour établir la similarité du contenu d'une collection des documents texte.
- 5.1 Données:
On vous fourni une collection de 20 documents ASCII. Ces documents on été obtenus en utilisant les résultats données par un moteur de recherche d'après les requêtes suivantes: Bank, Cheese+making, Doctors, Esoterics, Football+club, Gymnastics, Health+care, Hospital, Hotel, Medical+center, Mountains, Pharmaceuticals, Psychiatry, Red+Cross, Reiki, Restaurant, Switzerland, Sports+club, Tourist+information, Travel+agency.
Pour faire le "download" des pages on a utilisé l'application wget. Ensuite, on a filtré les caractères accentuées, les caractères spéciaux et on a fait une conversion html2text. Par la suite, on a simplifié les textes en filtrant des "stop-words" et en faisant du "stemming" (recherche des racines pour les verbes, élimination des pluriels, etc.)
- 5.2 Représentation des documents:
Le vocabulaire filtré utilisé dans la collection de documents est composé de 639 mots. Dans le fichier vocabulary639.txt on vous liste les mots ainsi que le nombre de fois que chaque mot apparaît dans la collection, le nombre de documents dans lesquels chaque mot apparait, et le nombre maximum de fois que chaque mot apparait dans un même document.
- 5.3 Choix du vocabulaire:
Pour grouper les documents en utilisant une carte de Kohonen il faut filtrer les mots qui n'apparaissent que dans très peu de documents ainsi que les mots qui apparaissent dans la plupart des documents. Il faut donc sélectionner que les mots qui apparaissent entre un nombre X et un nombre Y de documents de la collection de documents.
Voici le vocabulaire qu'on obtient en utilisant que les mots qui apparaissent dans plus de X documents, mais dans moins de Y documents:X = 5, Y = 10 : 45 mots
X = 0, Y = 20 : 639 mots
X = 10,Y = 20 : 14 mots
X = 0, Y = 10 : 621 mots
X = 5, Y = 15 : 59 mots
- 5.4 Représentation vectorielle des documents:
En utilisant un des vocabulaires du point 5.3 on trouve la représentation vectorielle des documents fournies ci-dessous:vectors14.txt
vectors45.txt
vectors59.txt
vectors621.txt
- 5.5 Document clustering à l'aide d'une carte de Kohonen
Utilisez les représentations vectorielles fournis en 5.4 pour entraîner des cartes de Kohonen. Analyser le résultat de chaque carte de Kohonen (deux documents proches en contenu doivent être placés proches dans la carte de Kohonen) et déterminer lequel parmi les 4 vocabulaires fournis est le plus adapté pour cet application.6. Rapport de laboratoire
On vous demande de rédiger un rapport présentant les expériences menés dans les exercices 4 et 5. Présenter les cartes de Kohonen obtenues en indicant les paramètres utilisés. Analyser et commenter les résultats obtenus en décrivant les "connaissances" extraites de ces cartes et que l'on n'aurait probablement pas pu extraire des données brutes.7. Explorer d'autres applications
- 7.1 WEBSOM: une carte de Kohonen d'un million de documents
- 7.2 Classification des images de voitures par James Matthews et l'application de Casey Chesnut.
- 7.3 Classification des visages par J. Bjorkqvist (explications en suédois).
SBI 2005-2006