You are on page 1of 6

Apprentissage, R eseaux de neurones et Mod` eles graphiques (RCP209) Le Perceptron Multicouches Charger la Toolbox Netlab - Cr eer un r epertoire Netlab

- Lancer refox - Adresse de la Toolbox Netlab http://www1.aston.ac.uk/eas/research/groups/ncrg/resources/netlab/downloads/ - Cliquer sur Downloads - Charger dans le r epertoire Netlab le chier netlab3 3.tar en cliquant sur : gzip le de la Toolbox 3.3 (Date : 18/06/2004) - Charger aussi dans le r epertoire Netlab le chier foptions.m - d ecompresser le chier netlab3 3.tar tar xvf netlab3 3.tar puis rm netlab3 3.tar - Vous disposez alors de la toolbox Netlab dans le r epertoire Netlab. Fonctions importantes de Netlab pour un perceptron multicouches Net = mlp(nin, nhidden, nout,outfunc); Elle permet de d enir une architecture et dinitialiser les poids. . nin : nombre de neurones en entr ee. . nhidden : nombre de neurones cach es. . nout : nombre de neurones en sortie. . outfunc : fonction dactivation pour la couche de sortie (= linear, logistic ou softmax) help mlp pour plus de d etails. [Net, options] = netopt(Net, options, x, t, alg); alg = scg ,conjgrad ou quasinew (algorithme doptimisation) help netopt pour plus de d etails.. Ycal = mlpfwd(Net, X); % sortie calcul ee par le r eseau Net pour lentr ee X. Donn ees simul ees. Ecrire les commandes suivantes dans un chier script donnees.m n=300; X=4*(rand(n,1)-.5); X=sort(X); a=2; b=5; Y=a*X + b; Yb=Y+.2*randn(size(Y,1),1); plot(X,Y,b-,X,Yb,r.) save data1 X Y Yb Y=zeros(size(X)); Y=Y+sin(pi*X).*((X>-1) & (X<1)); Yb=Y+.2*randn(size(Y,1),1); gure plot(X,Y,b-,X,Yb,r.) save data2 X Y Yb Placez-vous dans la fen etre de commande Matlab et tapez : donnees

Utilisation dun perceptron sans couche cach ee Ecrire les commandes suivantes dans un chier script test1.m addpath Netlab load data1; pas=10; Xapp=X(1:pas:length(X)); Yapp=Yb(1:pas:length(Yb)); ne = size(Xapp,2); ns = size(Yapp,2); Net = glm(ne, ns, linear); options = foptions; options(1) = 1; % achage des erreurs options(2) = 0.001; % pr ecision sur la variation des poids options(3) = 0.001; % pr ecision sur la variation de lerreur options(14)=100; % nombre de cycles dapprentissage options(18)=0.01; % pas dapprentissage [Net1 options errlog pointlog]= netopt(Net, options, Xapp, Yapp,graddesc); subplot(3,1,1) plot(errlog); subplot(3,1,2) plot(pointlog); Ycalculee=glmfwd(Net1,X); subplot(3,1,3) plot(X,Y,b-,X,Yb,g.,X,Ycalculee,r-) Placez-vous dans la fen etre de commande Matlab et tapez : test1 Comparer Net1.w1 avec le coecient directeur a et Net1.b1 avec lordonn e` a lorigine b Faire varier le pas dapprentissage Faire varier le nombre de cycles dapprentissage Remplacer la fonction netopt par la fonction oldg [Net1 options errlog pointlog]= olgd(Net, options, Xapp, Yapp); - Remplacer la fonction netopt par la fonction glmtrain [Net options] = glmtrain(Net, options, Xapp, Yapp); Ycalculee=glmfwd(Net,X); plot(X,Y,b-,X,Yb,g.,X,Ycalculee,r-) - Utiliser data2 ` a la place de data1 Copier le script demglm1.m de la toolbox Netlab dans un chier demo1.m et le script demglm2.m dans un chier demo2.m - Tester demo1.m et demo2.m - Faire varier les param` etres dapprentissage dans demo1.m et demo2.m Utilisation dun perceptron multicouches Ecrire les commandes suivantes dans un chier script test2.m (copier test1.m dans test2.m puis modier test2.m). load data2; pas=10; Xapp=X(1:pas:length(X)); Yapp=Yb(1:pas:length(Yb)); ne = size(Xapp,2); ns = size(Yapp,2); nc=3; -

Net = mlp(ne, nc, ns, linear); options=zeros(1,18); options(1)=1; options(2)=0.0001; options(3)=0.0001; options(14)=1000; options(18)=0.01; algorithm = graddesc; [Net1 options errlog pointlog] = netopt(Net, options, Xapp, Yapp, algorithm); subplot(3,1,1) plot(errlog); subplot(3,1,2) plot(pointlog); Ycalculee=mlpfwd(Net1,X); subplot(3,1,3) plot(X,Y,b-,Xapp,Yapp,g.,X,Ycalculee,r-) Placez-vous dans la fen etre de commande Matlab et tapez : test2 - Faire varier le pas dapprentissage - Faire varier le nombre de cycles dapprentissage - Tester le weight decay : alpha = 0.2; Net = mlp(ne, nc, ns, linear,alpha); - Tester le momentum : options(17)=0.5; - Tester les autres algorithmes dapprentisage : conjgrad, scg et quasinew Charger le chier MlpLearn.m dans le r epertoire Netlab. Ecrire les commandes suivantes dans un chier script Apprend.m global options addpath Netlab load data2 % Base dapprentissage et base de test % Un point sur trois pour lapprentissage et le reste pour le test I=1:3:length(X);J=1:length(X);J=setdi(J,I); Xapp=X(I); Yapp=Yb(I); Xtest=X(J); Ytest=Yb(J); NbreNeurEntree = size(Xapp,2); NbreNeurSortie = size(Yapp,2); NbreNeurCache = 5; Net = mlp(NbreNeurEntree, NbreNeurCache, NbreNeurSortie, linear); SeuilArret = 0.0001; algorithm = scg; NbreIterations=1000; NbreIterAvantTest=10; gure set(gca,YScale,log) [Net, ErrAppr, ErrTest, CurIter, Yac, Ytc] = MlpLearn ( ... Net, Xapp, Yapp, Xtest, Ytest, ... NbreIterations, NbreIterAvantTest, SeuilArret, algorithm); gure Ycalculee=mlpfwd(Net,X); plot(X,Y,b-,X,Ycalculee,r-) legend(: Y d esir e,: Y calcul e);

Placez-vous dans la fen etre de commande Matlab et tapez la commande Apprend Vous pouvez faire dautres apprentissages en modiant les di erents param` etres inuant sur lapprentissage dans les scripts Apprend.m et MlpLearn.m Probl` eme r eel de classication : les Iris de Fisher Les Iris de Fisher correspondent ` a 150 eurs d ecrites par 4 variables quantitatives : longueur du s epale, largeur du s epale, longueur du p etal et largeur du p etal. Les 150 eurs sont r eparties en 3 di erentes esp` eces : iris setosa, iris versicolor et iris virginica Chaque classe est compos ee de 50 eurs. La classe setosa est lin eairement s eparable des deux autres, alors que versicolor et virginica ne le sont pas. ee en dimension 4 d ecrivant les 150 iris. Le Le chier iris don.mat contient les vecteurs dentr chier iris cls.mat contient les classes des 150 iris. Pour lire ces chiers faire : load -ascii iris don.mat load -ascii iris cls.mat Le codage classique des sorties d esir ees pour la classication utilise un neurone de sortie par classe, avec une valeur d esir ee haute pour le neurone de la classe correcte, et une valeur d esir ee faible pour les autres classes. Nous allons utiliser le codage suivant : classe 1 (1 0 0) classe 2 (0 1 0) classe 3 (0 0 1) Vous pouvez g en erer la matrice de sortie en utilisant les instructions Matlab suivantes : >> iris output=zeros(150,3); >> iris output(nd(iris cls==1),1)=1; >> iris output(nd(iris cls==2),2)=1 ; >> iris output(nd(iris cls==3),3)=1; Apprentissage - Utiliser 100 Iris pour lapprentissage et les autres pour le test. - Utiliser 3 neurones cach es. - Pour un probl` eme de classication, il vaut mieux utiliser des fonctions dactivation non lin eaires ` a la couche de sortie. Utiliser la fonction softmax. - Faire 100 cycles dapprentissage - evaluer lerreur de classication au moyen de la matrice de confusion et identier les instances mal class ees. Vous pouvez utiliser les instructions Matlab suivantes : >> Ycalculee=mlpfwd(Net,iris input); >> classe t=iris cls; >> [max y classe y]=max(Ycalculee); >> classe y=classe y; >> exemples mal classes=nd(classe t=classe y); >> NetClass=zeros(150,3); >> NetClass(nd(classe y==1),1)=1; >> NetClass(nd(classe y==2),2)=1; >> NetClass(nd(classe y==3),3)=1; >> cong(NetClass,iris output) - Faire varier les param` etres dapprentissage. Le probl` eme des taches solaires (sunspot ) : s election de variables Il sagit du nombre moyen annuel de taches noires observ ees sur le soleil entre 1700 et 1979 (280 points). La s erie des taches solaires est tr` es courte et c el` ebre dont l equation sous jacente

est inconue. La gure 1 montre l evolution annuelle de cette s erie.


1 0.9 0.8 0.7

Average sunspot activity

0.6 0.5 0.4 0.3 0.2 0.1 0 1700

1750

1800

1850 Year

1900

1950

2000

Figure 1: s erie sunspot normalis ee de 1700 ` a 1979.

Pour ce probl` eme, on essaie de pr edire une valeur en utilisant les 12 valeurs pr ec edentes. Il faut donc utiliser un r eseau avec une couche dentr ee de 12 neurones et une couche de sortie de 1 neurone Donn ees dapprentissage et de validation On utilise les donn ees de 1712 ` a 1920 pour lapprentissage (un ensemble DApp de 209 exemples), et les donn ees de 1921 ` a 1955 pour la validation (un ensemble DV al de 35 exemples). Pour le test, on utilise les donn ees de 1956 ` a 1979 (un ensemble DT est de 24 exemples). Mesure de qualit e Les performances du mod` ele sont calcul ees en utilisant le crit` ere ARV (Average Relative Variance), qui est le rapport entre lerreur quadratique moyenne du mo` ele et la variance des donn ees. La d enition de lARV etablit un rapport entre lerreur du mod` ele et la variance des donn ees calcul ee sur le m eme ensemble D (pris de lensemble entier S ). (y i f (xi ))2 arv (D) =
iD iD

(y i D )2

(1)

o` u y i est la valeur de la s erie ` a linstant i, f (xi ) est la sortie du r eseau ` a linstant i, et D la moyenne de la valeur d esir ee dans D. Cependant, la d enition de lARV la plus utilis ee utilise la variance totale des donn ees (de la s erie). 1 (y i f (xi ))2 |D| arv (D) =
iD 1 |S |

iS i

(y i S )2

(2)

o` u y est la valeur de la s erie ` a linstant i, f (x ) est la sortie du r eseau ` a linstant i, et S la moyenne de la valeur d esir ee dans S (la s erie enti` ere) . An de comparer votre ARV avec celles obtenues en utilisant dautres m ethodes, utiliser la formule (2).

Constituer les ensembles DApp , DV al et DT est : DApp (ensemble dapprentissage) : il sert ` a calculer les poids du r eseau. DV al (ensemble de validation) : il sert ` a eviter le sur-apprentissage (` a d eterminer quand arr eter lapprentissage). T est D (ensemble de test) : il sert ` a evaluer les performances du r esau obtenu. Cet ensemble ne doit pas intervenir ni pour la d etermination des poids ni pour larr et de lapprentissage. Apprentissage Utiliser un r eseau avec une couche cach ee. Utiliser la m ethode HVS pour s electionner les variables pertinentes. Utilisation dun MLP pour la classication de Chires Manuscrits : choix du codage Lobjectif de cette partie est de comparer les performances dun classieur MLP en fonction des di erents types de codage que lon va faire sur les chires, et qui serviront dentr ee au r eseau de neurones. Les Donn ees : la base de donn ee de chires manuscrits est compos e de 480 chires manuscrits cod es en binaire (1), dans une matrice 256x480. Chaque bitmap binaire 16x16 a et e transform ee en un vecteur de dimension 256 qui, ` a son tour, correspond ` a une colonne de la matrice x, stock ee dans le chier x.mat. Base dapprentissage, base de validation et base de test on va diviser cette base de donn ees en 3 parties : - Un ensemble dapprentissage (de 1 300) qui sert ` a calculer les poids du r eseau - Un ensemble de validation (de 301 400) qui sert v erier quil ny a pas de sur-apprentissage. - Un ensemble de test (de 401 480) qui sert ` a evaluer les performances du r eseau obtenu. Codage des donn ees. Soient : - HX : histogramme des projections du chire sur laxe des x (dans chaque colonne on compte le nombre de pixels noir). HX est donc un vecteur de 16 composantes. - HY : histogramme des projections du chire sur laxe des y (dans chaque ligne on compte le nombre de pixels noir). HY est aussi un vecteur de 16 composantes. - PH : prol haut pour chaque colonne, on code la coordonn ee de la premi` ere transition blanc/noir en partant du haut. PH est un vecteur de 16 composantes. - PB : prol bas pour chaque colonne, on code la coordonn ee de la premi` ere transition blanc/noir en partant du bas. PB est un vecteur de 16 composantes. - PG: prol gauche pour chaque ligne, on code la coordonn ee de la premi` ere transition blanc/noir en partant de la gauche. PG est un vecteur de 16 composantes. - PD: prol droit pour chaque ligne, on code la coordonn ee de la premi` ere transition blanc/noir en partant de la droite. PD est un vecteur de 16 composantes. Les 6 cas de codage ` a essayer sont: 1. 2. 3. 4. 5. 6. entr ee entr ee entr ee entr ee entr ee entr ee (HX,HY), vecteur de 32 composantes. (PG,PD), vecteur de 32 composantes. (HX,HY,PG,PD), vecteur de 64 composantes. (PB,PH), vecteur de 32 composantes. (HX,HY,PB,PH), vecteur de 64 composantes. image sous forme dun vecteur de 256 pixels. Fichier x.mat.

Comparez ces codages en termes de performances sur la base de test.

You might also like