You are on page 1of 18

SOUBIGOU Antoine DEA – Mulhouse Janvier 2003

LE GUENNOU Pascal

Professeur : M. JP. Urban

Projet neuromimétique M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

Introduction …………………………………………………1

I Exercice 1 …………………………………………………..2
I.1. Le programme.……………………………………………………………………2
I.2. La fonction inverse……………………………………………………………….4
I.3. La fonction logarithme…………………………………………………...………5
I.4. La fonction exponentielle………………………………………………….……..6
I.5. La fonction sinus ………………………………………………………...……….6

II Exercice 2……………………………………………..…..8

Conclusion ………………………………………….………10

Index des figures …..……………………………….………11

Annexes ….…………………………………….……………12
1. La fonction inverse……………………………………………..………………..13
2. La fonction logarithme…………………………………………………………..13
3. La fonction exponentielle………………………………………….…………….14
4. La fonction sinus…………………………………………………..……………..14
5. Programme exercice 2……………………………………………..…………….15
6. Les différentes fonctions d’apprentissage………………………..…………….16

Projet neuromimétique -1- M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

Introduction

Un réseau de neurones est un outil d’analyse statistique permettant de construire un


modèle de comportement à partir de données qui sont des exemples de ce comportement. Un
réseau de neurones est constitué d’un graphe pondéré orienté dont les nœuds symbolisent les
neurones. Ces neurones possèdent une fonction d’activation qui permet d’influencer les
autres neurones du réseau. Les connexions entre les neurones, que l’on nomme liens
synaptiques, propagent l’activité des neurones avec une pondération caractéristique de la
connexion. On appelle poids synaptique la pondération des liens synaptiques.
Notre projet a pour but ici de mettre en place des programmes de réseaux de neurones
sous Matlab, qui utilise la rétropropagation du gradient pour identifier différentes courbes.

Les neurones peuvent être organisés de différentes manières, c’est ce qui définit
l’architecture et le modèle du réseau. L’architecture la plus courante est celle dite du
perceptron multicouche (utilisée dans nos exercices). Avant de pouvoir utiliser les capacités
de classification d’un réseau de neurones, il faut le construire. Ceci se déroule en quatre
temps:

1. La construction de la structure du réseau (généralement empirique).


2. La constitution d’une base de données de vecteurs représentant au mieux le domaine
à modéliser. Celle-ci est scindée en deux parties : une partie servant à l’apprentissage du
réseau (on parle de base d’apprentissage) et une autre partie aux tests de cet apprentissage (on
parle de base de test).
3. Le paramétrage du réseau par apprentissage. Au cours de l’apprentissage, les
vecteurs de données de la base d’apprentissage sont présentés séquentiellement et plusieurs
fois au réseau. Un algorithme d’apprentissage ajuste le poids du réseau afin que les vecteurs
soient correctement appris. L’apprentissage se termine lorsque l’algorithme atteint un état
stable.
4. La phase de reconnaissance qui consiste à présenter au réseau chacun des vecteurs
de la base de test. La sortie correspondante est calculée en propageant les vecteurs à travers le
réseau. La réponse du réseau est lue directement sur les unités de sortie et comparée à la
réponse attendue. Une fois que le réseau présente des performances acceptables, il peut être
utilisé pour répondre au besoin qui a été à l’origine de sa construction.

En annexe 6 le premier tableau représente les différents algorithmes que l’on peut
utiliser pour l’apprentissage. La figure suivante nous précise clairement que c’est l’algorithme
de Levenberg-Marquardt qui montre les meilleurs résultats, c’est pourquoi on l’utilisera dans
nos exercices.

Projet neuromimétique -2- M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

I Exercice 1
Le but de cet exercice est de mettre en place un réseau de neurones utilisant la
rétropropagation du gradient, afin d’élaborer un programme d’identification de courbes.

Les cinq courbes sont les suivantes :

π
f ( x) = sin c( x) 1≤ x ≤
2

1
f ( x) = 1 ≤ x ≤ 100
x

f ( x) = log10 ( x) 1 ≤ x ≤ 10

f ( x) = exp(− x) 1 ≤ x ≤ 10

π
f ( x) = sin x 1≤ x ≤
2

Une consigne dans ce problème est d’utiliser qu’une seule couche cachée de neurones.
L’intérêt sera ensuite de jouer sur le nombre de neurones cachés et d’en déduire leur
influence. Nous allons d’abord voir la structure de la base du programme.

I.1. Le programme et fonction sinus cardinale

f ( x) = sin c( x)

% approximation de fonction avec l'algorithme de rétropropagation

1. n=10; % fonction de difficulté grandissante


2. k=70; % impose le nombre de données d'entrée
3. P = -2:(.4/k):2; T = sinc(n*P);
4. close all, figure(1),plot(P,T,'.b'),hold on
5. pause

6. netsin=newff(minmax(P),[50,1],{'logsig','purelin'},'trainlm');
7. netsin.trainParam.epochs=1000;
8. netsin.trainParam.goal=1e-5;
9. [netsin,tr]=train(netsin,P,T);

10. p=-2:0.01:2; a=sim(netsin,p); figure(1),plot(p,a,'r')

On initialise donc dans un premier temps la fonction à apprendre. Il s’agit ici de la


fonction sinus cardinale. Aux lignes 1 et 2, on met en place deux variables n et k qui vont

Projet neuromimétique -3- M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

servir respectivement à faire varier la période de la fonction et à changer le nombre de points


qui la compose.
A la ligne 3 on crée la fonction modèle.
Ensuite on crée un objet réseau de neurone. A la ligne 6, on met en place avec la
fonction newff un réseau composé de 1 couche cachée de 50 neurones et une couche de sortie
de 1 neurone. La fonction d’activation utilisée à la sortie de la couche cachée est logsig et
celle de la couche de sortie est purelin. Pour l’apprentissage, on utilisera l’algorithme de
calcul de Levenberg-Marquardt : trainlm.
La ligne 7 permet de régler le nombre d’epochs c’est-à-dire le nombre de cycle
d’apprentissage. La ligne 8 précise l’erreur à atteindre. La ligne suivante lance le calcul
d’apprentissage par la fonction train.
Et au final on trace la courbe obtenue par le réseau (ligne 9).

Voici la fonction à apprendre, le sinus cardinal :

On lance alors le programme d’apprentissage de la courbe. On observe ensuite à la


fois l’évolution de l’erreur à chaque epoch, puis la fonction obtenue par le réseau :

A première vu, le résultat parait tout à fait satisfaisant. La courbe suit bien tous les
points. Cependant en effectuant un zoom sur la première partie de la courbe, on observe un
décalage évident.

Projet neuromimétique -4- M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

Pour améliorer l’apprentissage et pour obtenir une courbe plus proche du modèle, on
joue alors sur différents paramètres tel le nombre de neurones de la couche cachée. Par
exemple, en doublant son nombre le résultat donne ceci :

Le résultat obtenu avec les nouveaux paramètres d’apprentissage est tout à fait
satisfaisant.

I.2. La fonction inverse

Le programme est en annexe 1.


1
f ( x) =
x

Projet neuromimétique -5- M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

On remarque que pour cette courbe, un nombre de neurone faible est suffisant pour la
couche cachée. En effet, la courbe a une décroissance régulière, elle est moins « complexe »
que la fonction sinus cardinal. Le réseau a alors plus de facilité pour l’identifier.

I.3. La fonction logarithme

Le programme est en annexe 2.

f ( x) = log10 ( x)

Projet neuromimétique -6- M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

Idem que la fonction inverse, l’apprentissage se fait très facilement, même avec un
nombre de neurone faible.

I.4. La fonction exponentielle

Le programme est en annexe 3.

f ( x) = exp(− x)

Pour cet exemple, l’apprentissage est excellent. Avec des petits paramètres (nombre
limité de neurones dans la couche cachée), nous obtenons de très bon résultats : écart d’erreur
quasi nulle (environ 10-14).

Projet neuromimétique -7- M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

I.5. La fonction sinus

Le programme est en annexe 4.

. f ( x) = sin x

Là aussi on obtient de très bons résultats. L’identification est parfaite avec très peu de
neurones. Ce résultat provient peut-être de la régularité des oscillations. Si on effectue un
essai avec seulement 10 neurones et très peu de points pour le modèle (20 points pour une
période), le résultat est surprenant :

Projet neuromimétique -8- M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

II Exercice 2
Cet exercice a pour but d’utiliser l’algorithme de rétropropagation pour déterminer un
modèle mathématique représentatif de l’évolution des données.
Pour ce faire, un tableau de valeur nous est fourni. Les informations concernent l’âge
et le poids de l’acuité visuelle des lapins sauvages d’Australie. Ces informations sont non
linéaires, l’objectif de cet exercice est donc d’observer le comportement d’un réseau de
neurone lorsqu’on travail avec un domaine non linéaire. Voici les données du problème :

Weights of Eyes Lenses of Wild Australian Rabbits

Ages Weights Ages Weights Ages Weights Ages Weights


(days) (mg) (days) (mg) (days) (mg) (days) (mg)
15 21,66 75 94,6 218 174,18 338 203,23
15 22,75 82 92,5 218 173,03 347 188,38
15 22,3 85 105 219 173,54 354 189,7
18 31,25 91 101,7 224 178,86 357 195,31
28 44,79 91 102,9 225 177,68 375 202,63
29 40,55 97 110 227 173,73 394 224,82
37 50,25 98 104,3 232 159,98 513 203,3
37 46,88 125 134,9 232 161,29 535 209,7
44 52,03 142 130,68 237 187,07 554 233,9
50 63,47 142 140,58 246 176,13 591 234,7
50 61,13 147 155,3 258 183,4 648 244,3
60 80 147 152,2 276 186,26 660 231
61 73,09 150 144,5 285 189,66 705 242,4
64 79,09 159 142,15 300 186,09 723 230,77
65 79,51 165 139,81 301 186,7 756 242,57
65 65,31 183 153,22 305 186,8 768 232,12
72 71,9 192 145,72 312 195,1 860 246,7
75 86,1 195 161,1 317 216,41

Figure 1 : Tableau de données de l’exercice 2

Dans un premier temps, on trace ces données et on les compare avec un modèle non
linéaire obtenu par la méthode des moindres carrés utilisant une exponentielle négative :

y = 233.846 • (1 − exp( −0.006042 • x )) + ε

Figure 2 : Comparaison du modèle non linéaire (rouge) et des données (bleu)

Projet neuromimétique -9- M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

Nous avons maintenant utilisé le programme de rétropropagation utilisée dans


l’exercice précédent. Cependant, on a dû agir sur l’ensemble des paramètres pour optimiser
l’apprentissage de la courbe afin d’obtenir une courbe la plus proche possible du modèle.

Figure 3 : Résultat du programme

En bleu on a les données du tableau, en vert la fonction exponentielle donnée, et en


rouge le résultat du réseau de neurones.
Nous avons eu du mal à obtenir un résultat satisfaisant. Après avoir testé les différents
algorithmes de calcul, l’algorithme de Levenberg-Marquardt semble être le plus rapide et le
plus précis pour le travail demandé ici.

On observe donc que dans ce genre de problème, les réseaux de neurones ne sont pas
vraiment performants. Comparé à l’exercice 1, où les fonctions sont continues et régulières,
ici les points sont peu nombreux (notamment entre 394 et 513 pour l’âge où la variation du
poids est importante) et la variation entre eux est parfois très grande.
Nous remarquons aussi que, lorsque les variations de données sont régulières, le
réseau de neurone travaille correctement, par contre, quand ces données sont irrégulières le
réseau diverge.

Projet neuromimétique - 10 - M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

Conclusion

Le grand avantage des réseaux de neurones réside dans leur capacité d’apprentissage
automatique, ce qui permet de résoudre des problèmes sans nécessiter l’écriture de règles
complexes, tout en étant tolérant aux erreurs. Cependant, ceux sont de véritables boites noires
qui ne permettent pas d’interpréter les modèles construits. En cas, d’erreurs du système, il est
quasiment impossible d’en déterminer la cause.

Ces deux exercices nous ont permis de mettre en application le cours sur les réseaux
de neurones de M. Urban. Nous avons pu ainsi voir leur utilité au niveau de la reconnaissance
de signaux. On peut alors imaginer l’éventail des possibilités d’utilisation de ces réseaux dans
tous les domaines (commande de bras de robots, acquisition de scènes en 3D grâce à un robot
binoculaire, la médecine etc.….).

Projet neuromimétique - 11 - M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

Figure 1 : Tableau de données de l’exercice 2 ............................................................................8

Figure 2 : Comparaison du modèle non linéaire (rouge) et des données (bleu) ......................8

Figure 3 : Résultat du programme ..............................................................................................9

Projet neuromimétique - 12 - M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

Projet neuromimétique - 13 - M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

Annexe 1 : La fonction inverse

% approximation de fonction avec l'algorithme backpropagation


% 19/01/03

% initialisation de la fonction à apprendre


clear
for k=1:100
P(1,k)=k;
T(1,k)=1/k;
end
close all,figure(1),plot(P,T,'.b'),hold on
pause

% création d'un objet réseau de neurone


net=newff(minmax(P),[30,1],{'logsig','purelin'},'trainlm');
net.trainParam.epochs=1000
net.trainParam.goal=1e-5
%net.trainParam.lr_inc=1.1
%net.trainParam.lr=0.05
[net,tr]=train(net,P,T);

% simulation du réseau pour vérifier la capacité de généralisation


p=1:1:100; a=sim(net,p); figure(1),plot(p,a,'r')

Annexe 2 : La fonction logarithme

% approximation de fonction avec l'algorithme backpropagation


% 19/01/03

% initialisation de la fonction à apprendre


k=1; % impose le nombre de données d'entrée
P = 0.2:(.1/k):10;
T = log(P);
close all,figure(1),plot(P,T,'.b'),hold on
pause

% création d'un objet réseau de neurone


net=newff(minmax(P),[20,1],{'logsig','purelin'},'trainlm');
net.trainParam.epochs=200
net.trainParam.goal=1e-5
%net.trainParam.lr_inc=2
%net.trainParam.lr=0.5
[net,tr]=train(net,P,T);

% simulation du réseau pour vérifier la capacité de généralisation


p=0.1:0.05:10; a=sim(net,p); figure(1),plot(p,a,'r')

Projet neuromimétique - 14 - M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

Annexe 3 : La fonction exponentielle

% approximation de fonction avec l'algorithme backpropagation


% 19/01/03
clear;
% initialisation de la fonction à apprendre
k=0.01; % impose le nombre de données d'entrée
P = 0:(.001/k):10;
T = exp(-P);
close all,figure(1),plot(P,T,'.b'),hold on
pause

% création d'un objet réseau de neurone


net=newff(minmax(P),[30,1],{'logsig','purelin'},'trainlm');
net.trainParam.epochs=1000
net.trainParam.goal=1e-20
%net.trainParam.lr_inc=1.1
%net.trainParam.lr=0.05
[net,tr]=train(net,P,T);

% simulation du réseau pour vérifier la capacité de généralisation


p=0:0.05:10; a=sim(net,p); figure(1),plot(p,a,'r')

Annexe 4 : La fonction sinus

% approximation de fonction avec l'algorithme backpropagation


% 19/01/03

% initialisation de la fonction à apprendre


n=10; % fonction de difficulté grandissante
k=10; % impose le nombre de données d'entrée
P = -2:(.4/k):2; T = sin(n*P);
close all,figure(1),plot(P,T,'.b'),hold on
pause

% création d'un objet réseau de neurone


net=newff(minmax(P),[10,1],{'logsig','purelin'},'trainlm');
net.trainParam.epochs=1000;
net.trainParam.goal=1e-5;
[netsin,tr]=train(net,P,T);

% simulation du réseau pour vérifier la capacité de généralisation


p=-2:0.01:2; a=sim(net,p); figure(1),plot(p,a,'r')

Projet neuromimétique - 15 - M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

Annexe 5 : Programme exercice 2


clear all;
hold on;

x = 1:1:860;

% Création des matrices ages et weigths


ages=[15 18 28 29 37 44 50 60 61 64 65 72 75 75 82 85 91 97 98 125 142 147 150 159 165
183 192 195 218 219 224 225 227 232 237 246 258 276 285 300 301 305 312 317 338 347
354 357 375 394 513 535 554 591 648 660 705 723 756 768 860];
weigths=[22.23 31.25 44.79 40.55 48.56 52.03 62.3 81 73.09 79.09 71.41 71.9 86.1 94.6
92.5 105 102.3 110 104.3 134.9 135.63 153.75 144.5 142.15 139.81 153.22 145.72 161.1
173.605 173.54 178.86 177.68 173.73 160.635 187.07 176.13 183.4 186.26 189.66 186.09
186.7 186.8 195.1 216.41 203.23 188.38 189.7 195.31 202.63 224.82 203.3 209.7 233.9
234.7 244.3 231 242.4 230.77 242.57 232.12 246.7];

% On trace la courbe avec les valeurs du tableaux et celle en rouge est l'approximation.
figure(1)
plot(ages,weigths)
plot(x,233.846*(1-exp(-.006042*x)),'r')

pause

% création d'un objet réseau de neurone


net=newff(minmax(ages),[80,1],{'logsig','purelin'},'trainlm');
% net.trainParam.lr_inc=1.1
net.trainParam.lr=1;
% net.trainParam.show=50;
net.trainParam.epochs=300;
net.trainParam.goal=1e-2;

[net,tr]=train(net,ages,weigths);

% simulation du réseau pour vérifier la capacité de généralisation


p=1:1:860; a=sim(net,p); figure(1),plot(p,a,'r'),plot(x,233.846*(1-exp(-.006042*x)),'g')

Projet neuromimétique - 16 - M. JP. Urban


SOUBIGOU Antoine DEA – Mulhouse Janvier 2003
LE GUENNOU Pascal

Annexe 6 : Les différentes fonctions d’apprentissage

Projet neuromimétique - 17 - M. JP. Urban

You might also like