View
1
Download
1
Category
Preview:
Citation preview
MémoireMémoire
Carte de Kohonen pour laCarte de Kohonen pour la quantification de fonctionquantification de fonction
1
Carte de Kohonen pour la quantification de fonction
Responsable spécialité SSIRResponsable spécialité SSIR : Mr Zarader.: Mr Zarader.Responsable parcours RSIResponsable parcours RSI: Mr Milgram.: Mr Milgram.TuteurTuteur : Mr Gas.: Mr Gas.
Master SDI.Master SDI.Spécialité SSIR.Spécialité SSIR.parcours SDI.parcours SDI.mars 2006 / septembre 2007.mars 2006 / septembre 2007.
2
Carte de Kohonen pour la quantification de fonction
Tables des matièresTables des matières
Table des matièresIntroduction..............................................................................................................11
I°/ Présentation du laboratoire...............................................................................12II°/Présentation du stage........................................................................................14
II1°/ Description.................................................................................................14II 2°/ Bibliothèque NPCLIB...............................................................................14
III°/ Historique du travail.......................................................................................15IV°/ Quelques connaissances sur les réseaux de neurones...................................16
IV1°/ Présentation..............................................................................................16IV2°/ Utilité.........................................................................................................17IV3°/ Structure du réseau..................................................................................18IV3°/ Apprentissage...........................................................................................19IV4°/ Cartes de Kohonen ..................................................................................19
a°/ L'apprentissage compétitif........................................................................21b°/ Le Calibrage...............................................................................................23c°/ La Classification........................................................................................23
1 ère partie: Présentation l’interface graphique....................................................................24
I A) L'afficheur mapview.......................................................................................25I A1°/ Introduction.............................................................................................25IA2°/ Description modes....................................................................................26
a°/ Démarrage (4)............................................................................................27b°/ mode démo(1).............................................................................................27c°/ mode local(2)..............................................................................................28d°/ mode réseau(3)...........................................................................................29
IA3°/ Fonctionnalités.........................................................................................29a°/ Menu (4).....................................................................................................29b°/ Fenêtre d'affichage(5)................................................................................30
b1°) Carte de Kohonen.............................................................................30 b2°) Statistiques.......................................................................................33
3
Carte de Kohonen pour la quantification de fonction
b3°) Bilan..................................................................................................35b31°) Nombre d'activation par neurone...............................................35b32°) Quantification vectorielle...........................................................38
I B) L'interface uinpclib.........................................................................................45I B1°/ Introduction.............................................................................................45IB2°/ Spécificités................................................................................................46
a°/ Zone mémoire (1)......................................................................................47 b°/Nom des fonctions (2 )...............................................................................48 c°/Fenêtre d'aide(3)........................................................................................49 d°/ Fenêtre d'usage(4)....................................................................................50
I B3°/ Spécificités...............................................................................................50I C) Petite étude sur la carte de Kohonen normal...............................................52
IC1) Description du signal.................................................................................53IC2) méthodes....................................................................................................53IC3 ) Résultats...................................................................................................54
a°/ Visualisation Carte...................................................................................54b°/ Autres Courbes..........................................................................................55
b1°) Distance entre deux neurones victorieux........................................55 b2°)Nombre de neurone actif...................................................................56 b3°) Bilan nombre d’activation par neurone..........................................57
c°/ Conclusion..................................................................................................57
Seconde partieDescription de la carte NPC..................................................................................58
IIA°) La carte NPC.................................................................................................59IIA1°) Différence Kohonen/SOMNPC.............................................................59
a°/ Structure du réseau..................................................................................59IIA2°) Fonctions.................................................................................................61
IIB°) Étude performances carte SOMNPC.........................................................62IIB1°)Vecteur d'entrée dimension un...............................................................62
a°/ Test en apprentissage..............................................................................62 a1°) Représentation des 10 fonctions de la base d'apprentissage:...62 a2°) Expressions:......................................................................................63 a3°) Création de la base d'apprentissage:...............................................63 a4°) Codage NPC......................................................................................64
a41°) Structure du réseau...................................................................64
4
Carte de Kohonen pour la quantification de fonction
a42°) Codage.........................................................................................65 a5°) Résultats...........................................................................................65 a6°) Test pour une carte 10*3:.................................................................67 a7°) Test Pour une carte 30*3..................................................................68
b°/ bruit............................................................................................................68 b1°/ Expression base non bruité(f):.........................................................69 b2°/ Expression base bruité(b3):..............................................................69 b3°/ Apprentissage ...................................................................................69
b31°) Apprentissage base non bruité..................................................69b32°) Apprentissage base bruité........................................................71
c°/ Test en généralisation...............................................................................73 c1°) Étude simple......................................................................................73
c11°) Représentation des 10 fonctions de la base d'apprentissage:. .73c12°) Expressions fonction d'apprentissage:........................................73c13°) Expressions fonction de test:.......................................................74c14°) Résultats.......................................................................................74
c2°) Étude approfondie.............................................................................76c21°) Représentation des 5 fonctions de la base d'apprentissage:.....76c22°) Expressions:.................................................................................76c23°) Codage NPC.................................................................................76c24°) Résultats.......................................................................................77
c3°) Étude vecteur entrée.........................................................................80c31°) Base de test:.................................................................................80c32°) Résultats.......................................................................................80
d°/ clusterisation.............................................................................................82 d1°) Représentation des fonctions de la base d'apprentissage:............82 d2°) Résultats...........................................................................................83 d3°) Schématisation.................................................................................84
IIB2°)Vecteur d'entrée dimension supérieur 1...............................................85a°/ Fonction gaussienne..................................................................................85
a1°) Expressions des fonctions de la base d'apprentissage:.................85 a2°) Résultats en apprentissage..............................................................85
b°/ Fonction sinus............................................................................................86 b1°) Expressions des fonctions de la base d'apprentissage:.................86 b2°) Algorithme:........................................................................................87 b3°) Résultats:...........................................................................................87
5
Carte de Kohonen pour la quantification de fonction
IIB3°)Conclusion................................................................................................88
Troisième partieTest sur un signal complexe..................................................................................89
IIIA°) Qu'est qu'un phonème................................................................................90 IIIA1°) Description............................................................................................90IIIA2°)Présentation BASE NTIMIT.................................................................90
IIIB°) Test...............................................................................................................90IIIB1°) phonème ao et s.....................................................................................90
a°/ Test en apprentissage:...............................................................................91b°/ Test sur des mots.......................................................................................92
b1°) Mot sass............................................................................................92 b2°) Mot cot...............................................................................................93 b3°) Mot caught........................................................................................93 b4°) Mot coat.............................................................................................94
c°/ Comparaison de deux mots.......................................................................95IIIC°) Conclusion....................................................................................................96
Conclusion.................................................................................................................97
Bibliographie............................................................................................................97
Annexes:....................................................................................................................100
6
Carte de Kohonen pour la quantification de fonction
Tables des Tables des figuresfiguresFigure 1: Vue simplifiée d'un réseau artificiel de neurones.....................................16Figure 2: Structure d'un neurone artificiel................................................................18Figure 3: Architecture d'un modèle de Kohonen......................................................20Figure 4: fonction d'apprentissage compétitif...........................................................21Figure 5: présentation de l'interface graphique mapview........................................26Figure 6: fenêtre Menu................................................................................................27Figure 7: fenêtre mode Démo......................................................................................28Figure 8: fenêtre mode Local......................................................................................28Figure 9: fenêtre mode réseau....................................................................................29Figure 10: options menu..............................................................................................30Figure 11: Affiche carte fichier test.txt......................................................................31Figure 12: affichage carte...........................................................................................32Figure 13: fenêtre statistiques....................................................................................33Figure 14: courbe du haut...........................................................................................34Figure 15: courbe du bas.............................................................................................34Figure 16: Fenêtre bilan..............................................................................................35Figure 17:Affichage carte............................................................................................37Figure 18: nombre d'activations par neurone............................................................37Figure 19: nuage de points (neurone,voisin)..............................................................41Figure 20: Décomposition en région...........................................................................42Figure 21: Interface uinpclib.......................................................................................46Figure22: fenêtre répertoire de travail.......................................................................47Figure 23: nom des fonctions......................................................................................48Figure 24: fenêtre d'aide..............................................................................................49Figure 25: fenêtre d'usage...........................................................................................50Figure 26: fenêtre simulation.....................................................................................52Figure 27: résultat test................................................................................................54Figure 28: résultat distance interneurone................................................................55Figure 29: résultat nombre neurone actif..................................................................56Figure 30: résultat nombre d'activation.....................................................................57Figure 31:description codeur SOMNPC....................................................................60Figure 32: fonctions à apprendre................................................................................62Figure 33: base à apprendre.......................................................................................63
7
Carte de Kohonen pour la quantification de fonction
Figure 34: structure réseau........................................................................................64Figure 35: résultat apprentissage..............................................................................66Figure 36: Ordonnancement résultat grille 30*3......................................................68Figure 37: allure b3 sur 100 échantillons...................................................................69Figure 38: Base d'apprentissage.................................................................................73Figure 39: Base de test................................................................................................74Figure 40: Base d'apprentissage.................................................................................76Figure 41: carte NPC1................................................................................................79Figure 42: sous carte...................................................................................................79Figure 43: base d'apprentissage.................................................................................82Figure 44: schématisation...........................................................................................84Figure 45: résultat gaussienne...................................................................................85Figure 46: signal sinusoïdal........................................................................................86Figure 47: résultat mot sass........................................................................................92Figure 48: résultat mot cot..........................................................................................93Figure 49: résultat mot caught...................................................................................93Figure 50: résultat mot coat........................................................................................94Figure 51: résultat comparaison.................................................................................95
8
Carte de Kohonen pour la quantification de fonction
Tables des tableauxTables des tableaux
Tableau 1: Matrice nombre activation par neurone..................................................36Tableau 2: Vectorisation..............................................................................................36Tableau 3: Algorithme première ligne.......................................................................39Tableau 4: Algorithme dernière ligne........................................................................39Tableau 5: Algorithme ligne(s) intermédiaire(s)......................................................40Tableau 6: Algorithme dernière colonne....................................................................40Tableau 7: exemples appartenant zone 1..................................................................42Tableau 8: exemples appartenant zone 2..................................................................43Tableau 9: exemples appartenant zone 3..................................................................43Tableau 10: exemples appartenant zone 4................................................................44 Tableau 11: Ordonnancement résultat grille 10*10.................................................66Tableau 12: Ordonnancement résultat grille 10*3....................................................67Tableau 13: neurones référents..................................................................................70Tableau 14: résultat fonctions bruité ........................................................................70Tableau 15: neurone référent......................................................................................71Tableau 16: résultat fonctions non bruité.................................................................72Tableau 17: Ordonnancement généralisation............................................................75Tableau 18: résultat d'apprentissage.........................................................................77Tableau 19: résultat en généralisation.......................................................................78Tableau 20: Ordonnancement généralisation............................................................81Tableau 21: résultat apprentissage............................................................................83Tableau 22: résultat en généralisation.......................................................................87Tableau 23: résultat en apprentissage des deux phonèmes......................................91
9
Carte de Kohonen pour la quantification de fonction
RemerciementRemerciement
Je remercie M. le Directeur Philippe BIDAUD, de m'avoir permis d'effectuer mon stage de Master II, au sein de l'institut ISIR. Les locaux du laboratoire ISIR, m’ont permis d’avoir toutes les ressources nécessaires à l’aboutissement du stage.
Je tiens à remercier vivement Monsieur Gas, chargé de recherche et développement au sein de l'équipe Systèmes intégrés mobiles et autonomes, qui m'a encadré tout au long du stage. Sa disponibilité, son aide et ses idées m'ont énormément apporté.
Je tiens enfin à remercier l’ensemble des collègues stagiaires qui m'ont aidés dans mon travail.
10
Carte de Kohonen pour la quantification de fonction
IntroductionIntroduction
Ce mémoire présente les résultats du stage que j'ai effectué entre le mois de mars et celui de septembre 2007 au sein de l'Institut des Systèmes Intelligents et Robotique [ISIR07].
Ce stage intitulé: «Carte de Kohonen pour la quantification de fonction» [Gas06] a pour but d'effectuer:
➢ Une étude exhaustif au sujet d'un nouvel algorithme d'apprentissage de carte de Kohonen prédictive [GCZF05] [GCZ06].
➢ La réalisation d’une interface graphique capable de produire un affichage en temps réel.
Après une présentation du stage et des généralités sur les réseaux de neurones [BEN06] [DRE99] [BOU93] nous verrons, dans une première partie, la programmation des outils nécessaire au travail demandé.
Puis, dans la seconde partie, nous étudierons les performances de ce nouveau réseau de neurone [BEN06] [DRE99] [BOU93].
Ensuite, dans une troisième partie, nous analyserons les tests pratiqués sur des signaux réels.
Pour finir une conclusion, des annexes ainsi qu'une bibliographie viendront clore ce rapport.
11
Carte de Kohonen pour la quantification de fonction
I°/ Présentation du laboratoireI°/ Présentation du laboratoireTout d’abord nous allons fournir quelques informations sur le laboratoire
ISIR [ISIR07].
L'institut des Systèmes Intelligents et de Robotique (ISIR) est un laboratoire de recherche de l'université Pierre et Marie Curie (UPMC) associé au Centre National de le Recherche Scientifique (CNRS), département Sciences et Technologies de l'Information et de l'Ingénierie (STII).
L'ISIR a été créé au 1er Janvier 2007 par le regroupement de trois équipes de l'UPMC relevant de la nouvelle UFR des Sciences de l'Ingénieur.
• le Laboratoire de Robotique de Paris dans son ensemble (LRP). • le groupe Perception et Réseaux Connexionnistes (PRC) du Laboratoire des
Instruments et Systèmes d'Ile de France (LISIF).• l'équipe AnimatLab du Laboratoire d'Informatique de Paris 6 (LIP6).
Ce regroupement vise à fédérer des compétences complémentaires et synergétiques dans les domaines de :
• La modélisation des systèmes et des interactions complexes.• Les commandes robustes des systèmes, la téléopération et l'identification.• La perception et Traitement du Signal (vision, toucher et parole).• Les architectures de contrôle : évolution, développement et apprentissage.
De plus elle réunit un potentiel significatif, humain (près d'une centaine de personnes : 40 chercheurs, enseignantschercheurs et ingénieurs , 60 doctorants et postdoctorants) et matériel, dans le cadre de deux des domaines scientifiques majeurs couverts par l'UPMC : Ingénierie et Médecine.
12
Carte de Kohonen pour la quantification de fonction
L'ISIR est dirigé par Philippe Bidaud . Il est structuré en trois équipes de recherches:
• Systèmes robotiques et microrobotiques pour la manipulation assistée. Responsables: Guillaume Morel et Stéphane Régnier
• Perception et mouvement. Responsables: Maurice Milgram et JeanLuc Zarader
• Systèmes intégrés mobiles et autonomes. Responsables: Stéphane Doncieux et Bruno Gas
J'ai été accueilli au sein de l'équipe signal « Système intégrés mobiles et autonome » par Monsieur Bruno GAS, Maître de conférences. Monsieur GAS travaille sur l'étude de modèles connexionnistes pour le traitement du signal et sur les applications en traitement de la parole et en traitement de signaux Lidar. Il assure aussi des enseignements en Traitement du signal, traitement de l'information, Reconnaissance des forme.
13
Carte de Kohonen pour la quantification de fonction
II°/Présentation du stageII°/Présentation du stage
II-1°/ DescriptionII-1°/ Description
Un nouveau modèle d’extraction de caractéristiques du signal de parole a été mis au point par l’équipe signal, le modèle SOMNPC [GCZF05] (SelfOrganizingMap – Neural Predictive Coding), permettant de réaliser l’extraction non supervisée de caractéristiques sonores. L’algorithme s’apparente à une carte autoorganisée de Kohonen à une couche cachée, à laquelle on applique l’algorithme d’apprentissage utilisé pour le Perceptron Multicouches en prédiction, typiquement l’algorithme de rétropropagation de l’erreur.
A y regarder de près, l’on se rend compte que le système proposé effectue une quantification vectorielle de fonctions que l’on pourrait peutêtre appeler tout simplement « quantification fonctionnelle » . Le but du stage est précisément de vérifier cela sur le plan expérimental. Il s’agit donc d’apprendre des fonctions élémentaires (en quelque sorte des fonctions « jouet ») et de mettre en évidence la propriété de tonotopie : « deux fonctions proches au sens de la distance définie dans l’espace des fonctions sont codées par des neurones proches sur la carte». L’algorithme pourra être également testé sur des signaux réels (signaux de parole des bases de données TIMIT et NTIMIT ou issus de flux audio en provenance d’émissions radiophoniques). La réalisation d’une plateforme logicielle de démonstration serait un plus.
II -2°/ Bibliothèque NPCLIBII -2°/ Bibliothèque NPCLIB
L'ensemble des algorithmes d’apprentissage de cartes de Kohonen ‘prédictives’ ont été développées sous Linux . Ces algorithmes ont été regroupés dans une librairie appelée NPCLIB. Elle est l'outil principal pour le travail à effectuer.
De plus cette librairie comporte les outils d'acquisition, de codage et de classification de signaux de parole (speech acquisition, coding and classification routines).
14
Carte de Kohonen pour la quantification de fonction
III°/ Historique du travailIII°/ Historique du travail
Voici les différents travaux qui ont été opérés, avec plus ou moins de succès, durant ces six mois. Nous les avons séparés en cinq grandes phases distinctes.
Première étape : Recherche concernant les réseaux de neurones. Le premier mois a surtout consisté à faire, dans un premier temps, toute les
recherches nécessaires dans la littérature sur les réseaux de neurones [BEN06] et plus précisément sur les cartes de Kohonen [DRE99] [BOU93] puis , dans un second temps, étudier la création de d'interface via la bibliothèque C++: QT [QT1] [QT2].
Seconde étape : Programmation d'un afficheur et interfaçage de la
bibliothèque NPCLIB. Les six semaines qui suivirent ont données lieu à la programmation de deux
interfaces graphique; une pour afficher les tests en apprentissages/généralisations et une seconde pour rendre la programmation via les fonctions de la NPCLIB plus conviviale. Sans oublier une révision poussé en C/C++ [Cast03] car cette bibliothèque est développée sous ce langage de programmation.
Troisième étape : Études des Performances du réseau.Pour connaître les différentes particularité du modèle SOMNPC j'ai,
durant près de deux mois, réalisé une étude exhaustive sur ses performances (généralisation, indépendance du bruit, clusterisation .....).
Quatrième étape : Test sur des signaux réels. Trois semaines furent ensuite nécessaire pour analyser les résultats fournis
par le réseau sur des signaux de paroles.
Cinquième étape : Élaboration du rapport et de la présentation Enfin les derniers semaines du stage ont servi à la formalisation:* des améliorations des différents programmes que j'ai développé.* des notices d'utilisations pour chacune des interfaces.* du rapport.* de la présentation PowerPoint.
15
Carte de Kohonen pour la quantification de fonction
IV°/ Quelques connaissancesIV°/ Quelques connaissances sur les réseaux de neuronessur les réseaux de neurones
IV-1°/ PrésentationIV-1°/ PrésentationUn réseau de neurones est un modèle de calcul dont la conception est très
schématiquement inspirée du fonctionnement de vrais neurones. Ils sont généralement optimisés par des méthodes d’apprentissage de type statistique.
Le réseau de neurones [BEN06] [DRE99] [BOU93] est constitué d’un très grand nombre de petites unités de traitement identiques appelées neurones artificiels (voir figure 1). Elles étaient électroniques dans les premières implémentations (perceptrons de Rosenblatt); on les simule le plus souvent sur ordinateur aujourd’hui pour des questions de coût et de commodité.
Les réseaux neuronaux sont utilisés dans de nombreux domaines (entre autres, vie artificielle et intelligence artificielle) pour leurs capacités d'apprentissage.
Figure 1: Vue simplifiée d'un réseau artificiel de neurones
(tirée de [Wik-01])
16
Carte de Kohonen pour la quantification de fonction
Couche cachée
Entrée
Sortie
IV-2°/ UtilitéIV-2°/ Utilité
Les réseaux de neurones, en tant que système capable d'apprendre, mettent en oeuvre le principe de l'induction, c'està dire l'apprentissage par l'expérience. Par confrontation avec des situations ponctuelles, ils infèrent un système de décision intégré dont le caractère générique est fonction du nombre de cas d'apprentissages rencontrés et de leur complexité par rapport à la complexité du problème à résoudre. Par opposition, les systèmes symboliques capables d'apprentissage, s'ils implémentent également l'induction, le font sur base de la logique algorithmique, par complexification d'un ensemble de règles déductives.
Grâce à leur capacité de classification et de généralisation, les réseaux de neurones sont généralement utilisés dans des problèmes de nature statistique, tels que la classification automatique de codes postaux ou la prise de décision concernant un achat boursier en fonction de l'évolution des cours.
Il est à noter que le réseau de neurones ne fournit pas toujours de règle exploitable par un humain. Le réseau reste souvent une boite noire qui fournit une réponse quand on lui présente une donnée, mais le réseau ne fournit pas de justification facile à interpréter.Les réseaux de neurones sont réellement utilisés, par exemple:
• pour la classification ; par exemple pour la classification d'espèces animales par espèce étant donnée une analyse ADN.
• reconnaissance de motif ; par exemple pour la Reconnaissance optique de caractères (OCR), et notamment par les banques pour vérifier le montant des chèques, par La Poste pour trier le courrier en fonction du code postal, etc. ; ou bien encore pour le déplacement automatisé de robots mobiles autonomes.
• approximation d'une fonction inconnue. • modélisation accélérée d'une fonction connue mais très complexe à calculer
avec exactitude ; par exemple certaines fonctions d'inversions utilisées pour décoder les signaux de télédétection émis par les satellites et les transformer en données sur la surface de la mer.
17
Carte de Kohonen pour la quantification de fonction
IV-3°/ Structure du réseauIV-3°/ Structure du réseau
Un réseau de neurone est en général composé d'une succession de couches dont chacune prend ses entrées sur les sorties de la précédente. chaque couche (i) est composée de Ni neurones, prenant leurs entrées sur les Ni1 neurones de la couche précédente. À chaque synapse est associée un poids synaptique, de sorte que les Ni1 sont multipliés par ce poids, puis additionnés par les neurones de niveau i, ce qui est équivalent à multiplier le vecteur d'entrée par une matrice de transformation. Mettre l'une derrière l'autre les différentes couches d'un réseau de neurones reviendrait à mettre en cascade plusieurs matrices de transformation et pourrait se ramener à une seule matrice, produit des autres, s'il n'y avait à chaque couche, la fonction de sortie qui introduit une non linéarité à chaque étape.
Ceci montre l'importance du choix judicieux d'une bonne fonction de sortie : un réseau de neurones dont les sorties seraient linéaires n'aurait aucun intérêt.
Au delà de cette structure simple, le réseau de neurones peut également contenir des boucles qui en changent radicalement les possibilités mais aussi la complexité. De la même façon que des boucles peuvent transformer une logique combinatoire en logique séquentielle, les boucles dans un réseau de neurones transforment un simple dispositif de reconnaissance d'entrée en une machine complexe capable de toute sortes de comportements.
Figure 2: Structure d'un neurone artificiel
(tirée de [Wik-01])
18
Carte de Kohonen pour la quantification de fonction
IV-3°/ ApprentissageIV-3°/ Apprentissage
La large majorité des réseaux de neurones possède un algorithme « d'entraînement » qui consiste à modifier les poids synaptiques en fonction d'un jeu de données présentées en entrée du réseau. Le but de cet entraînement est de permettre au réseau de neurones « d'apprendre » à partir des exemples. Si l'entraînement est correctement réalisé, le réseau est capable de fournir des réponses en sortie très proches des valeurs d'origines du jeu de données d'entraînement.
Mais tout l'intérêt des réseaux de neurones réside dans leur capacité à généraliser à partir du jeu de test.
Il existe deux grandes familles d'apprentissage:
● Les apprentissages supervisés.● Les apprentissages non supervisés.
Un apprentissage est dit supervisé lorsque l'on force le réseau à converger vers un état final précis, en même temps qu'on lui présente un motif.
À l'inverse, lors d'un apprentissage nonsupervisé, le réseau est laissé libre de converger vers n'importe quel état final lorsqu'on lui présente un motif.
L'intérêt est que le réseau s'autoorganise de tel manière à attribuer aléatoirement sur la carte un ou plusieurs neurones et ceux pour chaque vecteur d'entrée.
Le modèle SOMNPC que l'on va étudier au cours de ce stage, se trouve être une carte de Kohonen un peu particulière, ce type de réseau appartiennent à la deuxième famille. Voyons maintenant comment une carte de Kohonen basic fonctionne et nous verrons, dans la partie 2, le fonctionnement du modèle SOMNPC.
IV-4°/ Cartes de KohonenIV-4°/ Cartes de Kohonen
Il existe des zones du cerveau (dans le cortex visuel par exemple) qui présentent la même topologie que les capteurs sensoriels. C'est à dire deux zones proches dans le cortex visuel correspondent à deux zones proches dans la rétine, c'est ce que l'on appelle une relation tonotopique (des observations identiques on été faites dans le bulbe olfactif, ou l'appareil auditif).
19
Carte de Kohonen pour la quantification de fonction
Ces observations ont mené T. Kohonen à proposer un modèle de réseau de
neurones équivalent à une carte topographique dont les neurones sont différenciés selon leur position dans le réseau afin de les spécialiser pour traiter certain types de données [ OL02].
La théorie de Kohonen consiste à réaliser un réseau de neurones (équivalent à une carte topographique) pour laquelle l'intensité des liaisons entre les neurones et les stimuli donneraient l'information de relief. L'intérêt est de savoir, pour un ensemble de stimulus, quels neurones seront les vainqueurs (ou se situe les pics aux sens du relief). Suite à l'analyse de ces réponses, il est possible d'affecter des stimuli aux neurones.
On distingue deux étapes indispensables dans l'adaptation du modèle théorique au cas concret : l'apprentissage et le calibrage. L'apprentissage est indispensable pour le réglage de l'intensité des liaisons entre les neurones et leurs stimuli. Le calibrage est indispensable pour affecter la réponse d'un neurone à un stimuli.
La carte de Kohonen est en général à deux dimensions. (voir figure 3 cidessous). Il existe plusieurs structures de carte de Kohonen ayant des propriétés différentes : rectangulaire, carrée, hexagonale.
Figure 3: Architecture d'un modèle de Kohonen
(tirée de [Wik01])
20
Carte de Kohonen pour la quantification de fonction
Nous allons voir en détail les phases importantes de cette théorie :• Apprentissage compétitif .• Calibrage. • Classification .
a°/ L'apprentissage compétitifCette première notion, est simplement basée sur la notion d'interaction d'un
neurone avec son stimulus. La nature a souvent pour règle d'aller au plus simple, c'est le cas pour le choix des neurones devant répondre à un stimulus. Ce sont les neurones les plus proches du stimulus qui auront en charge le traitement de l'information, nous parlons alors d'interactions neuronales. Cette notion d'interaction est tout simplement liée à la distance qui sépare le neurone du (des) stimulus (i).
Donc s'il ne fallait retenir qu'une seule chose , c'est qu'il y a différenciation des neurones, afin de les spécialiser pour traiter certain types de stimuli.
Figure 4: fonction d'apprentissage compétitif
L'apprentissage consiste à présenter sur la couche des entrées du réseau, les éléments sur lesquels on souhaite réaliser l'apprentissage.Il existe plusieurs types d'apprentissages dont :
➢ The Winner Take All
➢ La Cartographie Associative
21
Carte de Kohonen pour la quantification de fonction
(tirée de [ OL02])
Pour le moment nous n'avons considéré comme lien entre les différents neurones de notre réseau, que les vecteurs poids, cependant chaque neurone est lié aux autres, diront nous de manière physique, formant ainsi un maillage neuronal. On pourra noter que différents maillages peuvent être envisagés , rectangulaire, en nid d'abeille, octogonale, décagonale etc... Le modèle sélectionné pour notre étude sera le modèle rectangulaire car plus simple à implémenter, bien qu'il semble assez naturel qu'un maillage en nid d'abeille puisse fournir de meilleurs résultats.
Donc ici intervient la notion d'interaction latérale entre neurones : les voisinages ont leur importance.
Équations d'apprentissages :On considère "n" neurones dans le réseau.Soit X le vecteur en entrée, X=[x1 x2 ... xn], les (xi) étant les valeurs
caractéristiques de la forme à apprendre, soit W le vecteur des coefficients synaptiques, W=[w1 w2 ... wn], i correspond aux dimensions du vecteur d'entrée X, j correspond au neurones.
Les poids wi sont au préalable initialisés aléatoirement.Les réponses des neurones Y =[y1 y2 ... yn] sont calculés :
Le neurone vainqueur v (p,q) est celui qui donne la réponse la plus faible ; avec p et q représentant les coordonnées du neurone v sur la carte.Les poids des neurones sont mis à jour grâce à la relation suivante :
Avec : [xi(t) wi(t)] : distance euclidienne entre les vecteurs X et W à l'instant t.
(t) : coefficients d'apprentissage, fonction linéaire décroissante, grand au début pour accélérer cette phase, et petit après pour affiner. Ce coefficient a une valeur qui décroît aussi pour les neurones voisins, de manière à les spécialiser un peu moins que le neurone vainqueur
22
Carte de Kohonen pour la quantification de fonction
(t) dépend de la distance au neurone vainqueur et du temps. Il existe plusieurs formes possibles.
t représente le nombre d'itération de l'apprentissage, c'est à dire le nombre de fois où les données sont apprisent.
Remarque:Il est conseillé de mélanger les données d'entrées de l'apprentissage pour que le vecteur de poids Wij ne soit pas influencé par l'ordre des données d'apprentissage.
b°/ Le Calibrage
Le calibrage intervient après l'apprentissage, il sert à affecter chaque neurones à une classe parmi les classes souhaités. Il est donc nécessaire de posséder des échantillons déjà étiquetés pour chaque classes pour chacun des calibrage à réaliser.
Le calibrage consiste à présenter sur la couche d'entrée (comme dans l'apprentissage) les échantillons étiquetés, trouver le neurone vainqueur v pour chaque échantillon, et compter pour chaque neurone pour combien d'échantillons de chaque classe il et le vainqueur.
Pour étiqueter chaque neurone, il faut regarder pour quelle classe il fut le vainqueur le plus grand nombre de fois. Il est possible dans certains cas que des neurones ne répondent pour aucune classe.
c°/ La Classification
La classification utilise la carte de Kohonen construite avec les deux étapes précédentes (matrice des poids et résultat de l'étiquetage). Il s'agit simplement de présenter les données à classer en entrées, trouver le neurone vainqueur pour chaque donnée, et lui affecter une classe grâce au résultat de l'étiquetage.
Il est possible de vérifier la qualité de l'apprentissage en classifiant des données étiquetés conformes aux classes désirées et en observant la répartition des données classées sur chaque classe.
23
Carte de Kohonen pour la quantification de fonction
1 ère partie: 1 ère partie:
Présentation l’interface graphique
Cette partie présente l'ensemble des logiciels, ou outil, que j'ai développé pour faciliter l'utilisation des fonctions de la bibliothèque NPCLIB.
24
Carte de Kohonen pour la quantification de fonction
I- A) L'afficheur mapviewI- A) L'afficheur mapview
I -A1°/ IntroductionI -A1°/ Introduction
L’activité d’un neurone d’une carte de Kohonen étant liée à sa position sur une carte, Il est donc primordial d'avoir un afficheur capable d'effectuer la visualisation d’une carte de Kohonen en cours d’apprentissage.
L’interface à réaliser doit recevoir directement, depuis un programme de la librairie NPCLIB, des ordres concernant l’état de la carte et l’activité de chacun de ses neurones. L’interface n’a plus qu’à interpréter ses ordres et à les afficher.
Le programme que j'ai crée ce nomme mapview, il permet d'afficher avec succès les tests en apprentissage ou en généralisation d'une carte de Kohonen à topologie carré ou rectangulaire.
Nous allons, dans le prochain chapitre, voir les différents mode de transfert de données des programme (ou fichier) vers l'afficheur, puis dans le chapitre suivant, nous décrirons les fonctionnalités que comporte le menu et les affichages.
25
Carte de Kohonen pour la quantification de fonction
I-A2°/ Description modesI-A2°/ Description modes
Nous pouvons répertorier les différentes fonctionnalités de l'interface en cinq parties comme le montre la figure suivante:
Figure 5: présentation de l'interface graphique mapview
26
Carte de Kohonen pour la quantification de fonction
2
1
35
Dès que l'interface reçoit des données, un chronomètre se met en route. 4
Toutes les informations et instructions à suivre sont indiquées sur cette ligne d'édition.
a°/ Démarrage (4)
Figure 6: fenêtre Menu
L'interface mapview dispose de plusieurs modes qui se distinguent par la manière dont s'effectue l'acquisition des données (nous le verrons plus précisément par la suite).
Nous allons maintenant voir le fonctionnement de chacun des mode.
b°/ mode démo(1)
Ce mode permet d'initier un nouvel utilisateur à l'interface ou peut faire office d'introduction aux cartes de Kohonen.
27
Carte de Kohonen pour la quantification de fonction
Au démarrage de l'application, seul deux boutons du Menu (figure 6) sont activés:
Bouton Marche: Permet de choisir parmi les trois mode de fonctionnement disponible.
Bouton Quitter: permet à tout moment de fermer l'interface.
Figure 7: fenêtre mode Démo
c°/ mode local(2)Ce mode permet d'afficher sur la carte des données contenus dans des
fichiers.
Figure 8: fenêtre mode Local
28
Carte de Kohonen pour la quantification de fonction
Mode d'emploi
* Bouton démarrer: permet d'activer ce mode.
* Bouton Lire Fichier: permet d'afficher le contenue de fichier texte ou binaire.
*Bouton En entrée: Permet d'afficher les données du port d'entrée de l'interface.* Bouton Quitter mode : nous fait quitter ce mode.
Mode d'emploi1. L'impulsion sur « démarrer » permet d'activer ce mode.
2. On rentre les dimensions (en x et y) de la grille puis on appuie sur « enter » ou on clique sur « Dim Grille » pour
valider la grille.
3. On peux ensuite cliquer sur «Affiche Grille » pour faire
apparaître la grille.
4. Enfin il faut rentrer les coordonnées et la concentration du neurone et cliquer sur « Coord » pour l'afficher sur la
carte.
5. « Quitter mode » nous fait quitter ce mode.
d°/ mode réseau(3)
Ce mode permet d'afficher les données provenant d'un quelconque ordinateur via une connexion TCP/IP.
Figure 9: fenêtre mode réseau
I-A3°/ FonctionnalitésI-A3°/ Fonctionnalités
a°/ Menu (4)
Nous avons déjà vus que le menu permettait de quitter l'application ou de choisir le mode de transfert de données, mais ce n'est pas tout. Il présente d'autres intérêts ainsi, après un traitement, dès que l'on quitte un mode, on retrouve les différentes possibilités décrites cidessous:
29
Carte de Kohonen pour la quantification de fonction
Description
* Bouton démarrer: permet d'activer ce mode.
* Bouton TCP/IP: permet d'effectuer une connection TCP/IP ( port 1024).
* Bouton Déconnecté: Permet de se déconnecter de uinpclib.
* Bouton Quitter mode : nous fait quitter ce mode.
Figure 10: options menu
b°/ Fenêtre d'affichage(5)
Nous venons de voir l'acquisition des données mais Ce rapport serait très incomplet si on n'abordait pas l'essentiel, à savoir l'affichage des neurones sur la grille.
b-1°) Carte de Kohonen
En fonction des dimensions de la grille, nous avons deux types d'affichage possible,ainsi si on appelle :
dimx: le nombre de case suivant l'axe des abscisse.dimy: le nombre de case suivant l'axe des ordonnées.
30
Carte de Kohonen pour la quantification de fonction
Description
* Bouton Marche: Permet le choix entre les différents modes.
* Bouton Comparer: Permet de comparer deux tests.
* Bouton Rapport: Génère un rapport automatique à la sortie d'un mode (voir annexe I1)* Bouton STOP : Arrête l'exécution pendant traitement.
* Bouton Quitter : Ferme l'application.
On aura:
● Pour dimx+dimy < 100
1 2 3 4 5 6 7 8 9 10
Figure 11: Affiche carte fichier test.txt
31
Carte de Kohonen pour la quantification de fonction
1
2
3
4
5
6
7
8
9
10
Le neurone a une forme circulaire. Son rayon représente la concentration du neurone Sa couleur est lié à son nombre d'activation (plus la couleur est chaude et plus le neurone est activé). Par exemple dans la représentation de droite le neurone qui a la plus grande concentration a pour coordonnée (1,1) et le plus activé (1,7).
● Pour dimx+dimy > 100
Figure 12: affichage carte
32
Carte de Kohonen pour la quantification de fonction
Le neurone a une forme rectangulaire, il occupe en fait la case entière.
La couleur est lié à la concentration du neurone, plus la couleur est chaude et plus le neurone a une forte concentration. On perd donc l'information nombre d'activation.
b-2°) StatistiquesAprès la visualisation des neurones effectuée, je trouvais qu'il était
dommage de garder sous silence certaines variables du programme; c'est pourquoi, des courbes ont été rajoutés:
Si on clique sur l'onglet « Statistique » on peux visualiser des courbes (flèche bleu).
Figure 13: fenêtre statistiques Propriétés des courbes:
● Ces dernières évoluent en même temps que l'affichage des neurones. ● Les axes évoluent de manière à toujours avoir la représentations de la
courbe en entier.● Possibilité de zoomer et dézoomer sur des parties de la courbes.● De plus nous avons les touches « + » et « » pour le gérer la pile de zoom et
les touches: « avant », « arrière », « gauche » et « droite » pour translater la courbe.
33
Carte de Kohonen pour la quantification de fonction
Regardons plus précisément ce que nous affiche l'écran «Statistique »:
Figure 14: courbe du haut Figure 15: courbe du bas
34
Carte de Kohonen pour la quantification de fonction
La courbe que l'on voit cidessus représente la distance euclidienne entre deux neurones gagnant successifs et ceux pour chaque itération.
Remarque: L'axe des ordonnées a toujours pour valeur maximal la distance de la diagonal, cela nous donne une idée précise de l'importance des distances représentées.
Deux courbes sont représentées ici:
Dès qu'un nouveau neurone est activé on incrémente un compteur. On affiche en vert pour chaque itération la valeur de ce compteur. Le problème c'est qu'un neurone peux gagner mais avoir une concentration nul donc nous représentons en bleu, pour chaque itération le nombre de nouveau(x) neurone(s) activé(s) à concentration non nul.
Remarque: Ici les deux courbes sont confondus, ce qui signifie que tout les neurones activés ont une concentration non nul.
b-3 °) Bilan
Lorsqu'un traitement se termine avec succès deux autres courbes apparaissent:
Figure 16: Fenêtre bilan
Nous allons d'abord analyser la courbe du haut, sachant que le raisonnement est le même pour la seconde.
b-31°) Nombre d'activation par neurone Sachant que chaque neurone de la carte apparaît un certain nombre de fois pendant un traitement, nous disposons finalement d'un nombre d'activation par neurone. Nous avons donc la possibilité d'avoir une courbes 3D où, au couple (x,y) correspondant à la position du neurone sur la carte, nous associons son nombre d'activation.
35
Carte de Kohonen pour la quantification de fonction
N'ayant pas réussit a créer un objet susceptible de visualiser des courbes 3D, j'ai opté pour vectoriser la matrice( composé du nombre d'activation pour chaque neurone) pour pouvoir ensuite afficher le vecteur sur une courbe 2D.
Comment je fais?méthode: Voici un petit exemple où je montre comment je procède pour vectoriser la carte:
Ici nous avons une carte 4*4 où est représenté le nombre d'activation final pour chaque neurone.
Tableau 1: Matrice nombre activation par neurone
11 22 33 44
11 10 200 30 0
22 14 60 50 0
33 0 255 20 100
44 0 125 0 0
Tableau 2: Vectorisation
11 22 33 44 55 66 77 88 99 1010 1111 1212 1313 1414 1515 1616
10 200 30 0 14 60 50 0 0 255 20 100 0 125 0 0 Comme on le voit sur le tableau cidessus, la matrice est segmenté, ligne
par ligne.
36
Carte de Kohonen pour la quantification de fonction
Enfin pour afficher le résultat, nous mettons en abscisse l'indice du neurone (ici compris entre 1 et 16) et en ordonnée le nombre d'activation correspondant.
Pour en revenir au programme du fichier «test.txt», voici le résultat obtenus sur la carte (10*10) du programme:
Figure 17:Affichage carte Figure 18: nombre d'activations par neurone
Nous perdons la notion de tonotopie entre les deux représentations (figure 17 et figure 18).
Exemple:Le neurone indicé 51 et celui indicé 61 sont proches sur la carte mais il ne le
sont plus sur le graphe 2D.
37
Carte de Kohonen pour la quantification de fonction
b-32°) Quantification vectoriellePour palier au problème cité précédemment, un nouvelle espace de
représentation a été rajouté. En cliquant sur le bouton « plus » sous la courbe représentant le nombre
d'activation, nous obtenons la visualisation de tout les couples d'activations de neurones voisins sur la carte.
Remarque: On peut voir la carte de Kohonen comme une image en niveau de gris où
chaque case représente un pixel et le nombre d'activation son intensité.
Explication:Nous balayons donc toute la carte en extrayant l'ensemble des couples de
nombre d'activation voisins puis nous les affichons sur un graphe pour voir le comportement de proche en proche d'un neurone et de ses voisins.
Algorithme: Voici un petit exemple d'une carte 4*4 où est représenté le nombre d'activation final pour chaque neurone. Je montre ici comment je procède pour extraire tout les couples d'une matrice en évitant les redondances.
Le programme parcours la carte de gauche à droite et se décompose en quatre parties qui dépendent essentiellement de l'emplacement de la ligne traitée:
● Pour la première ligne (Tableau 3) Le neurone (i,j) a pour voisin les neurones (i+1,j),(i+1,j+1) et (i,j+1). L'algorithme crée un point(x,y), en attribuant la valeur du neurone(i,j) en x
et la valeur d'un de chacun de ses voisins en y. Puis on recommence l'opération pour le neurone de coordonnées (i+1,j) et ainsi de suite jusqu'au neurone de coordonnées (i+2,,j).
Légende:
38
Carte de Kohonen pour la quantification de fonction
: Sens d'avancement du programme: Valeur en y.
: Valeur en x.
Tableau 3: Algorithme première ligne
ii i+1i+1 i+2i+2 i+3i+3
jj 10 30 0 100
j+1j+1 0 50 10 56
j+2j+2 200 84 80 40
j+3j+3 0 0 10 30
Nous obtenons les couples suivant {(10,30) (10,50) (10,0) (30,0) (30,10) (30,50) (0,100) (0,56) (0,10)}.
● Pour la dernière ligne (Tableau 4)
Nous effectuons le raisonnement établi par la figure cidessous.
Tableau 4: Algorithme dernière ligne
ii i+1i+1 i+2i+2 i+3i+3
jj 10 30 0 100
j+1j+1 0 50 10 56
j+2j+2 200 84 80 40
j+3j+3 0 0 10 30
Nous obtenons les couples suivant {(0,200) (0,84) (0,0) (0,84) (0,80) (0,10) (10,80) (10,40) (10,30)}.
39
Carte de Kohonen pour la quantification de fonction
● Pour les autres lignes (Tableau 5)
Nous effectuons le raisonnement établi par la figure cidessous.
Tableau 5: Algorithme ligne(s) intermédiaire(s)
ii i+1i+1 i+2i+2 i+3i+3
jj 10 30 0 100
j+1j+1 0 50 10 56
j+2j+2 200 84 80 40
j+3j+3 0 0 10 30
Nous obtenons les couples suivant {(0,30) (0,50) (0,84) (0,200) (50,0) (50,10) (50,80) (500,84) (10,100) (10,56) (10,40) (10,80)}.
● Pour la dernière colonne
Il ne faut pas oublier la dernière colonne si l'on veut obtenir tout les couples possibles.
Tableau 6: Algorithme dernière colonne
ii i+1i+1 i+2i+2 i+3i+3
jj 10 30 0 100
j+1j+1 0 50 10 56
j+2j+2 200 84 80 40
j+3j+3 0 0 10 30
Nous obtenons les couples suivant {(100,56) (56,40) (40,30)}.
40
Carte de Kohonen pour la quantification de fonction
Maintenant que nous avons récupérer l'ensemble des couples, il suffit de représenter chaque point dans un repère 2D.
Pour en revenir a l'affichage du fichier « test.txt », voici le nuage de points que l'on obtient:
Figure 19: nuage de points (neurone,voisin)
L'interprétation du résultat ce fait en décomposant l'espace de représentation en quatre régions distincte, elle sont représenté sur la figure 20.
41
Carte de Kohonen pour la quantification de fonction
Figure 20: Décomposition en région
Propriétés:
● Les régions hachurés en bleu (zone 1) nous indique l'ensemble de points ayant au moins une coordonnée de valeur faible.
Exemple:
Tableau 7: exemples appartenant zone 1
0 100 100
25 100 12
40 28 32Les coordonnées (0,25), (0,100) et (0,100) appartiendront à la zone 1.
42
Carte de Kohonen pour la quantification de fonction
valeur en x
valeur en yLégende:
Tout les éléments appartenant à ses régions décrirons les contours d'activations.
Remarque: Si nous n'avons que des neurones isolés, tout les points seront sur la zone 1.
● La région hachurés en rouge (zone 2) nous indique l'ensemble des points ayant deux coordonnés de même valeur.
Exemple:
Tableau 8: exemples appartenant zone 2
0 100 100
25 100 12
40 28 32Les coordonnées (100,100) et (100,100) appartiendront à la zone 2.
Tout les éléments appartenant à cette région décrirons l'homogénéité d'activation.
● La région hachurés en jaune (zone 3) nous indique l'ensemble de points ayant la coordonnés en x supérieur à celle de y.
Exemple:Tableau 9: exemples appartenant zone 3
0 100 100
25 100 12
40 28 32
43
Carte de Kohonen pour la quantification de fonction
Les coordonnées (100,28),(100,12) et (100,32) appartiendront à la zone 3.
Tout les éléments appartenant à cette région décrirons la décroissance d'activation quand on se déplace de la gauche vers la droite.
● La région hachurés en jaune (zone 4) nous indique l'ensemble de points ayant la coordonnés en x supérieur à celle de y.
Exemple:
Tableau 10: exemples appartenant zone 4
0 100 100
25 100 12
40 28 32
Les coordonnées (25,100),(25,100) et (25,40) appartiendront à la zone 4.
Tout les éléments appartenant à cette région décrirons la croissance d'activation quand on se déplace de la gauche vers la droite.
Observation final:Selon l'important du nombre de point présent dans une zone ou dans une
autre, nous pouvons extraire des informations sur l'attitude des neurones de proche en proche.
Cette représentation pourrait être intéressante pour la caractérisation du bruit.
44
Carte de Kohonen pour la quantification de fonction
I- B) L'interface uinpclibI- B) L'interface uinpclib
I -B1°/ IntroductionI -B1°/ Introduction
Le programme uinpclib est un petit logiciel, pensé pour répondre à la programmation utilisant les fonctions de la bibliothèque NPCLIB ou tout autres fonctions adhérant à la même philosophie de codage.
Nous verrons d'abord les différentes fonctionnalités qu'elle comporte, pour ensuite voir quelques spécificités qui la rendent vraiment intéressante.
45
Carte de Kohonen pour la quantification de fonction
I-B2°/ SpécificitésI-B2°/ Spécificités
Nous pouvons répertorier les différentes spécificités de l'interface en cinq parties:
Figure 21: Interface uinpclib
46
Carte de Kohonen pour la quantification de fonction
4
5
1
2 3
Remarques:Les fonctions de la NPCLIB s'inspirent de la programmation sous matlab, il
était donc logique que l'interface c'en inspire aussi. La tache la plus ardue, lors de son élaboration, était d'avoir un code assez
robuste pour qu'une mise à jour de la bibliothèque ne nécessite pas celle de l'interface.
Nous allons maintenant voir le fonctionnement de chacune des parties.
a°/ Zone mémoire (1)
Si il y a une chose à savoir sur la NPCLIB c'est que ses fonctions génèrent
Figure22: fenêtre répertoire de travail
47
Carte de Kohonen pour la quantification de fonction
des fichiers de données. Il serait donc intéressant de visualiser le résultat du travail que l'on produit. Pour ce faire nous avons sur la partie gauche de l'interface une fenêtre représentant le répertoire de travail.
b °/ Nom des fonctions (2 )
Figure 23: nom des fonctions
Un nom de fonction est utile mais ne suffit certainement pas à décrire son rôle (sans parler des arguments à lui fournir), il faut donc pouvoir consulter le fichier d'aide.
48
Carte de Kohonen pour la quantification de fonction
Pour un nouvel utilisateur , il est important de connaître le nom des différentes fonctions qui compose la biblothèque. Comme leurs noms sont assez explicite, il pourra se faire une idée sur le rôle de chacune d'elle.
Pour répondre à cette nécessité, l'onglet « aide » a été ajouté en haut à droite de
l'interface.
c°/Fenêtre d'aide(3)
Pour répondre au besoin cité précédemment, une fenêtre au centre à droite (figure 24) , est prévu à cette effet.
Figure 24: fenêtre d'aide
Ainsi des qu'on tape le nom d'une fonction (ici npc1khnparam) et bien sûre après impulsion sur le bouton «Ok», nous obtenons la description établie dans le fichier d'aide.
49
Carte de Kohonen pour la quantification de fonction
d°/ Fenêtre d'usage(4)
Comme l'aide n'existe pas toujours, la deuxième fenêtre, en bas à droite, indique l'usage à de la fonction.
Figure 25: fenêtre d'usage
Il suffit enfin d'appuyer sur « exécuter » pour lancer l'instruction.
I -B3°/ SpécificitésI -B3°/ Spécificités
Dans cette partie nous verrons les quelques améliorations qui ont été apportés à l'interface.
➢ Bouton Répéter: Il est possible qu'un utilisateur ait seulement besoin d'utiliser une seule
fonction mais qu'il doit réaliser des tests pour différentes options.
50
Carte de Kohonen pour la quantification de fonction
Taper argument(s)
➢ Bouton historique: Dès qu'une instruction est réalisé avec succès, la ligne d'instruction est
inscrite dans une fenêtre « Historique »
➢ Bouton Variable: Il est parfois ennuyeux de réécrire plusieurs fois de longues lignes
d'argument, il était donc intéressant de les regrouper dans ce que l'on pourrait appeler des variables d'environnement locales à l'interface.
➢ Bouton connecte Le bouton « connecte » doit être vu comme un voyant qui indique si une
connexion TCP/IP est établie avec l'interface mapview.
Pour que uinpclib envoie des données vers mapview, il faut:
➔ Autoriser le port 1024 (firewall).
➔ La fonction qui doit envoyer les données dispose de l'option « m » (m comme mapview).
➔ Bouton connecte activé.
➔ Les données envoyées doivent être de type short et provenir du port de sortie (cout).
➔ Les données doivent respectent un certains ordre (voir readme du dossier mapview).
51
Carte de Kohonen pour la quantification de fonction
➢ Bouton simuler:
Figure 26: fenêtre simulation
I- C) I- C) Petite étude sur la cartePetite étude sur la carte de Kohonen normalde Kohonen normal
Après la réalisation de ces deux interfaces, un premier test sur une carte de Kohonen classique a été effectué. Nous avions un signal sonore de deux minutes provenant d’une radio FM (RMC).
52
Carte de Kohonen pour la quantification de fonction
L'impulsion sur le bouton « simuler »
ouvre la petite interface cicontre.
> Quelle est sa fonction?
Le port de sortie du processus source est connecté au port d'entrée du processus destinataire. Enfin le processus destinataire envoi, via la connexion TCP/IP, les données de son port de sortie (cout) vers l'interface mapview.
I-C1) Description du signalI-C1) Description du signal
- Durant près d’une minute et quarante secondes un journaliste sportif commente les résultats sportifs. Ces commentaires sont toutefois ponctués par deux jingles. Le premier n’est constitué que de musique alors que le second est composé de parole sur fond musical.
- Durant les 20 dernières secondes un nouveau locuteur vient commenter l’actualité.
I-C2) méthodesI-C2) méthodes Voici les différentes étapes pour pouvoir visualiser le fichier radio sur une
carte de Kohonen:
➢ Ce signal est découpé en trame.
➢ Chaque trame subit l’extraction de douze coefficients LPC.
➢ Initialisation aléatoire des poids du réseau.
➢ Entraînement du réseau avec le fichier test.
➢ Visualisations des données du test en apprentissage.
L’annexe I2 montre le code utilisé.
53
Carte de Kohonen pour la quantification de fonction
I-C3 ) RésultatsI-C3 ) Résultats
a°/ Visualisation Carte
Nous avons travaillés sur une carte [10*10] et voici l'affichage que l’on obtient au final (après 2633 itérations).
Figure 27: résultat test
Pour rappel:La couleur indique si un neurone a été très souvent activé, ainsi plus la couleur vire au rouge et plus le neurone a été activé.
Observation:On observe que les neurones les plus activés sont globalement très proches.
Le premier neurone à avoir été activé est le neurone 12.Les neurones en haut à gauche ont globalement activé pour le locuteur 1
tandis que les neurones du bas pour le locuteurs 2.
54
Carte de Kohonen pour la quantification de fonction
b°/ Autres CourbesAfin d’avoir une vision plus complète des spécificité du réseau d’autres
courbes ont été déterminé…
b-1°) Distance entre deux neurones victorieuxA chaque itération nous calculons la distance euclidienne du nouveau
neurone gagnant avec son prédécesseur.
Légende: Locuteur 1.
Locuteur 2.
Jingle sans font musical.
Jingle avec font musical.
Figure 28: résultat distance inter-neurone
55
Carte de Kohonen pour la quantification de fonction
Observations:On observe que la distance moyenne est plus élevée pour le locuteur 2 que
pour le locuteur 1.Pour les deux jingles; la distance inter neurone est nul ce qui signifie qu’un
seul neurone activé!!
b-2°)Nombre de neurone actifVoici une courbe qui indique le nombre total de neurone(s) activé(s) donc
lorsque qu’un nouveau neurone est actif on incrémente un compteur.
Figure 29: résultat nombre neurone actif On observe que le nombre de neurone augmente de façon significative que
lorsque un nouveau locuteur s’exprime sans fond musical.
56
Carte de Kohonen pour la quantification de fonction
b-3°) Bilan nombre d’activation par neurone Voici le nombre d’activation pour chaque neurone de la carte, nous avions
une carte 10 *10 donc nous avons bien au total 100 neurones. On Voit que le 12ème neurone à gagner 1811 fois, le second neurone (22ème) a gagné 180 fois.
Figure 30: résultat nombre d'activation
On observe qu’un seul neurone a gagné 1811 fois sur 2633 itérations ce qui représentent 70 % des victoires, la carte a donc mal appris car elle n'a pas utilisé toute la dynamique de codage dont elle disposé.
c°/ ConclusionLa carte a donc réalisée la segmentation des deux locuteurs. Nous avons
pas besoin d'un système aussi élaboré pour distinguer deux personnes mais ce premier test était surtout un coup d'essais pour étudier les différentes fonctions de la NPCLIB. Enfin on voit ici l'importance d'un bon paramétrage des arguments de la fonction d'apprentissage, sans cette condition pas de résultat possible.
57
Carte de Kohonen pour la quantification de fonction
Seconde partieSeconde partie
Description de laDescription de la carte NPCcarte NPC
58
Carte de Kohonen pour la quantification de fonction
II-A°) La carte NPCII-A°) La carte NPC
II-A1°) Différence Kohonen/SOM-NPCII-A1°) Différence Kohonen/SOM-NPC
Une carte de Kohonen [ OL02] réalise de la quantification vectoriel, c'est à dire qu'à un vecteur de dimension N seront associé, après apprentissage, un ou plusieurs neurones (dimension 2). La carte s'autoorganisera de manière aléatoire, donc il n'y aura pas de relation (connue) entre deux vecteurs et la position de leurs représentants sur la carte.
Par contre le modèle SOMNPC [GCZF05], dont nous allons décrire sa structure, a toute les propriétés d'une carte mais semble être munis en plus d'une relation d'ordre: deux fonctions proche dans l'espace des fonctions seront codés par deux neurones proche sur la carte: c'est ce que nous appelons une relation tonotopique.
a°/ Structure du réseau
Soit {Fi} un ensemble de fonction de RN vers un R.
SOMNPC [GCZF05] dispose de deux étages:
Le premier étage est constitué d'un réseau de neurone supervisé [BEN06], en entrée nous aurons un vecteur et nous imposons en sortie (la sortie désirée) l'image du vecteur par Fi. Les poids de ce réseau modéliserons à terme l'espace des fonctions .
Le deuxième étage est constitué par la connexion de toute les sorties du réseau de neurone à une carte de Kohonen [OL02].
Pour synthétiser, nous pouvons affirmer que le premier étage réalise l'apprentissage des fonctions et le second étage effectue la classification automatique des fonctions.
59
Carte de Kohonen pour la quantification de fonction
Nous allons voir , à travers un petit exemple sa structure:
Exemple: Pour chaque vecteur d'entrée X de la fonction Fi, on aura:
R3 > R X > Fi(X)
Figure 31:description codeur SOM-NPC
Remarque: L'apprentissage se fait, bien sûr, sur l'ensemble de définition des fonctions
à apprendre.
Pour récapituler:
Kohonen: X > neurone(s) == Quantification vectorielle.
SOMNPC: (X,f(X)) > neurone(s) == Quantification fonctionnelle.
60
Carte de Kohonen pour la quantification de fonction
Vecteur Entrée
Neuronescouche 1
Neuronescouche 2
Sortie réel
Sortie désiré
Carte Kohonen
II-A2°) Fonctions
Les trois fonctions de la NPCLIB nécessaires pour la paramétrisation et les tests d'un codeur SOMNPC ( où encore NPC1) sont:
● npc1def: npc1def définit un codeur NPC1 : initialisation aléatoire ou unitaire des poids de la première couche (paramètres du codeur).
● npc1khnparam: npc1khnaparam effectue la paramétrisation par autoorganisation d’un codeur NPC1 partant d’une structure initiale donnée en premier argument . L’algorithme d’apprentissage utilisé est du type gradient total ou stochastique avec pas d’apprentissage fixe .
● npc1krun: npc1krun permet de réaliser des tests de la carte apprise avec la fonction
npc1khnparam.
61
Carte de Kohonen pour la quantification de fonction
II-B°) Étude performancesII-B°) Étude performances carte SOM-NPCcarte SOM-NPC
Ce chapitre présente une petite étude sur la quantification de fonction d’ordre 1 et d’ordre 2 sur la carte de Kohonen SOMNPC.
Des tests en apprentissage et en généralisation y ont été effectués. Nous aborderons la notion de tonotopie. De plus nous analyserons la répartition des neurones pour l’apprentissage de plusieurs classe de fonctions (quatre).
II-B1°)Vecteur d'entrée dimension unII-B1°)Vecteur d'entrée dimension un
a°/ Test en a pprentissage
a-1°) Représentation des 10 fonctions de la base d'apprentissage:
Voici la représentation de dix fonctions paraboliques concaténés que nous allons apprendre au réseau.
Figure 32: fonctions à apprendre
62
Carte de Kohonen pour la quantification de fonction
f1 f2 f3 f4 f5 f6 f7 f8 f9 f10
a-2 °) Expressions:
Les fonctions ont pour expressions:
avec Ki = [2.5 3 3.5 4 4.5 5 5.5 6 6.5 7] et i = [|1 10|]Nous allons maintenant construire une base formée de chacune de ces
fonctions.
a-3°) Création de la base d'apprentissage:
Pour créer la base d'apprentissage nous concaténons, pour chaque fonction fi, le vecteur d'entrée (de dimension 1) et son image par fi.
Figure 33: base à apprendre
Nous obtenons le motif de la figure 33 que nous répétons 100 fois en y incorporant du bruit (nous faisons l'hypothèse de l'indépendance du bruit mais nous y reviendrons) pour créer la base final.
63
Carte de Kohonen pour la quantification de fonction
f1 f2 f3 f4 f5 f6 f7 f8 f9 f10
a-4°) Codage NPC
Voyons maintenant le codage effectué pour apprendre ces fonctions au réseau
FRAMESIZE= 128 une trame correspond à une fonctionFRAMESHIFT= 0 Pas d'entrelassementCODESIZE= 2 deux cellules pour la couche 1.WINPRED=1 Vecteur d'entrée de dimension 1.NPCK_DIMX= 10 dimension en abscisse.NPCK_DIMY=10 dimension en ordonnée.NPCK_W1=npc4.param0 couche 1 avant apprentissageNPCK_NW1=npc4.param1 couche 1 après apprentissageNPCK_NW2=npc4.map1 couche carte Kohonen après apprentissage.
NPCK_VOISINAGE="D square g 10 G 0.1" Nous prendrons toujours le voisinage maximalNPCK_PARAMITER= 30
a-41°) Structure du réseau Pour une meilleur compréhension voici la schématisation physique du code.
Figure 34: structure réseau
64
Carte de Kohonen pour la quantification de fonction
entreesortie
.
.
.
entreesortie
Remarque:
a-42° ) C odage
Les différentes instructions à saisir sont représenté cidessous.
• Découpage en trame segframe base.bin base.frm $FRAMESIZE $FRAMESIFT t short
• Permutation des données permut base.frm $FRAMESIZE base.frm t short
• Définition du réseau prédictif npc1def $CODESIZE $WINPRED o $NPCK_W1
• Algorithme d'apprentissage npc1khnparam $NPCK_W1 base.frm $FRAMESIZE $NPCK_PARAMITER $NPCK_DIMX $NPCK_DIMY o $NPCK_NW1 l 0.1 f $NPCK_NW2 Q error.Q $NPCK_VOISINAGE E
a-5°) RésultatsAprès calcul, nous avons effectués un test en apprentissage sur la carte, a
l’aide de la commande npc1krun, dont voici les arguments,
npc1krun npc4.param1 npc4.map1 $FRAMESIZE $FRAMESIFT $NPCK_DIMX $NPCK_DIMY i testf1 G 100 b 6400 m
Remarque: Le ficher d’entrée «testf1» n’est autre que le motif d’apprentissage de la figure 32.
65
Carte de Kohonen pour la quantification de fonction
Le programme originel passe d’un vecteur d'entrée à un autre en réalisant une translation d’une seul case, il a donc fallut modifier le code pour pouvoir réaliser une translation de deux cases (Il en va de même pour l’algorithme de test « npc1krun »).
Figure 35: résultat apprentissage
Ordonnancement des fonctions:Pour mieux observer la relation d’ordre de la carte voici le cheminement
pour chaque fonction.
Tableau 11: Ordonnancement résultat grille 10*10
Y/XY/X 11 22 33 44 55 66 77 88 99 1010
11 f4 f3 f1
22
33 f2
44 f5
55
66 f6
77 f8
88
99 f9 f7
1010 f10
66
Carte de Kohonen pour la quantification de fonction
Observations:Nous remarquons que nous avons bien une spécialisation d’un neurone pour
chaque fonction.Cependant nous n’avons pas totalement une relation tonotopique entre
chaque fonction. Cette relation est local (exemple: {f1,f2, f3} ou {f8, f9, f10} {f6,f7}).
Interprétation:Nous constatons que l'algorithme tente d'avoir un répartition la plus
homogène possible sur la carte au détriment de la relation tonotopique.
Conclusion:Le programme tente donc de répondre au mieux au compromis
tonotopie/répartitions des données.
Hypothèse:Pour palier à ce problème, pourquoi ne pas avoir une carte rectangulaire
pour ainsi avoir une direction privilégié.
a-6°) Test pour une carte 10*3:
Nous reprenons le même programme pour une carte 10*3 est voici le résultat:
Tableau 12: Ordonnancement résultat grille 10*3
11 22 33 44 55 66 77 88 99 1010
11 f8 f7
22 f9 f6 f5 f4 f3 f2 f1
33 f10
67
Carte de Kohonen pour la quantification de fonction
a-7°) Test Pour une carte 30*3
Nous prenons maintenant une carte 30*3:
Figure 36: Ordonnancement résultat grille 30*3
Observation: Nous avons bien ici deux fonctions proches pour deux neurones proches.
Conclusion:En effectuant une disymétrisation de la carte nous obtenons bien une
relation tonotopique.
b°/ bruit
Ce chapitre présente une petite étude sur le biais apporté par le bruit . Nous verrons dans une première partie les tests en apprentissage d'une base bruité alors que cette dernière ne l'était pas lors de l'apprentissage. Puis nous verrons le processus inverse: une base bruité apprise pour un test sur la même base mais débruité.
68
Carte de Kohonen pour la quantification de fonction
b-1°/ Expression base non bruité(f):La base utilisé est celle du chapitre précédent sans le bruit bien sûr.On exprime la base non bruité par la fonction f tel que:
f(x) =U(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10)(x)
b-2°/ Expression base bruité(b3):
Figure 37: allure b3 sur 100 échantillons
b-3°/ Apprentissage Nous reprenons les paramètres du chapitre précédent pour l'apprentissage a un détail près la dimension de la grille est maintenant 30*3.
b-31°) Apprentissage base non bruitéDans cette partie nous étudions les effets du bruit sur le test en
apprentissage. La base non bruité est apprise par la carte.Ensuite la base non bruité est testé sur la carte, les neurones gagnants
seront donc les références (case représenté en jaune).
69
Carte de Kohonen pour la quantification de fonction
L'amplitude du bruit est compris entre plus sept et moins sept.
Tableau 13: neurones référents
11 22 33 44 55 66 77 88 99 1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
2211
2222
2233
2244
2255
2266
2277
2288
2299
3300
11 f1 f3 f6 f7 f9
22 f2
33 f4 f5 f8 f10
Observations: Deux fonctions proches sont bien codées par deux neurones relativement
proches.
Voyons les modifications apportées par le bruitage de la base. Voici le résultat du test de la base bruité. Les dix fonctions seront désigné par les hi.
Tableau 14: résultat fonctions bruité
11 22 33 44 55 66 77 88 99 1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
2211
2222
2233
2244
2255
2266
2277
2288
2299
3300
11 h1
h3
h6
h7
h9
22 h2
h4
33 h5
h8
h10
Observations:Le bruit n'a pas eu d'influence sur la position de la plupart des neurones
gagnants. Seul la fonction quatre (h4) est codée par un autre neurone toutefois ce dernier est proche du neurone référent. En augmentant l'amplitude du bruit, une seconde fonction est codé par un nouveau neurone (h8). nous perdons localement la propriété de tonotopie , ainsi la fonction bruité h7 est plus proche de h9 que de h8.
70
Carte de Kohonen pour la quantification de fonction
Remarque: J'ai rajouté un dernier test, pour voir la robustesse de la quantification. Une nouvelle base est donc crée avec un bruit d'amplitude plus élevé [25 25].On constate alors que la moitié des fonctions bruitées ne sont plus codées par leurs neurones référents mais par un proche voisin. De plus la propriété de tonotopie est presque intégralement conservée.
b32°) Apprentissage base bruité Maintenant la base bruité est apprise.
➢ La base bruité d'apprentissage est testée, les neurones gagnants seront donc les références (case représenté en jaune).
Tableau 15: neurone référent
11 22 33 44 55 66 77 88 99 1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
2211
2222
2233
2244
2255
2266
2277
2288
2299
3300
11 f3
f8
f10
22 f2
f4
f7
33 f1 f5
f6
f9
La base non bruité est maintenant testé sur cette carte. Le tableau suivant (Tableau 16) nous montre ce que l'on obtient:
71
Carte de Kohonen pour la quantification de fonction
Tableau 16: résultat fonctions non bruité
11 22 33 44 55 66 77 88 99 1100
1111
1122
1133
1144
1155
1166
1177
1188
1199
2200
2211
2222
2233
2244
2255
2266
2277
2288
2299
3300
11 b3
b8
b10
22 b2
b4
b7
33 b1 b5
b6
b9
Observations:Le test nous donne un résultat identique.
Conclusion:
Dans cette étude nous avons comparés le test d'apprentissage d'une base non bruité avec celui d'une base bruité et réciproquement (bruité/non bruité).
Le constat est simple le bruit n'altère pas les propriété de tonotopie de la carte de plus si un nouveau neurone vient à gagner, ce dernier sera proche de son neurone référent.
Perspectives Il aurait été intéressant d'étudier l'amplitude limite du bruit pour laquelle la classification de fonction perd sa relation d'ordre.
72
Carte de Kohonen pour la quantification de fonction
c°/ Test en généralisation
c-1°) Étude simple
c-11°) Représentation des 10 fonctions de la base d'apprentissage:
Nous allons réaliser une étude sur la généralisation avec des fonctions d'ordre 1.
Figure 38: Base d'apprentissage
c -12°) Expressions fonction d'apprentissage:
Les fonctions ont pour expressions:
avec Ki = [200 240 280 320 360 400 440 480 520 560]
Nous avons aussi réalisés une base de test:
73
Carte de Kohonen pour la quantification de fonction
h1 h2 h3 h4 h5 h6 h7 h8 h9 h10
Figure 39: Base de test
c -13°) Expressions fonction de test:
Les fonctions ont pour expression
avec Ki = [225 270 315 360 405 450 495 540]
Pour pouvoir comparer nos résultats avec ceux de la partie I nous avons gardé scrupuleusement les même paramètres.
c-14°) Résultats
legende: cellule gagnante fonctions apprise:cellule gagnante fonctions test:jaune: base d'apprentissagevert: base de test
74
Carte de Kohonen pour la quantification de fonction
hi Ki
gi Ki
g1 g2 g3 g4 g5 g6 g7 g8 g9 g10
Tableau 17: Ordonnancement généralisation
Y/XY/X 11 22 33 44 55 66 77 88 99 1010
11 h1 200 g1 225 h2 240 h4 320
22
33 g2 270
44 g7 495 h3 280 g3 315 h5 g4 360
55
66 h9 520
77 h8 480 h6 400
88 g8 540 g5 405
99 h7 440 g6 450
1010 h10 560
Interprétation:Pour le test en généralisation (en vert) on voit bien que les nouvelles
fonctions s'intercalent bien en fonction de la valeur de leur pente.
Exemple: La première fonction de la base de test est entre les deux première fonction
de la base de d’apprentissage ce qui est logique car:
h1’ < g1' < h2’
Cette propriété est vérifiée pour toutes les fonctions de la base d’apprentissage.
Conclusion:Il semble bien qu’une relation d’ordre ce soit établie suivant une loi définie
par le réseau (flèche).
75
Carte de Kohonen pour la quantification de fonction
c-2°) Étude approfondie
c-2 1°) Représentation des 5 fonctions de la base d'apprentissage: Nous prenons cinq fonctions paraboliques concaténés et nous les apprenons
au réseau.
Figure 40: Base d'apprentissage
c-22°) Expressions:Les fonctions ont pour expressions:
Avec Ki = [2.5 3.5 4.5 5.5 6.5] pour i = [|1 5|]
c-23°) Codage NPC
Les paramètres suivant calibrerons notre apprentissage.FRAMESIZE= 128FRAMESHIFT= 0CODESIZE= 5WINPRED=1NPCK_DIMX= 5NPCK_DIMY=5NPCK_W1=npc4.param0
76
Carte de Kohonen pour la quantification de fonction
f1 f2 f3 f4 f5
NPCK_NW1=npc4.param1NPCK_NW2=npc4.map1
NPCK_VOISINAGE="D square g 5 G 1" NPCK_PARAMITER= 30
c-24°) RésultatsAprès calcul, nous avons effectués un test en apprentissage sur la carte, a
l’aide de la commande npc1krun:
Tableau 18: résultat d'apprentissage
// 11 22 33 44 55
11 f2 3.5
22 f4 5.5 f3 4.5
33
44
55 f5 6.5 f1 2.5
Observation: La carte occupe au mieux l'espace.
On pourrait se demander comment ce répartit l' ensemble des fonctions non apprise par la carte:
Nous avons donc crées une base de test dont les valeurs de Ki évolue entre 2.5 et 7.5 par pas de 0.1. Nous obtenons le résultat suivant:
77
Carte de Kohonen pour la quantification de fonction
Tableau 19: résultat en généralisation
// 11 22 33 44 55
11 [4.8 5.2] [4 4.2] [3.2 3.5]
22 [5.3 5.9] [4.3 4.7]
33 [2.8 3.1]
44 3.9
55 > 6 [3.7 3.8] [2.5 2.7]
exemple:
Les fonctions
Observations : Nous constatons que:
1. Tout les neurones n'ont pas appris.
2. Chaque neurone spécialisé ne contient pas une unique fonction mais un sousensemble de l'espace des fonctions.
3. L'ensemble des fonctions dont la pente est supérieur à la plus grande fonction apprise est attribué à un seul neurone, neurone que je nommerais «neurone borne supérieur »(Des tests ont même été validé avec des ki > 100).
Nous allons voir l'intérêt de ce résultat à travers un exemple très simple.
78
Carte de Kohonen pour la quantification de fonction
f1(x) =2.5* x2
g(x)= 2.6 * x2
j(x) = 2.7 * x2
sont codés par le neurone (5,5)
Si nous voulons qu'une carte apprenne la fonction f(x) = K*x2 avec K ne variant non pas entre 2.5 et 6.5 mais entre 0 et 60 avec une bonne précision, nous aurons tout intérêt à avoir un base d'apprentissage avec un grand nombre de fonctions et une grande grille.
Figure 41: carte NPC-1
Le problème est très simple le temps de calcul sera très élevé.Pourquoi ne pas plutôt avoir 3 cartes de dimensions plus petites?
On leur n'apprendrait alors des sous ensembles d'apprentissage, par exemple:
Carte 1:Une base d'apprentissage avec les k compris entre 0 et 20.
Carte 2:Une base d'apprentissage avec les k compris entre 20 et 40.
Carte 3:Une base d'apprentissage avec les k compris entre 40 et 60.
Figure 42: sous carte
79
Carte de Kohonen pour la quantification de fonction
Algorithme:Lorsque l'on testera une fonction quelconque, on commencera par la
première carte. On approximera son expression en fonction de la position du neurone gagnant sauf si ce dernier ce trouve être le neurone borne supérieur auquel cas on testera la fonction sur la seconde carte et ainsi de suite.
c-3°) Étude vecteur entrée
Un nouvelle avantage de la carte SOMNPC par rapport à une carte de Kohonen classique:
Pour une carte de Kohonen, la taille du vecteur d'entrée est fixe. Pour le codeur NPC nous avons la possibilité de prendre un sous ensemble de l'espace de définition, car après apprentissage d'une fonction, on pourrait penser que nous n'avons pas besoin de l'ensemble des points pour la caractériser.
La taille du vecteur d'entrée n'est donc pas nécessairement fixe en quantification fonctionnelle.
c-31°) Base de test:Maintenant voyons quelle impacte aura le sous échantillonnage de la base
d'apprentissage. Nous reprenons la base de la première étude (test en apprentissage) et nous comparons avec les même fonction mais avec des points en moins (base de test).
c-32°) RésultatsNous supprimons un point sur dix de chacune des dix fonction apprise pour
construire la base de test.
légende: cellule gagnante fonctions apprise:cellule gagnante fonctions test:jaune: base d'apprentissagevert: base sous échantillonnée
80
Carte de Kohonen pour la quantification de fonction
hi Ki
gi Ki
Tableau 20: Ordonnancement généralisation
Y/XY/X 11 22 33 44 55 66 77 88 99 1010
11 h10 h7
22 g10 g8 g7
33 h9 h8
44 g9 h6
55 g6
66 g4 h5
77 g3 g5
88
99 h2/g2
h4
1010 h1/g1 h3
Observation:Nous constatons qu'il y a des différences parfois très grande entre une
fonction et son homologue sous échantillonné.
Conclusion:Les résultats sont correcte pour certaines fonction (h1,h2,g5,g7,g8,g9,g10)
mais très mauvaise pour d'autres (g3,g4,g5).
Interprétation:Je pense que le résultat moyen obtenus est principalement dût au fait que
l'ensemble de définition de chaque fonction était déjà, à la base, trop petit pour pouvoir faire du sous échantillonnage. Il serait donc utile de réaliser ce test avec des trames plus grandes.
81
Carte de Kohonen pour la quantification de fonction
d°/ clusterisation
Nous allons tout d'abord voir le rôle, ou plutôt, les fonctions attribuées à chaque neurone présent sur la carte après apprentissage de plusieurs ensembles de fonctions et ensuite nous verrons si il y a clusterisations.
d-1°) Représentation des fonctions de la base d'apprentissage:Nous prenons maintenant 4 classes de fonctions différentes:
Figure 43: base d'apprentissage
Nous gardons les mêmes options que pour le test en apprentissage (a°/) sauf que la grille est de taille 16*16 et que la première couche dispose maintenant de cinq cellules .
82
Carte de Kohonen pour la quantification de fonction
f
parabole
g
racine carré hyperbole sinus
h i
d-2°) RésultatsVoici la représentation du test en apprentissage.
Tableau 21: résultat apprentissage
11 22 33 44 55 66 77 88 99 1010 1111 1212 1313 1414 1515 1616
11 g7 f9 i1 f6 i2 i3
22 g10 g9 g1
33 g8 g2 f7
44 i4
55 g6 g4 i5
66 g5 g3 f8 i6
77 i7
88 f10 i8 i10
99 f1 f5 i9
1010 f4
1111 h5
1212 f3 h10
1313 h4 h7 f2
1414 h3 h9
1515 h1
1616 h2 h6 h8
Observations:Le réseau a bien réussi à dissocier les fonctions sinus, hyperboles et racines
carré. Par contre ce n'est pas le cas pour les fonctions carrés.
83
Carte de Kohonen pour la quantification de fonction
d-3°) SchématisationVoici la schématisation du résultat obtenue:
Figure 44: schématisation
Conclusion:Les classes de fonctions hyperboles (c1), racine carré (c2) et sinusoïdale (c3)
sont bien dissociées, par contre la classe de fonction paraboliques est entremêlé avec c2 et c3. La fonction qui ressemble le moins aux autres (hyperbole) est celle qui a les neurones les plus éloignés des autres classes de fonctions.
Perspective:Notre test s'est fait pour seulement cinq cellules sur la première couche or
ces neurones modélisent l'espaces des fonctions {c1,c2,c3,c4}. On voit bien que la modélisation faite, est correcte pour trois des quatre classes, il serait donc intéressant de reproduire le test avec un nombre de cellules plus élevées .
84
Carte de Kohonen pour la quantification de fonction
II-B2°)Vecteur d'entrée dimension supérieur 1II-B2°)Vecteur d'entrée dimension supérieur 1
Nous avions toujours pris jusqu'alors des vecteurs d'entrée de dimension 1, nous allons maintenant voir un exemple avec un vecteur d'entrée de dimension deux.
a°/ Fonction gaussienne
a-1°) Expressions des fonctions de la base d'apprentissage:Nous apprenons cinq fonctions gaussienne pour lesquels nous faisons varier
leur variances de 2 à 10 par pas de 2.
a-2°) Résultats en apprentissage
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
1 f1 f5
2 f2 f3 f4
Figure 45: résultat gaussienne
85
Carte de Kohonen pour la quantification de fonction
variance =10
variance = 8
variance = 2
variance = 4 variance = 6
Observations:Comme la fonction f1 est proche de la fonction f3, nous n'avons plus la
relation tonotopique d'une carte a topologie rectangulaire entrevu jusqu'alors.
Conclusion:Les gaussiennes ne sont peux être pas les meilleurs fonctions pour tester la
tonotopie d'une carte SOMNPC car lorsque l'on varie la variance, l'amplitude de la fonction change aussi. En effet nous avons affaire à une double linéarité de fonctions qui est plus difficilement interprètable.
b°/ Fonction sinusDepuis le début, nous travaillons avec, en entrée du réseau, un
vecteur et en sortie de la première couche son image par une fonction donnée. Or rien ne nous empêche de prendre n échantillon d'un signal en entrée et essayer de déterminer l'échantillon n+1 en le plaçant en sortie du réseau , c'est ce que l'on appelle de la prédiction.
b-1°) Expressions des fonctions de la base d'apprentissage:Nous disposons du signal sinusoïdal (figure 46) tout les deux cent points la
fréquence augmente de cent Hertz. Le signal évoluera donc entre cent et mille Hertz.
Figure 46: signal sinusoïdal
86
Carte de Kohonen pour la quantification de fonction
b-2°) Algorithme:Le vecteur d'entrée sera composé des seize premiers échantillons du signal
et la sortie désiré sera le 17 ème. Puis après l'apprentissage du premier vecteur, on prend le vecteur d'entrée suivant allant du deuxième échantillons au 17 ème pour mettre en sortie désiré le 18 ème échantillon, on réitère l'opération jusqu'à avoir balayé tout le signal.
b-3°) Résultats: Nous avons aussi crée des signaux disposant de fréquence non apprise par
le réseau {250 Hz, 650 Hz, 450 Hz, 850 Hz}.
Légende:en noir Fonction d'apprentissageen rouge: Fonction test
Tableau 22: résultat en généralisation
// 11 22 33 44 55 66 77 88 99 1010
11 200 Hz 100 Hz
22 250 Hz
33 300 Hz
44 650 Hz 400 Hz
55 600 Hz
66 500 Hz450 Hz
77 700 Hz 800 Hz
88
99 900 Hz850 Hz
1010 1000Hz
87
Carte de Kohonen pour la quantification de fonction
Observation:Nous retrouvons la tonotopie local d'une carte à topologie carré. De plus le
test en généralisation est assez satisfaisant.
Conclusion:Les résultats obtenus en prédiction ont sensiblement les mêmes propriétés
que précédemment.
IIB3°)ConclusionIIB3°)Conclusion
Dans cette seconde partie, nous avons effectués:
● Des tests en apprentissage et en généralisation.● Nous avons observés l'influence du bruit sur une base d'apprentissage.● Nous avons vus la répartition de plusieurs ensemble de fonctions.● Enfin nous avons réalisés des tests en apprentissage en augmentant la
dimension du vecteur d'entrée.
Nous pouvons conclure que l'on obtient bien la quantification fonctionnelle, c'est à dire une fonction sera codé par un neurone. Nous avons aussi observés localement une relation tonotopique pour des cartes à topologie carré, elle s'avère complète pour des cartes à topologie rectangulaire. En généralisation les fonctions non apprises respecte bien une relation d'ordre, et les fonctions sous échantillonnées sont relativement proches de leur référent.
Toutes ces propriétés présente une réel avancé dans la classification automatique de signaux.
88
Carte de Kohonen pour la quantification de fonction
Troisième partieTroisième partie
Test sur un signal Test sur un signal complexecomplexe
Pour finir nous allons faire une étude très simple sur la caractérisation de phonèmes.
89
Carte de Kohonen pour la quantification de fonction
III-A°) Qu'est qu'un phonèmeIII-A°) Qu'est qu'un phonème
III-A1°) DescriptionIII-A1°) DescriptionDans le domaine de la linguistique, un phonème [Rac05] est la plus petite
unité discrète ou distinctive (c'estàdire permettant de distinguer des mots les uns des autres) que l'on puisse isoler par segmentation dans la chaîne parlée. Un phonème est en réalité une entité abstraite, qui peut correspondre à plusieurs sons. Il est en effet susceptible d'être prononcé de façon différente selon les locuteurs ou selon sa position et son environnement au sein du mot (voir allophone). On transcrit traditionnellement les phonèmes par des lettres placées entre des barres obliques: /a/, /t/, /r/, etc., selon la règle un phonème = un symbole.
L'identification des phonèmes d'une langue se fait en construisant des paires minimales, c'estàdire des paires de mots de sens différents et qui ne diffèrent dans leur forme sonore que par un seul son (ce son peut alors être considéré comme un phonème).
III-A2°)Présentation BASE NTIMITIII-A2°)Présentation BASE NTIMITLes phonèmes [Rac05] utilisés sont tirés de la base Timit. Cette base de
données phonétique contient des discours en anglais américain de très bonne qualité.
III-B°) TestIII-B°) Test
III-B1°) phonème ao et sIII-B1°) phonème ao et s
La bibliothèque NPCLIB dispose d'un grand nombre de fonction pour travailler sur les phonèmes. Nous avons effectués un test avec un sous ensemble de phonèmes /ao/ et /s/ du dialecte de NouvelleAngleterre . Le code se trouve en annexe I3°/
90
Carte de Kohonen pour la quantification de fonction
a°/ Test en apprentissage:
La fonction khn2map (tableau 23) permet de visualiser la répartition des phonèmes après apprentissage.
Légende:en vert: phonème /s/.en jaune: phonème /ao/.
Tableau 23: résultat en apprentissage des deux phonèmes
11 22 33 44 55 66 77 88 99 1010
11 s s s s
22 s s
33 s s s
44 s
55 s ao
66 s ao ao
77 s ao ao
88 ao
99 ao ao
1010 ao s
Observation: Nous avons ici une segmentation nette des deux phonèmes. Les phonèmes
/s/ se trouvent majoritairement en haut à gauche alors que les phonèmes /ao/ sont en bas à droite.
91
Carte de Kohonen pour la quantification de fonction
b°/ Test sur des mots
Nous avons ensuite testé des mots anglais qui contiennent approximativement les phonèmes appris par la carte à savoir: sass, cot, caught et coat.
b-1°) Mot sassLe mot « sass » contient le phonème /s/ et un phonème proche de /ao/.
Figure 47: résultat mot sassObservations:
Les deux régions correspondant aux deux phonèmes /ao/ et /s/ sont bien visible sur la carte.
92
Carte de Kohonen pour la quantification de fonction
b-2°) Mot cotLe mot « cot » dispose d'un phonème proche de /ao/.
Figure 48: résultat mot cotObservation: On remarque que seul la région correspondant au phonème /ao/ est visible sur la carte.
b-3°) Mot caught
Figure 49: résultat mot caught
93
Carte de Kohonen pour la quantification de fonction
Observation: On remarque que seul la région correspondant au phonème /ao/ est visible
sur la carte.
b-4°) Mot coatLe mot « caught » dispose d'un phonème proche de /ao/.
Figure 50: résultat mot coat
Observation: On remarque que seul la région correspondant au phonème /ao/ est visible
sur la carte.
94
Carte de Kohonen pour la quantification de fonction
c°/ Comparaison de deux mots
Lorsque l'on écoute caught et coat on se rend compte qu'ils ont pratiquement la même prononciation, voyons maintenant si il en est de même avec leurs représentations respective sur une carte SOMNPC.Remarque:
Nous utilisons la commande «comparer» de l'afficheur mapview pour mettre en arrière plan les neurones activés lors du test du mot coat et nous le comparons au mot caught.
Figure 51: résultat comparaison
Observation:Nous constatons que deux mots proches sont codés, à peu de chose près, par
les mêmes neurones.
95
Carte de Kohonen pour la quantification de fonction
III-C°) ConclusionIII-C°) ConclusionDans ce chapitre nous avons réalisés l'apprentissage de deux phonèmes et
nous avons testés des mots sur la carte. Nous avons un relation tonotopique entre deux mots proche et leur
représentation sur la carte.Ce résultat est très intéressant car il introduit une étude à plus au niveau
sur la caractérisation du bruit .
96
Carte de Kohonen pour la quantification de fonction
ConclusionConclusionJ'ai effectué six mois de stage sur la quantification de fonction. Ce stage a
été pour moi l'occasion de mettre en pratique et d'enrichir des connaissances touchant à des disciplines diverses comme le langage C, C++, les réseaux neurones, le réseaux, le traitement du signal, la phonétique... Les étapes de mon travail ont été difficile à gravir, et beaucoup de retour en arrière ont été nécessaire. Ce stage c'est articulé en trois phases:
La première grande phase fut le développement de l'afficheur. Ce travail a donné lieux à une réflexion sur des outils susceptible d'extraire des informations pragmatique (courbes statistiques, courbe bilan, rapport, etc...) sur un traitement d'une carte de Kohonen.
La seconde phase importante fut l'étude des performances du réseau. SOMNPC réalisant de la quantification de fonction, nous devions réaliser des études de fonction à travers la carte. L'étude de fonction donne un éventail de possibilités quasi infini. j'ai donc étudié l'influence du bruit, la généralisation de fonctions et de vecteur d'entrée (sous échantillonnage), clusterisation, etc... J'ai aussi réalisé d'autre études qui ne paraissent pas dans ce mémoire (pour peu qu'il ne fasse pas 200 pages) comme le sens de variation (exemple: représentation de dix fonctions croissantes et 10 décroissante sur une carte) ou encore la segmentation d'ordre ( exemple: dix fonctions d'ordre un et dix fonction d'ordre deux). Avec plus de temps, aurait put être aborder un aspect important :l'influence d'une discontinuité sur un signal.
Enfin la dernière phase consistait à étudier SOMNPC sur des signaux réels. J'ai voulu montrer dans cette partie, que l'on pouvait définir un signal de parole comme un sous ensemble de fonctions ordonnées. Malheureusement, faute de temps, je n'ai pas pu voir la classification de toute les familles de consommes (fricative, plosive, nasal, etc..) sur une carte 50*50 que je voulais montrer au final.
Pour finir, je dirais que j'ai trouvé ce stage intéressant car il y avait une grosse partie développement ( ce dernier était dédié au service de la recherche ) et une grosse partie recherche dans un domaine non exploré à savoir la quantification de fonction.
97
Carte de Kohonen pour la quantification de fonction
BibliographieBibliographie[BEN06]
[Cast03]
[BOU93]
[DRE99]
[Gas061]
[GCZF05]
98
Carte de Kohonen pour la quantification de fonction
BENNANI Younes. Les réseaux de neurones. In: Apprentissage connexionniste. Hermes, 2006, 362p. ISBN : 9782746213371 / 2746213370.
Christian Casteyde. La bibliothèque standard C++. In Cours de C/C++.2003
BOUSSAID. AutoOrganisation dans un réseau de neurones. In Pluridisciplinarité dans les sciences cognitives. Hermes,1993, 288p. ISBN : 2866013735.
G. Dreyfus. Une application de classification utilisant un réseau de Kohonen. In:les réseaux de neurones. Eyrolles, 1999.ISBN13 : 9782212122299
Gas. Cartes de Kohonen pour la classification de fonctions[en ligne].Disponible sur: http://www.edu.upmc.fr/sdi/signalimages/BGas/Stages/M2/Kohonen/Kohonen.html(consulté le 9 mars 2007).
B. Gas, M. Chetouani, J.L. Zarader, F. Feiz. The Predictive SelfOrganizing Map : application to speech features extraction [en ligne].Disponible sur http://www.edu.upmc.fr/sdi/signalimages/BGas/Stages/M2/Kohonen/gasWSOM05.pdf (consulté le 14 mars 2007).
[GCZ06]
[ISIR07]
[ OL02]
[QT1]
[QT2]
[Rac05]
[Wik01]
99
Carte de Kohonen pour la quantification de fonction
B. Gas, M. Chetouani, J.L. Zarader. Extraction de caractéristiques non linéaire et discriminante :application à la classification de phonèmes [en ligne]. Disponible sur http://www.edu.upmc.fr/sdi/signalimages/BGas/Stages/M2/Kohonen/gasTS06.pdf (consulté le 14 mars 2007).
Institut des Systèmes Intelligents et Robotique [en ligne]. Disponible sur: http://isir.robot.jussieu.fr/ (consulté le 11 mars 2007).
J.M. Ogier et P. Loonis. Cartes de Kohonen[en ligne].Disponible sur:http://perso.orange.fr/kohonen/ (consulté le 19 mars 2007)
Qt's Classes[en ligne]. Disponible sur: http://doc.trolltech.com/4.2/classes.html (consulté le 28 mars 2007).
Forum des développeurs QT[en ligne]. Disponible sur: http://www.qtfr.org/ (consulté le 2 avril 2007).
Julien Rachedi. Reconnaissance et classification de phonèmes. 2005, Laboratoire IRCAM, 50p.
Réseau de neurone [en ligne]. Disponible sur: http://fr.wikipedia.org/wiki/Réseau_de_neurones (consulté le 15 mars 2007).
Annexes:Annexes:
Annexe I°1/ Rapport automatique............................................page 101
Annexe I°2/ Code signal radio .................................................page 104
Annexe I°3/ Code phonème /ao/ et /s/ .......................................page 105
100
Carte de Kohonen pour la quantification de fonction
==========================================================================================
Annexe I°-1/ Rapport automatiqueAnnexe I°-1/ Rapport automatique==========================================================================================
Voici les trois pages du rapport imprimable générées par l'interfacemapview:
101
Carte de Kohonen pour la quantification de fonction
102
Carte de Kohonen pour la quantification de fonction
103
Carte de Kohonen pour la quantification de fonction
==========================================================================================
Annexe I°-2/ Code signal radioAnnexe I°-2/ Code signal radio==========================================================================================
Voici le code utilisé pour le test d'apprentissage effectué sur une carte de Kohonen:
# Chargement du signal :# Chargement du signal :wavread rmc.wav rmc.short t short
# segmentation en trames de 512 :# segmentation en trames de 512 :segframe rmc.short rmc.frm 512 256
# Codage LPC 12 coefficients :# Codage LPC 12 coefficients :codlpc rmc.frm 512 12 rmc.lpc
#definition d'une carte de Kohonen 2D 10x10#definition d'une carte de Kohonen 2D 10x10khn2def 12 10 10 o carte0.khn2def
#Apprentissage de la carte#Apprentissage de la cartekhn2train carte0.khn2def carte100.khn2def rmc.lpc 300 l 0.1 v 8 Q error.Q P 10
#test #test khn2run carte100.khn2def rmc.lpc rmc.label m rmc.map
104
Carte de Kohonen pour la quantification de fonction
==========================================================================================
Annexe I°-3/ Code phonème ao et sAnnexe I°-3/ Code phonème ao et s==========================================================================================
Voici le code utilisé pour le test d'apprentissage des phonème /s/ et /ao/ effectué sur une carte NPC1:
# Chargement des phonèmes ao et s :# Chargement des phonèmes ao et s :timitgetphn p /media/cdrom1 s+ao.phone s+ao.index s+ao.size s+ao.label ao s d DR1 k AKS0 s SA1,SA2
# segmentation en trames de taille 256 :# segmentation en trames de taille 256 :segframe s+ao.phone s+ao.index s+ao.size s+ao.frm 256 128 s+ao.label s+ao.frm.label e
#Permutation des données :#Permutation des données :permut s+ao.frm 256 s+ao.frm o s+ao.permut t shortpermut s+ao.frm.label 1 s+ao.frm.label i s+ao.permut t ascii
#definition d'une carte NPC1 2D 10x10#definition d'une carte NPC1 2D 10x10npc1def 16 16 o npc4.param0
#Apprentissage de la carte#Apprentissage de la cartenpc1khnparam npc4.param0 s+ao.frm 256 10 10 10 o npc4.param1 l 0.1 f npc4.map1 Q error.Q D gauss g 10 G 0.1 i 0
#test #test npc1khnrun npc4.param1 npc4.map1 s+ao.frm s+ao.map 256 10 10 W winner s
# classification# classificationkhn2map 10 10 winner s+ao.frm.label o nw2.labelkhn2class 10 10 nw2.label winner winner.label
# score# scorescore winner.label s+ao.frm.label score winner.label s+ao.frm.label
105
Carte de Kohonen pour la quantification de fonction
Recommended