Professional Documents
Culture Documents
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
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
Introduction
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:
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.
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.
π
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.
f ( x) = sin c( x)
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);
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.
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.
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.
f ( x) = log10 ( x)
Idem que la fonction inverse, l’apprentissage se fait très facilement, même avec un
nombre de neurone faible.
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).
. 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 :
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 :
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 :
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.
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.….).
Figure 2 : Comparaison du modèle non linéaire (rouge) et des données (bleu) ......................8
x = 1:1:860;
% 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
[net,tr]=train(net,ages,weigths);