Vous êtes sur la page 1sur 18

SOUBIGOU Antoine LE GUENNOU Pascal

DEA – Mulhouse

Janvier 2003

Antoine LE GUENNOU Pascal DEA – Mulhouse Janvier 2003 Projet neuromimétique Professeur : M. JP. Urban
Antoine LE GUENNOU Pascal DEA – Mulhouse Janvier 2003 Projet neuromimétique Professeur : M. JP. Urban
Antoine LE GUENNOU Pascal DEA – Mulhouse Janvier 2003 Projet neuromimétique Professeur : M. JP. Urban

Projet neuromimétique

Antoine LE GUENNOU Pascal DEA – Mulhouse Janvier 2003 Projet neuromimétique Professeur : M. JP. Urban
Antoine LE GUENNOU Pascal DEA – Mulhouse Janvier 2003 Projet neuromimétique Professeur : M. JP. Urban
Antoine LE GUENNOU Pascal DEA – Mulhouse Janvier 2003 Projet neuromimétique Professeur : M. JP. Urban
Antoine LE GUENNOU Pascal DEA – Mulhouse Janvier 2003 Projet neuromimétique Professeur : M. JP. Urban

Professeur : M. JP. Urban

M. JP. Urban

SOUBIGOU Antoine LE GUENNOU Pascal

DEA – Mulhouse

SOUBIGOU Antoine LE GUENNOU Pascal DEA – Mulhouse Janvier 2003 Introduction

Janvier 2003

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

I Exercice 1 ………………………………………………… 2

I.1. Le programme.……………………………………………………………………2

I.2. La fonction inverse……………………………………………………………….4

………5

I.3. La fonction logarithme…………………………………………………

I.4. La fonction exponentielle………………………………………………….…… 6

……….6

I.5. La fonction sinus ………………………………………………………

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 LE GUENNOU Pascal

Introduction

DEA – Mulhouse

Janvier 2003

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 LE GUENNOU Pascal

DEA – Mulhouse

Janvier 2003

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 )

f

( x ) =

1

x

f x =

(

)

log

10

(

x

)

f

( x ) = exp(x )

f

( x ) = sin x

1

x

π

 

2

1

x 100

1

x 10

1

x

10

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;

2. k=70;

3. P = -2:(.4/k):2; T = sinc(n*P);

4. close all, figure(1),plot(P,T,'.b'),hold on

5. pause

% fonction de difficulté grandissante

% impose le nombre de données d'entrée

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 LE GUENNOU Pascal

DEA – Mulhouse

Janvier 2003

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 :

9). Voici la fonction à appre ndre, le sinus cardinal : On lance alors le programme

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 :

à chaque epoc h, puis la fonction obtenue par le réseau : A première vu, le
à chaque epoc h, puis la fonction obtenue par le réseau : A première vu, le

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 LE GUENNOU Pascal

DEA – Mulhouse

SOUBIGOU Antoine LE GUENNOU Pascal DEA – Mulhouse Janvier 2003 Pour améliorer l’apprentissage et pour obtenir

Janvier 2003

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 :

exemple, en doublant son nombre le résultat donne ceci : Le résultat obtenu avec les nouveaux

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.

I.2. La fonction inverse Le programme est en annexe 1 . Projet neuromimétique ( f x

Projet neuromimétique

(

f x

) =

1

x

I.2. La fonction inverse Le programme est en annexe 1 . Projet neuromimétique ( f x

- 5 -

M. JP. Urban

SOUBIGOU Antoine LE GUENNOU Pascal

DEA – Mulhouse

SOUBIGOU Antoine LE GUENNOU Pascal DEA – Mulhouse Janvier 2003 On remarque que pour cette courbe,

Janvier 2003

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 =

(

)

La fonction logarithme Le programme est en annexe 2 . f x = ( ) log

log

10

(

x

)

La fonction logarithme Le programme est en annexe 2 . f x = ( ) log
La fonction logarithme Le programme est en annexe 2 . f x = ( ) log

Projet neuromimétique

- 6 -

M. JP. Urban

SOUBIGOU Antoine LE GUENNOU Pascal

DEA – Mulhouse

Janvier 2003

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 )

programme est en annexe 3 . f ( x ) = exp( − x ) Pour
programme est en annexe 3 . f ( x ) = exp( − x ) Pour
programme est en annexe 3 . f ( x ) = exp( − x ) Pour

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 LE GUENNOU Pascal

I.5. La fonction sinus

DEA – Mulhouse

Le programme est en annexe 4.

. f ( x ) = sin x

Janvier 2003

est en annexe 4 . . f ( x ) = sin x Janvier 2003 Là
est en annexe 4 . . f ( x ) = sin x Janvier 2003 Là
est en annexe 4 . . f ( x ) = sin x Janvier 2003 Là

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 :

pour le modèle (20 points pour une période), le résultat est surprenant : Projet neuromimétique -

Projet neuromimétique

- 8 -

M. JP. Urban

SOUBIGOU Antoine LE GUENNOU Pascal

DEA – Mulhouse

Janvier 2003

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 )) + ε

233.846 • (1 − exp( − 0.006042 • x )) + ε Figure 2 : Comparaison

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

Projet neuromimétique

- 9 -

M. JP. Urban

SOUBIGOU Antoine LE GUENNOU Pascal

DEA – Mulhouse

Janvier 2003

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.

d’obtenir une courbe la plus proche possible du modèle. Figure 3 : Résultat du programme En

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 LE GUENNOU Pascal

Conclusion

DEA – Mulhouse

Janvier 2003

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 LE GUENNOU Pascal

DEA – Mulhouse

Janvier 2003

Antoine LE GUENNOU Pascal DEA – Mulhouse Janvier 2003 Figure 1 : Tableau de données de

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 LE GUENNOU Pascal

DEA – Mulhouse

Janvier 2003

SOUBIGOU Antoine LE GUENNOU Pascal DEA – Mulhouse Janvier 2003 Projet neuromimétique - 13 - M.

Projet neuromimétique

- 13 -

M. JP. Urban

SOUBIGOU Antoine LE GUENNOU Pascal

DEA – Mulhouse

Janvier 2003

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 LE GUENNOU Pascal

DEA – Mulhouse

Janvier 2003

 

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 LE GUENNOU Pascal

DEA – Mulhouse

Janvier 2003

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 LE GUENNOU Pascal

DEA – Mulhouse

Janvier 2003

Annexe 6 : Les différentes fonctions d’apprentissage

Mulhouse Janvier 2003 Annexe 6 : Les différentes fonctions d’apprentissage Projet neuromimétique - 17 - M.
Mulhouse Janvier 2003 Annexe 6 : Les différentes fonctions d’apprentissage Projet neuromimétique - 17 - M.

Projet neuromimétique

- 17 -

M. JP. Urban