Travaux Pratiques, Séance 1

Transcription

Travaux Pratiques, Séance 1
UE Méthodes connexionnistes, Apprentissage et Fusion d’informations
Public : Master SDI, Parcours M2 TSSI, SIR, IMI
Travaux Pratiques, Séance 1
1) Perceptron mono-couche
Charger la distribution de données base1 et l’analyser.
Proposer une architecture pour un réseau de neurones classifieur mono-couche.
Entraîner ce réseau. Etudier successivement l’influence des paramètres suivants :
– nombre d’exemples de la base d’apprentissage
– nombre d’itérations
– valeur du pas d’apprentissage
La comparaison pourra se faire sur plusieurs points :
– l’évolution du coût sur les bases d’apprentissage et de test
– le taux de reconnaissance obtenu en utilisant la règle de décision WTA (Winner Takes All :
la cellule de sortie la plus active donne la classe gagnante).
Charger la distribution de données base2 et l’analyser.
Proposer une architecture pour un réseau de neurones classifieur mono-couche. Entraîner ce
réseau. Conclure.
2) Perceptron multi-couche
Entraîner un réseau de neurones à deux couches, avec deux neurones sur la couche cachée pour
classifier la distribution de données base2. Afficher les activités des neurones de la couche cachée. Conclure.
Faire de même avec la distribution de données base3. Conclure.
Entraîner un réseau de neurones à deux couches, comportant C neurones sur la couche cachée
pour classifier la distribution de données base3. Trouver, par recherche exhaustive, le nombre
optimal de neurones cachés C*.
Etudier successivement l’influence des paramètres suivants :
– nombre d’exemples de la base d’apprentissage
– nombre d’itérations
– valeur du pas d’apprentissage
La comparaison pourra se faire sur plusieurs points :
– l’évolution du coût sur les bases d’apprentissage et de test
– le taux de reconnaissance obtenu en utilisant la règle de décision WTA.
3) Annexe
La toolbox RdF regroupe un ensemble de fonctions implémentant des méthodes numériques
de classification de formes. Sont implémentés en particulier les classifieurs Perceptron mono et
bi-couches, les cartes de Kohonen et les méthodes LVQ. L’aide en ligne est accessible en tapant
sous matlab les commandes :
help rdf
help nom_de_la_fonction
% liste des fonctions de la toolbox RdF
% aide sur une fonction particulière
Cette toolbox ne nécessite pas l’installation des toolbox Matlab pour fonctionner. Elle est
indépendante de la toolbox NeuralNet de Matlab.
Implémentation des réseaux MLP
La programmation des réseaux de neurones s’effectue en trois étapes :
1. La définition d’un réseau (fonctions mlp1def, mlp2def)
2. L’apprentissage (fonctions mlp1train, mlp2train, mlp2atrain, mlp2acrvtrain)
3. l’utilisation (fonctions mlp1run, mlp2run) et en particulier pour la classification la fonction mlpclass.
Le chiffre 1 ou 2 dans le nom des fonctions fait référence à la structure du réseau : 1 pour
une unique couche (il s’agit donc de réseaux sans couches cachées) et 2 pour les réseaux à
une couche cachée. Les structures à plus de deux couches ne sont pas implémentées. la lettre
a dans mlp2atrain fait référence au pas d’apprentissage qui est adaptatif. Enfin, acrv dans
mlp2acrvtrain désigne un apprentissage avec validation croisée (ou cross-validation) et pas
adaptatif.
Format des données
L’apprentissage d’un réseau nécessite au moins une base de prototypes (les exemples à apprendre
ou base d’apprentissage) et au plus deux autres bases appelées bases de cross-validation lorsque
l’on effectue un apprentissage avec validation croisée et base de test permettant de tester le
réseau en généralisation, c’est à dire sur des exemples non appris.
Une base de prototypes, qu’elle soit d’apprentissage ou de test, se décompose en un ensemble
de vecteurs (les exemples à projeter en entrée du réseau) et en une liste de labels (les classes
d’appartenance des exemples). Les exemples doivent être rangés en colonne dans une matrice
et les labels rangés dans un vecteur ligne dans le même ordre. Pour un problème à 10 classes,
les labels utilisés seront les entiers de 1 à 10. l’entier 0 ne peut pas être utilisé comme label.
Quelques fonctions permettent de gérer les prototypes et leur label :
1. genbase : création d’une base "artificielle" d’exemples en 2 dimensions. Les exemples sont
générés selon une distribution gaussienne ou multi-gaussienne et partagés en classes. On
obtient en sortie la matrice des exemples avec leur classe d’appartenance : les exemples
sont rangés en ligne (une ligne par exemple) avec leurs labels respectifs en dernière colonne.
2. base2label : permet de dissocier les exemples de leurs labels tels qu’ils sont générés par
genbase. On obtient en sortie une matrice contenant les exemples rangés en colonnes et
un vecteur ligne contenant les labels.
2
3. label2target : construit une matrice de sorties désirées pour l’apprentissage des réseaux
à partir d’un vecteur de labels.
4. target2label : effectue l’opération inverse de celle de label2target
Classification
L’utilisation des réseaux en classification s’effectue à l’aide des fonctions mlp1run, mlp2run et
mlpclass. Les deux premières fonctions calculent les sorties d’un réseau sur une base d’exemple
donnée en entrée. La troisième fonction effectue une décision en fonction des sorties du réseau.
Elle génère un label par exemple présenté. Les fonctions score et confusion permettent d’établir
un taux de reconnaissance et de générer la table des confusions.
Exemple : génération d’une base
Base1 = genbase;
[ExNbrApp, ExSizeApp, ClassNbrApp] = basesize(Base1);
[BaseApp, LabelAppD] = base2label(Base1);
TargetAppD = label2target(LabelAppD);
%
%
%
%
génération
dimensions
extraction
génération
d’une base
de la base
des labels
des cibles
Exemple : apprentissage d’un réseau
InputNbr = ExSizeApp;
HcellNbr = 10;
OutputNbr = ClassNbrApp;
lr = 1;
it = 1000;
err_glob = 0.001;
% nombre d’entrees du reseau
% nombre de cellules de la couche cachée
% nombre de sorties (i.e de classes)
% pas d’apprentissage
% nombre maxi. d’iterations
% seuil d’arret erreur quadratique moyenne
% definition du réseau :
[W1, B1, W2, B2] = mlp2def(InputNbr, HcellNbr, OutputNbr);
% apprentissage du réseau :
[NW1,NB1,NW2,NB2,L,LR]=mlp2train(BaseApp, TargetAppD, W1, B1, W2, B2, lr,
it, err_glob, freqplot);
Exemple : reconnaissance
Output = mlp2run(BaseApp,NW1,NB1,NW2,NB2);
LabelApp = mlpclass(Output);
taux = score(LabelApp, LabelAppD);
% test sur la base d’apprentissage
% classification
% calcul du score en classification
disp([’taux de reconnaissance en apprentissage : ’ num2str(taux) ’ %’]);
disp(’matrice de confusion : ’);
confusion(LabelApp, LabelAppD);
% affichage des confusions
3

Documents pareils