16
Université du Québec en Outaouais Département d'informatique et d’ingénierie C.P. 1250 - Hull - Québec J8X 3X7 Téléphone: (819) 595-3900 Télécopieur: (819) 773-1638 Programme de Génie Informatique 7643 Cours Robotique et vision artificielle Sigle du Cours GEN1593 Session - Groupe Hiver 2009 01 Professeur Marek Zaremba Assistant Juba Bernou UQO - Département d’Informatique et d’Ingénierie GEN1593 : Robotique et vision artificielle Laboratoire 3 : Familiarisation avec les RNA (Réseaux de Neurones Artificiels) Objectifs Général Le but de ce travail pratique est de se familiariser avec les réseaux de neurones artificiels. La maîtrise de ces notions est nécessaire afin de pouvoir réaliser des projets de synthèse. Spécifiques Introduction aux réseaux de neurones. Utiliser « Neural Network Toolbox » de MATLAB. Préalable Connaissance de MATLAB et Simulink. Équipement Logiciel : MATLAB.

Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Embed Size (px)

Citation preview

Page 1: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Université du Québec en Outaouais – Département d'informatique et d’ingénierie – C.P. 1250 - Hull - Québec J8X 3X7

Téléphone: (819) 595-3900 Télécopieur: (819) 773-1638

Programme de Génie Informatique 7643

Cours Robotique et vision artificielle

Sigle du Cours GEN1593 Session - Groupe Hiver 2009 01 Professeur Marek Zaremba Assistant Juba Bernou

UQO - Département d’Informatique et d’Ingénierie GEN1593 : Robotique et vision artificielle

Laboratoire 3 : Familiarisation avec les RNA (Réseaux de Neurones Artificiels) Objectifs Général Le but de ce travail pratique est de se familiariser avec les réseaux de neurones artificiels. La maîtrise de ces notions est nécessaire afin de pouvoir réaliser des projets de synthèse. Spécifiques

• Introduction aux réseaux de neurones. • Utiliser « Neural Network Toolbox » de MATLAB.

Préalable

• Connaissance de MATLAB et Simulink. Équipement

• Logiciel : MATLAB.

Page 2: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 2 / 16

Introduction Le fonctionnement du cerveau humain est très compliqué, il capable de résoudre des problèmes très complexes. Bien que nous ayons une bonne compréhension de certaines des opérations de base qui conduisent le cerveau, nous sommes toujours loin de savoir le tout à propos du cerveau.

Figure 1 : Modèle de neurone biologique Microsoft Encarta définit un réseau neurologique en tant que « réseau fortement interconnecté des éléments de traitement de l'information qui imite la connectivité et le fonctionnement du cerveau humain ». Ces réseaux neurologiques peuvent résoudre beaucoup de problèmes qui pourraient être impossibles à résoudre avec des méthodes de programmation traditionnelles. Ils peuvent apprendre d'une manière qui est beaucoup plus semblable à la méthode humaine d'étude, et sont donc beaucoup plus pertinents dans certains domaines tels que la reconnaissance de la parole. Il y a deux types de neurones artificiels :

• discrets • continus.

Voici comment Encarta les définit : Les neurones discrets envoient un signal de sortie de 1 si la somme de signaux reçus est au-dessus d'une certaine valeur critique appelée une valeur seuil, autrement ils envoient un signal de sortie de 0.

Page 3: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 3 / 16

Des neurones continus ne sont pas limités à envoyer des valeurs de sortie de 1 et de 0 seulement; au lieu de cela ils envoient une valeur de sortie entre 1 et 0 selon le montant total d'entrée qu'ils reçoivent. Plus le signal reçu est fort, plus le signal envoyé du nœud est fort et vice-versa. Les neurones continus sont le plus généralement utilisés dans les réseaux neurologiques artificiels réels. En conclusion les réseaux de neurones artificiels ont été conçus à la base du modèle du neurone naturel. Ce dernier étant excité par un stimulus, il y répond selon sa fonction de transfert par une sortie (réponse) qui peut être une atténuation ou une amplification de l'entrée. Dans le cadre de ce cours on s’intéresse particulièrement à l’application des réseaux de neurones dans la prédiction de séries temporelles, ou le contrôle de robots.

Figure 2 : Vue simplifiée d'un réseau artificiel de neurones Réseaux de neurones avec Matlab

On distingue deux types de neurones avec ou sans biais d’entrée (bias input). Le poids w sert à amplifier ou à atténuer l'effet du stimulus sur la réponse.

Figure 3 : Neurone avec ou sans biais d’entrée (bias input)

Page 4: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 4 / 16

Préparation Donner les valeurs de sortie d’un neurone à 2 entrées si :

• le vecteur augmenté d’entrée x = [1, 4, -3] et • le vecteur de poids de pondération w = [-0.4, -0.5, 1], Pour la fonction d’activation :

a) binaire à seuil, b) linéaire à seuil.

Avant de se présenter au laboratoire vous devez remettre vos préparations par courriel.

Page 5: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 5 / 16

Manipulations Partie I : Utilisation de l’interface graphique « Neural Network Fitting Tool » Dans la fenêtre de commande de Matlab exécuter les commandes suivantes : load housing % Charger les données nftool

Appuyer sur « Next » pour continuer, ensuite sélectionner p et t des menus déroulants :

Page 6: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 6 / 16

Vous allez remarquer que les entrées et les cibles sont déjà assignées pour un intervalle de [-1,1]. Appuyer sur « Next » pour continuer, vous allez remarquer que « validation » et « test data sets » sont a 20% de la valeur des données d’origine.

Appuyer sur « Next » pour continuer, vous allez remarquer que le nombre des neurones cachés est de 20, vous pourrez le changer plus tard.

Une fois que le réseau est créé, appuyé sur « Train » pour réaliser l’apprentissage.

Page 7: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 7 / 16

Cette fois l’apprentissage a pris 20 itérations

Page 8: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 8 / 16

Appuyer sur « View Regression » dans la fenêtre de « Neural Network Fitting Tool »

Page 9: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 9 / 16

Le même résultat peut être obtenu en utilisant les commandes suivantes : load housing [p2,ps] = mapminmax(p); [t2,ts] = mapminmax(t); [trainV,val,test] = dividevec(p2,t2,0.20,0.20); net = newff(minmax(p2),[20 1]); [net,tr]=train(net,trainV.P,trainV.T,[],[],val,test); a2 = sim(net,p2); a = mapminmax('reverse',a2,ts); [m,b,r] = postreg(a,t); Pour plus de détails vous pouvez consulter l’aide de Matlab la section suivante : « Using Command-Line Functions :: Getting Started (Neural Network Toolbox)» Appuyer sur « Next » dans la fenêtre de « Neural Network Fitting Tool » pour évaluer le réseau.

Si vous êtes satisfait, appuyer sur « Next » pour sauvegarder le réseau. Ensuite appuyer sur « Finish » pour terminer.

Page 10: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 10 / 16

Partie II : La fonction de transfert La fonction d’activation : de seuillage ou fonction de transfert sert à introduire une non-linéarité dans le fonctionnement du neurone. Les fonctions de seuillage présentent généralement trois intervalles :

1. en dessous du seuil, le neurone est non-actif; 2. aux alentours du seuil, une phase de transition; 3. au-dessus du seuil, le neurone est actif.

Les trois les plus utilisées sont les fonctions : «Seuil» (en anglais «hard limit») «Linéaire» «Sigmoïde». Comme son nom l’indique, la fonction seuil applique un seuil sur son entrée. Plus précisément, une entrée négative ne passe pas le seuil, la fonction retourne alors la valeur 0 (on peut interpréter ce 0 comme signifiant faux), alors qu’une entrée positive ou nulle d´épaisse le seuil, et la fonction retourne 1 (vrai). Pour visualiser la fonction « seuil », dans la fenêtre de commande de Matlab exécuter les commandes suivantes : n = -5:0.1:5; a = hardlim(n); plot(n,a,'c+')

-5 0 50

0.2

0.4

0.6

0.8

1

Figure 4 : La fonction : «Seuil»

Pour visualiser la fonction « linéaire », dans la fenêtre de commande de Matlab exécuter les commandes suivantes : a = purelin(n); plot(n,a,'r+')

Page 11: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 11 / 16

-5 0 5-5

0

5

Figure 5 : La fonction : «Linéaire»

Pour visualiser la fonction « sigmoïde », dans la fenêtre de commande de Matlab exécuter les commandes suivantes : a = logsig(n); plot(n,a,'r+')

-5 0 50

0.2

0.4

0.6

0.8

1

Figure 6 : La fonction : «Sigmoïde»

Dans Simulink les fonctions de transfert sont :

Page 12: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 12 / 16

Figure 7 : Fonctions de transfert Partie III : Le fonctionnement d'un neurone avec NND A ) Dans la fenêtre de commande de Matlab exécuter la commande suivante : nnd2n1

Neural Network DESIGN One-Input Neuron

Alter the weight, biasand input by draggingthe triangular shapedindicators.

Pick the transferfunction with theF menu.

W atch the change tothe neuron functionand its output.

Chapter 2

1

pw

b

a

Input Linear Neuron: a = purelin(w*p+b)

F:

-2 0 2

w

-2 0 2

b

-4 -2 0 2 4-4

-2

0

2

4

p

a

On vous demande de modifier les valeurs du poids w et du biais d’entrée (bias input) b et de visualiser l'effet du stimulus sur la réponse. N’oublier de décrire ce que vous observez. B) Dans la fenêtre de commande de Matlab exécuter la commande suivante : nnd2n2

Neural Network DESIGN Two-Input Neuron

Alter the input valuesby clicking & draggingthe triangle indicators.

Alter the weights andbias in the same way.Use the menu to picka transfer function.

Pick the transferfunction with theF menu.

The net input and theoutput will respond toeach change.

Chapter 2

Input Linear Neuron

a = purelin(w*p+b)

F

-1

0

1

p(1)

-1

0

1

p(2)

-6

6

n

-6

-4

-2

0

2

4

6

a

1

-2 0 2

w(1,1)

-2 0 2

w(1,2)

-2 0 2

b

On vous demande de modifier les valeurs des entrées p(1) et p(2), du poids w et du biais d’entrée (bias input) b et de visualiser l'effet du stimulus sur la réponse. N’oublier de décrire ce que vous observez.

Page 13: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 13 / 16

Partie IV : Un premier exemple de simulation de RNA avec Matlab L’objectif de cette partie est d’utiliser l’approche matricielle pour la simulation des réseaux de neurones sans rétro-propagation avec Matlab. A - Simulation avec des entrées concurrentes dans un réseau statique La figure suivante présente le fonctionnement d'un neurone tel que l'ont décrit Mc Culloch et Pitts. Il s'agit d'une unité arithmétique faisant la somme pondérée des signaux reçus en entrée à laquelle on applique une fonction de transfert, ici la fonction lineaire, afin d'obtenir la réponse de la cellule (notée a).

Avant d’exécuter les commandes suivantes, on vous demande de consulter l’aide de Matlab pour la commande newlin et d’expliquer brièvement le fonctionnement. net = newlin([1 3 ; 1 3],1); % W = [1 2]; net.IW{1,1}=[1 2]; % b = [0]; net.b{1}=0;

P = [1 2 2 3;2 1 3 1]; A = sim(net,P) B - Simulation avec des entrées séquentielles dans un réseau dynamique Simulation avec des entrées concurrentes :

Page 14: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 14 / 16

net = newlin([-1 1],1,[0 1]); net.biasConnect = 0; net.IW{1,1} = [1 2]; P = {1 2 3 4}; A = sim(net,P) C - Simulation avec des entrées concurrentes dans un réseau dynamique P = [1 2 3 4]; A = sim(net,P) P = {[1 4] [2 3] [3 2] [4 1]}; A = sim(net,P) Partie V : Un premier exemple d’apprentissage de RNA avec Matlab L'objectif de l'apprentissage est de fournir une méthode au réseau afin qu'il puisse ajuster ces paramètres lorsqu'on lui présente des exemplaires à traiter. On distingue habituellement trois paradigmes d'apprentissage : supervisé, non supervisé et hybride. Supervisé Dans ce cas on fournit au réseau la donnée à traiter mais aussi la réponse attendue. Le réseau effectue une évaluation de la donnée, puis compare la valeur obtenue avec la valeur désirée, il va ensuite modifier ses paramètres internes afin de minimiser l'erreur constatée. Non supervisé Dans ce cas aucune information (en plus des données à apprendre) n'est fournie au système. Celui-ci est amené à découvrir la structure sous-jacente des données afin de les organiser en clusters. Hybride Cette approche combine méthodes numériques et méthodes symboliques. Certains, utilisent le terme d'apprentissage hybride pour parler d'un couplage supervisé, non supervisé ; dans ce cas il s'agit d'un réseau qui met en parallèle ou en série un réseau entraîné en mode supervisé et un autre en mode non supervisé. Dans Matlab l’apprentissage est lancé soit par la fonction adapt (incrémental) soit par train (par paquets). Ces 2 fonctions auront le même effet. A - Apprentissage incrémental dans un réseau statique net = newlin([-1 1;-1 1],1,0,0); net.IW{1,1} = [0 0]; net.b{1} = 0; P = {[1;2] [2;1] [2;3] [3;1]}; T = {4 5 7 7}; Apprentissage incrémental [net,a,e,pf] = adapt(net,P,T); Si on modifie le taux d’apprentissage a 0,1 vous allez voir comment le réseau va se réajuster par rapport aux entrées. net.inputWeights{1,1}.learnParam.lr=0.1; net.biases{1,1}.learnParam.lr=0.1; [net,a,e,pf] = adapt(net,P,T);

Page 15: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 15 / 16

B - Apprentissage incrémental dans un réseau dynamique net = newlin([-1 1],1,[0 1],0.1); net.IW{1,1} = [0 0]; net.biasConnect = 0; L’apprentissage incrémental de ce réseau présente les entrées et les cibles comme éléments de chaque matrice ou tableau. Pi = {1}; P = {2 3 4}; T = {3 5 7}; [net,a,e,pf] = adapt(net,P,T,Pi); Partie VI : Architecture optimale L’objectif de cette partie est de trouver l’architecture optimale d’un réseau multicouche pour la classification de données de « Iris ». On vous demande d’utiliser deux ensembles de données : un ensemble d’exemples (50%) et un ensemble de données pour la vérification (50%). Essayer les architectures à différente taille en termes de nombre de couches et de nombre de neurones. Donner la valeur minimale de l’erreur obtenue sur l’ensemble de données de vérification, ainsi que les paramètres de la meilleure architecture du réseau. Pour importer les données dans l’espace de travail load iris; Les 4 premières colonnes, on les traite comme les données d'entrée, A1, A2, A3, A4 et la 5e colonne signifie les 3 classes (sorties). Commentaires sur le bon ou le mauvais fonctionnement du réseau de neurones. Comparaison des sorties du réseau de neurones avec le vecteur à trouver. Une brève critique sur l'approche utilisée. Rapport Avant la fin de la séance, vous devrez remettre : %% Le script de Matlab commenté. % Commentaires sur le bon ou le mauvais fonctionnement ... % Avant 09 :00 AM 7 jours après la fin de ce laboratoire, vous devrez remettre un compte rendu individuel.

Page 16: Robotique et vision artificielle - maurise-software.e ...maurise-software.e-monsite.com/medias/files/labo3gen1593.pdf · Cours Robotique et vision artificielle Sigle du Cours GEN15

Laboratoire # 3 - Robotique et vision artificielle - GEN1593 Page - 16 / 16

Annexe A %% Feed-Forward Network - Apprentissage par rétro-propagation % la commande newff est utilisée pour créer un réseau MLP %% On peut créer un réseau simplement avec par exemple : % >> net = newff(PR,[ncc ncs],{'logsig','logsig'}) % PR matrice valeurs min. et max. des entrées, % ncc nombre des neurones de la couche cachée, % ncs nombre des neurones de sortie % et l’entraîner avec : % >> [net,tr] = train(net,P,T) %% Matrice des valeurs min. et max. des entrées % c’est le nombre de lignes de la matrice PR (paramètre d’entrée) % qui indique le nombre de variables d’entrée. PR = [0 1; 0 1]; %% nbre neurones couche cachée, ncc = 2; %% nbre neurones sortie ncs = 1; %% Créer le réseau net = newff(PR,[ncc ncs],{'logsig','logsig'}); % net = newff([0 1; 0 1],[2 1],{'logsig','logsig'}); %% Matrice des entrées qui illustre la fonction logique xor % les vecteurs de données d’entrée doivent être placés % dans les colonnes d’une matrice P P = [1 1 0 0; 1 0 1 0]; %% Matrice des sorties % les données de sortie à obtenir doivent être placées dans un vecteur % ligne T T = [0 1 1 0]; %% Afficher les données plotpv(P,T); %% on simule la sortie de réseau en faisant % une initialisation du réseau de neurone Y = sim (net, P) %% ! keyboard %% On entraîne le réseau % pour 10000 itérations ! net.trainParam.show = 5; net.trainParam.epochs = 10000; net = train(net,P,T); %% % La figure suivante décrit l'entraînement du réseau. %% On simule de nouveau la sortie du réseau Y = sim (net, P)