Tutorial en Matlab
Tarik AL ANI,
Département Informatique
ESIEE-Paris
E-mail : t.alani@esiee.fr
Url: http://www.esiee.fr/~alanit
http://www esiee fr/ alanit
19/11/2008 1
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Prétraitement et post-
post-traitement
19/11/2008 3
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Prétraitement et post-
post-traitement
Pour reconvertir les sorties aux mêmes unités des cibles d’origine :
an = sim(net,pn);
a = mapminmax(`reverse',an,ts);
19/11/2008 6
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Prétraitement et post-
post-traitement
19/11/2008 7
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Prétraitement et post-
post-traitement
Coefficient de corrélation de Pearson entre deux
ensemble d’échantillons de variables aléatoires
La covariance entre deux variables aléatoires x et y est mesurée par
N
N-1∑
ρxy = E[(X-μˆ x)(Y -μˆ y)] = 1 (xk -μˆ x)(yk -μˆ y)
k =1
Où mx et my sont les moyens de deux variables.
Si x a tendance à être auau-dessus
dessus de sa moyenne quand y est au au-dessus
dessus de sa
moyenne alors rxy sera positif. S'ils ont tendance à être sur les côtés opposés de leurs
moyennes rxy sera négatif. Le coefficient de corrélation de Pearson est la
covariance normalisée
μψ Æ
ρ
r = XY , -1 ≤r
≤r ≤1
σ Xσ Y ρ = 0.9
ρ = − 0.7
19/11/2008 Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ 8
Annexe 1 et post-
Prétraitement post-traitement
Ré
Régression
i linéaire
li é i
Modéliser par une fonction linéaire la relation entre deux variables x et y : étant
donné un ensemble de N échantillons de couples de données {xi, yi}, nous
cherchons à estimer yi à partir de xi en utilisant un modèle linéaire : yˆi = a xi +b
σˆe2
σˆ y2
Cette quantité mesure la proportion de la variance décrite par un modèle linéaire,
une valeur de r2 = 1 indique que ce modèle décrit parfaitement la relation entre x et
y.
19/11/2008 Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ 12
Feed Forward Neural Network (FFNN)
PERCEPTRON
19/11/2008 13
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
PERCEPTRON
19/11/2008 14
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
PERCEPTRON % sse: fonction de la somme des erreurs quadratiques (Sum squared error
performance function)
while (sse(E)>.1)&(iter<1000)
Exemple
p : [net,Y,E] = adapt(net,p,t);% adapt: adapter le réseau de neurones
% DEFINITION iter = iter+1;
end
% Création d’un nouveau perceptron en utilisant net = newp(pr,s,tf,lf)
% Afficher les valeurs finales du réseau
% Déscription
w=net.IW{1,1}
% Perceptrons sont utilisé pour résoudre des problèmes simples de
b=net b{1}
b=net.b{1}
classification
% (i.e. classes linéairement séparables)
% TEST
% net = newp(pr,s,tf,lf) test = rand(2,1000)*15;
% pr - Rx2 matrice des valeurs min et max pour R éléments d'entrée. ctest = sim(net,test);
% s - Nombre de neurones.
ne rones fi
figure
% tf - Fonction de transfer , défault = 'hardlim': Hard limit transfer % scatter: Scatter/bubble plot.
function.. % scatter(X,Y,S,C) affiche des cercles colorés aux endroits spécifiés par les
% lf - fonction d'apprentissage, défault = 'learnp': Perceptron weight/bias vecteurs X et Y (de même dimension).
learning function. % S détermine la surface de chaque marquer (en points^2).
p1 = 7*rand(2,50); % C détermine les coleurs de marqueurs
p2 = 7*rand(2,50)+5; % 'filled' remplissage des marqueurs
scatter(p(1,:),p(2,:),100,t,'filled')
p = [p1,p2];
t = [zeros(1,50),ones(1,50)];
hold on
pr = minmax(p);
i ( ) % pr est Rx22 est une matrice
i des
d valeurs
l min
i et max de
d la
l
scatter(test(1,:),test(2,:),10,ctest,'filled');
matrice pmm de dim (RxQ)
hold off
net = newp(pr,1,'hardlim','learnpn');
% Afficher les valeurs initiales du réseau % plotpc (W,B): Tracer une ligne de classification sur le tracé des vecteurs de
w0=net.IW{1,1}
w0 net.IW{1,1} perceptron
b0=net.b{1} % W - SxR matrice de poids (R <= 3).
% B - Sx1 vecteur de bias
plotpc(net.IW{1},net.b{1});
% Plot Regression
fi
figure
[m,b,r] = postreg(y,t);
19/11/2008 15
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
PERCEPTRON
Exemple (suite):
>> run(‘perceptron.m')
w00 = 0 0
b0 = 0
w = 17.5443 12.6618
b = -175.3625
19/11/2008 16
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
PERCEPTRON
Regréssion linéaire :
19/11/2008 17
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
PERCEPTRON % Apprentissage
E=1;
iter = 0;
Exemple
p : % sse: fonction de la somme des erreurs quadratiques (Sum squared error
% DEFINITION performance function)
while (sse(E)>.1)&(iter<1000)
% Création d’un nouveau perceptron en utilisant net = newp(pr,s,tf,lf)
[net,Y,E] = adapt(net,p,t);% adapt: adapter le réseau de neurones
% Déscription
iter = iter+1;
% Perceptrons sont utilisé pour résoudre des problèmes simples de
end
classification
% Afficher les valeurs finales du réseau
% (i.e. classes linéairement séparables)
w=net.IW{1,1}
% net = newp(pr,s,tf,lf) b=net.b{1}
% pr - Rx2 matrice des valeurs min et max pour R éléments d'entrée.
% s - Nombre de neurones.
ne rones % TEST
% tf - Fonction de transfer , défault = 'hardlim': Hard limit transfer test = rand(2,1000)*15;
function.. ctest = sim(net,test);
% lf - fonction d'apprentissage, défault = 'learnp': Perceptron weight/bias figure
learning function. % scatter: Scatter/bubble plot.
p1 = 7*rand(2,50); % scatter(X,Y,S,C) affiche des cercles colorés aux endroits spécifiés par les
p2 = 7*rand(2,50)+5; vecteurs X et Y (de même dimension).
% S détermine la surface de chaque marquer (en points^2).
p = [p1,p2];
% C détermine les coleurs de marqueurs
t = [zeros(1,50),ones(1,50)];
% 'filled' remplissage
p g des marqueurs
q
pr = minmax(p);
i ( ) % pr est Rx22 est une matrice
i des
d valeurs
l min
i et max de
d la
l
scatter(p(1,:),p(2,:),100,t,'filled')
matrice pmm de dim (RxQ)
net = newp(pr,1,'hardlim','learnpn');
hold on
% Afficher les valeurs initiales du réseau scatter(test(1,:),test(2,:),10,ctest,'filled');
w0=net.IW{1,1}
w0 net.IW{1,1} hold off
b0=net.b{1}
% plotpc (W,B): Tracer une ligne de classification sur le tracé des vecteurs de
perceptron
% W - SxR matrice de poids (R <= 3).
% B - Sx1
S 1 vecteur
t d bias
de bi
plotpc(net.IW{1},net.b{1});
19/11/2008 18
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
PERCEPTRON
P = [1 2 2 3; 2 1 3 1];
t1=[100], t2=[50], t3=[-100], t4=[25],
T = [100, 50, -100, 25];
net = newlin(P, T);
y = sim(net, P);
P T
y=5 4 8 5
19/11/2008 19
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
PERCEPTRON
P={1
{ 2 2 3; 2 1 3 1};}
t1=[100], t2=[50], t3=[-100], t4=[25],
T = {100, 50, -100, 25};
net = newlin(P, T, [0 0]);
y = sim(net, P);
P T
y=5 4 8 5
19/11/2008 20
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
PERCEPTRON
t1=[100],
[100], t2=[50],
[50], t3=[-100],
[ 100], t4=[25],
[25],
P = {1 2 2 3; 2 1 3 1};
T = { 100, 50, -100, 25};
net = newlin(P, T, [0 1]);
pt tt
y = sim(net, P);
y = [1] [4] [7] [10]
19/11/2008 21
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Multiple Layers Neural Network (MLNN) or
Feed-forword backpropagation network (FFNN)
19/11/2008 22
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Multiple Layers Neural Network (MLNN) or
Feed-forword backpropagation network (FFNN)
Création dd’un
un MLNN:
net = newff (P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)
Cette fonction retourne un réseau FFNN à N couches.
P - RxQ1 matrice de Q1 vecteurs représentatifs d’entrée de R-éléments.
T - SNxQ2 matrice de Q2 vecteurs représentatifs de cible de SN-éléments.
Si - dimensions de N-1 couches cachées, S1 à S(N-1),
( ) défaut = [].
(la dimension de la couche de sortie SN est déterminée de T.)
TFi – Fonction de Transfère de la ième couche. Par défaut 'tansig ' pour les
couches cachées, et 'purelin
purelin ' pour les couches de sortie.
BTF - Fonction d’apprentissage de réseaux Backprop, défaut = 'trainlm '.
BLF - Fonction d’apprentissage de réseaux Backprop, poids/biais, défaut =
'learngdm
learngdm '.
PF - Fonction de Performance, défaut = 'mse'.
IPF – Rangé de fonctions de traitement de l’entrée.
Déf t estt {'fixunknowns
Défaut {'fi k ''
','remconstantrows
t t ''
','mapminmax
i '}
'}.
OPF - Rangé de fonctions de traitement de la sortie.
Défaut est {'remconstantrows ','mapminmax '}.
DDF – Fonction
i de d division
di i i de
d données,
d défaut
d = 'dividerand ';
19/11/2008 23
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Multiple Layers Neural Network (MLNN) or
Feed-forword backpropagation network (FFNN)
Cette fonction retourne une matrice SxQ de N éléments dans [−1 1].
N – des entrées, matrice SxQ de vecteurs colonnes.
FP - Structure des paramètres de la fonction (ignorée)
a = tansig
g ((n))
a = tansig(n)
g( ) = 2/(1+exp(-2*n))-1
( p( ))
n = -5:0.1:5;
a = tansig(n);
g( );
plot(n,a)
19/11/2008 24
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Multiple Layers Neural Network (MLNN) or
Feed-forword backpropagation network (FFNN)
a = ppurelin ((n))
a = ppurelin(n)
( )=n
n = -5:0.1:5;
a = tansig(n);
g( );
plot(n,a)
19/11/2008 25
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Multiple Layers Neural Network (MLNN) or
Feed-forword backpropagation network (FFNN)
Exemple 1 :
Supposons, par exemple que vous avez des données
d'une application d'habitation [HaRu78]. Vous voulez
concevoir un réseau qui peut prédire la valeur d'une
maison (en $1000) étant donné 13 articles de
renseignements géographiques et de biens immobiliers.
Vous avez un total de 506 exemples de maisons pour
lesquelles vous avez ces 13 articles de données et leurs
valeurs associées du marché.
19/11/2008 26
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Exemple 1 (suite)
19/11/2008 28
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Exemple 1 (suite)
19/11/2008 29
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Exemple 1 (suite)
• Apprendre plusieurs fois produira des résultats différents en raison des conditions initiales différentes
différentes.
• La moyenne des erreurs careés (Mean Squared Error (mse)) est la moyenne des careés de la différence
entre les sorties (normalisées) et les cibles. Le zéro signifie aucune erreur, plus de 0.6667 signifie une
erreur elevée.
19/11/2008 30
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Exemple 1 (suite)
Passez ll’ensemble
ensemble entier de données par le réseau (apprentissage,
(apprentissage validation et
test) et effectuez une régression linéaire entre les sorties de réseau, après qu'ils
ont été ramenés à la gamme originale de cible et les cibles correspondantes.
Pmm ymm
net
sim(net Pmm); % simuler un réseau de neurones 20
ymm = sim(net,
y = mapminmax('reverse', ymm, ts); % Remettre les valeurs entre [-1 1] de la
matrice ymm à leurs valeurs minimales et maximales réelles
[m, b, r] = postreg(y, t); % Faire une régression linéaire (voir annexe) entre un
élément de la réponse de réseau y et la cible correspondante t.
m – Pente de la régression linéaire .
b – Y-intercéption de la régression linéaire .
r – valeur de la régression
g linéaire.
19/11/2008 31
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Exemple 1 (suite)
La sortie
L ti suit
it bien
bi les
l cibles,
ibl r = 0.9.
0 9 Si une précision
é i i plusl granded estt demandée,
d dé alors
l :
- Réinitialiser les poids et le biais du réseau en utilisant de nouveau les fonctions init(net) et train
- Augmenter le nombre de neurones dans la couche cachée
- Augmenter le nombre de vecteurs d’apprentissage
- Augmenter le nombre d’entrées si plus d’informations utiles sont disponibles
- essayez un autre algorithme d’apprentissage
19/11/2008 32
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN
Comparaison des différentes fonctions d’apprentissage
Il est très difficile de savoir quel algorithme
d’apprentissage d’un réseau « Feedforward » sera le plus
rapide pour un problème donné. Il dépend de beaucoup de
facteurs, y compris :
• la complexité du problème,
• le nombre de vecteurs ((ou ppoints)) de données dans
l’ensemble d’apprentissage,
• le nombre de poids et des biais dans le réseau,
• le l'erreur objective et
• si le réseau est utilisé pour la reconnaissance de formes
(discriminant analysis) ou l'approximation de fonctions
(rgression)
(rgression).
19/11/2008 33
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Comparaison des différentes fonctions d’apprentissage (suite)
Algorithme trainlm trainbfg trainrp trainscg traincgb traincgf traincgp trainoss traingdx
Levenberg- BFGS Resilient Scaled Conjugate Fletcher- Polak- One Step Variable
Marquardt Quasi- Backpropagation Conjugate Gradient with Powell Ribiére Secant Learning Rate
Newton Gradient Powell/Beale Conjugate Conjugate Backpropagation
Restarts Gradient Gradient
19/11/2008 34
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Comparaison des différentes fonctions d’apprentissage (suite)
Les six benchmarks utilisés pour tester les performances des algorithmes
Titre du Type du Problème Structure Erreur calculateur
Problème du réseau objective L’algorithme le plus rapide
Po r qquelques
Pour elq es centaines de poids
SIN Approximation d’une 1-5-1 0.002 Sun Sparc 2
LM
fonction
PARITY Reconnaissance de formes 3-10-10-1 0.001 Sun Sparc 2
RP
CHOLESTEROL Approximation d’une 21-15-3 0.027 Sun Sparc 20 CGB, CGF, CGP
fonction
DIABETES Reconnaissance de formes 8-15-15-2 0.05 Sun Sparc 20
CGB, CGF,
CGP,, RP
19/11/2008 35
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Comparaison des différentes fonctions d’apprentissage (suite)
19/11/2008 36
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Comparaison des différentes fonctions d’apprentissage (suite)
19/11/2008 37
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Comparaison des différentes fonctions d’apprentissage (suite)
19/11/2008 38
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Comparaison des différentes fonctions d’apprentissage (suite)
19/11/2008 39
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Comparaison des différentes fonctions d’apprentissage (suite)
19/11/2008 40
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
MLNN orFFNN Comparaison des différentes fonctions d’apprentissage (suite)
19/11/2008 41
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Radial Basis Functions (RBF)
19/11/2008 42
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Radial Basis Functions (RBF) Generalized regression networks (GRNN)
(suite)
||dist||=||W-P||
19/11/2008 43
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Radial Basis Functions (RBF) Generalized regression networks (GRNN)
(suite)
TRANSFERT FUNCTION :
A = radbas(n,FP)
C
Cette fonction
f i retourne une matrice
i SxQ
S Q ded N élé
éléments dde RBF
RBF.
n – des entrées, matrice SxQ de vecteurs colonnes.
FP - Structure des paramètres de la fonction (ignorée)
a = radbas (n) = Exp(-n2)
Cette fonction a un maximum de 1 q quand son entrée est 0.
Si la distance entre W et p diminue, la sortie augmente.
Ainsi, un neurone radial de base agit en tant que détecteur
qui produit 1 toutes les fois que ll'entrée
entrée p est identique à
son vecteur de poids W. n = -5:0.1:5;
a = radbas(n );
pplot(n
( ,a))
Le biais b permet d’ajuster
d ajuster la sensibilité du neurone .
Par exemple, si un neurone avait un biais de 0.1 il produirait 0.5 pour n'importe
quel vecteur d'entrée p à la distance de vecteur de 8.326 (0.8326/b) de son vecteur
d poids
de id W.
W
19/11/2008 44
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Radial Basis Functions (RBF) Generalized regression networks (GRNN)
(suite)
19/11/2008 45
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Radial Basis Functions (RBF) Generalized regression networks (GRNN)
(suite)
Le réseau RBF peut être utilisé pour approcher des fonctions quelconques.
newrb ajoute des neurones à la couche cachée d'un réseau RBF jusqu'à ce qu'il
atteint l’objectif d‘une erreur carrée moyenne minimale (mean sequared error
(
(mse)).
))
P - matrice RxQ de Q vecteurs d’entrée.
T - matrice SxQ matrix de Q vecteurs cibles de classes.
GOAL - mse objective (sum(sum-squared
squared error goal), défaut = 0.0.
SPREAD - Propagation des fonctions RB (spread constant), défaut = 1.0.
MN - Nombre maximal de neurones, défaut Q.
DF - Nombre de neurones à rajouter entre à chaque évaluation,
évaluation default = 25.
25
Exemple : goal = 0.02; % sum-squared error goal
spread = 1; % spread constant
nett = newrb(P,T,goal,spread);
b(P T l d)
19/11/2008 46
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Radial Basis Functions (RBF) Generalized regression networks (GRNN)
(suite)
Démonstrations
19/11/2008 47
Tarik AL ANI, A2SI-ESIEE – Paris/ LISV-UVSQ
Références