Vous êtes sur la page 1sur 57

See

discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/266392354

Travaux Pratiques : Intelligence Artificielle

Book July 2011


DOI: 10.13140/2.1.1703.8080

CITATIONS READS

0 1,649

1 author:

Maher Helaoui
Institut Suprieur d'Administration des Entreprises de Gafsa
19 PUBLICATIONS 8 CITATIONS

SEE PROFILE

Some of the authors of this publication are also working on these related projects:

How Machine can take decision? View project

Extended Shortest Path Problem View project

All content following this page was uploaded by Maher Helaoui on 05 October 2014.

The user has requested enhancement of the downloaded file.


Travaux Pratiques :
Intelligence
Artificielle

Enseignant : Maher Helaoui

Maher Helaoui a enseign comme assistant contractuel lInstitut Suprieur


dInformatique de Mahdia, Universit de Monastir, TUNISIE. (2006-2011).

Il est aussi chercheur en Intelligence Artificielle, au Ple de Recherche en


Informatique du Centre (PRINCE), la Facult des Sciences de Monastir FSM.

Contact : maher.helaoui@gmail.com
Site : www.sites.google.com/site/maherhelaoui/Home/

(ISIMa 2011)
Intelligence artificielle Introduction Matlab ISIMa 2011

Sommaire
Premire partie : Introduction Matlab ..................................................................... 2
TP1 Initiation Matlab ..................................................................................................... 3
Introduction ................................................................................................................. 3
Matlab comme interprteur en ligne .......................................................................... 3
Un peu de mthode ...................................................................................................... 4
Ctrl-C Ctrl-V, M-files, fonctions : rationalisons notre travail .................................... 8
Fonctions...................................................................................................................... 9
TAF .............................................................................................................................. 9
Instructions et structures de contrle ......................................................................... 9
Un peu plus sur la programmation ............................................................................10
Les figures ..................................................................................................................10
TAF .............................................................................................................................12
Deuxime partie : LES RESEAUX DE NEURONES ........................................................14
TP2 Ajustement de fonction et classification.................................................................15
Objectif ........................................................................................................................15
Prsentation des rseaux de neurones.......................................................................15
TAF .............................................................................................................................16
TAF : Exemple Illustrative de Classification des fruits ............................................16
(Notes de Lecture) ......................................................................................................16
Fonctions dajustement ..............................................................................................17
TP3 Rseaux perceptron et rgles dapprentissage .......................................................31
Objectif ........................................................................................................................31
Modle de Neurone .....................................................................................................31
TAF .............................................................................................................................33
Architecture ................................................................................................................34
Cration dun perceptron : TAF .................................................................................34
Simulation (sim) .........................................................................................................36
TAF .............................................................................................................................36
Initialization (init) : TAF ............................................................................................37
Rgles daprentissage .................................................................................................37
Rgles dapprentissage du perceptron .......................................................................38
TAF .............................................................................................................................39
Troisime partie : La logique floue .............................................................................41
TP4 Utiliser un rgulateur avec Matlab ........................................................................42
Exemple 0 Application avec Matlab ...........................................................................42
Exemple 1 Contrle du niveau d'eau .........................................................................45
TAF : ...........................................................................................................................48
TP5 Exemple de Freinage ..............................................................................................50
TAF .............................................................................................................................54
Questions ................................................................................................................54
Rfrences de base .........................................................................................................55

M.Helaoui
1
Intelligence artificielle Introduction Matlab ISIMa 2011

Premire partie :
Introduction Matlab

M.Helaoui
2
Intelligence artificielle Initiation Matlab ISIMa 2011

TP1 Initiation Matlab


Introduction

Qu'est ce que Matlab ?


Matlab est un langage de programmation de haut niveau destin au calcul scientifique.
On le trouve dans les applications de :
- calcul,
- dveloppement d'algorithmes,
- modlisation et simulation,
- analyse et visualisation de donnes,
- cration de graphiques scientifiques,
- cration d'application avec interfaces utilisateurs.
Il existe un grand nombre de toolboxes, familles de fonctions tendant les fonctions de
base de Matlab un certain type de problme. On trouve ainsi des toolboxes dans les
domaines du traitement du signal, de la commande des systmes, des rseaux de
neurones, de la logique floue, des ondelettes, de la simulation, etc

Dmarrer Matlab
1. Trouvez Matlab sur votre ordinateur.
2. Dmarrez le programme. Un certain nombre de fentres apparaissent. Les plus
importantes sont l'interprteur en ligne et la fentre Help. Si cette dernire
n'apparat pas, dans l'onglet Help slectionnez Matlab Help.
C'est tout ; l'aide en ligne est extrmement conviviale et permet d'acqurir tout seul la
matrise du logiciel
Ce manuel se propose tout de mme de dcrire l'utilisation du logiciel pour une
utilisation en intelligence artificielle (La logique floue et les rseaux de neurones).

Arrter Matlab
Taper quit ou exit ou fermez les fentres.

A propos des versions


Le prsent manuel a t rdig avec Matlab 2009a sous les yeux. La plupart de ce qui est
crit dans ce manuel s'applique nanmoins aux versions antrieures.

Matlab comme interprteur en ligne

Premiers pas
Au lancement de Matlab, une fentre s'ouvre et propose le prompt >> : on est en
prsence de l'interprteur en ligne.

M.Helaoui
3
Intelligence artificielle Initiation Matlab ISIMa 2011

Premier essai
Taper 2+2 et appuyez sur envoi. L'affichage propose alors :
>> 2+2
ans =
4
>>
Bravo : Matlab sait rsoudre des oprations

Deuxime essai
Taper a=2 et envoi. L'affichage propose :
>> a=2
a=
2
>>
Bravo : Matlab sait manipuler des objets.
Pour travailler en silence : taper a=2; L'affichage propose :
>>a=2;
>>

Troisime essai
Taper i^2. La rponse est :
>> i^2
ans =
-1
>>
Ouf. Matlab sait manipuler des nombres complexes voire compliqus.

Un peu de mthode
TAF.
Choisir un rpertoire de travail (Nom de ltudiant : Tous les exemples, les fichiers.m et
ou fichiers.mat, les figures doivent tre tests et enregistrs dans ce rpertoire)
Avant toutes choses, choisir un rpertoire de travail : c'est dans celui-ci que vous
stockerez vos fichiers personnels. Dans la barre de menu, utilisez File/Set Path

Les expressions
La programmation en Matlab consiste en l'enchanement d'expressions composes de
variables, de nombres, doprateurs et de fonctions.
Variables
Il n'est pas ncessaire de dclarer le type ou la dimension des variables : Matlab choisit
selon le contexte.

M.Helaoui
4
Intelligence artificielle Initiation Matlab ISIMa 2011

Par exemple :
a=2.37
Cre la variable a de dimension 1 et lui attribue la valeur 2.37.
Autre exemple :
>> a(2)=1.5
a=
2.37 1.5
>>
reprend la variable a et modifie sa dimension : c'est maintenant un vecteur de dimension
2 dont la deuxime valeur vaut 1.5
Nombres
Exemples de nombres :
3 -99 0.001
1.6e-20 1i -3.14j
3e5i
Les nombres ont jusqu' 16 chiffres significatifs et doivent rester entre 10-308 et 10+308.
Matrices
Exemple :
>> mamatrice=[1 2 3;4,5,6;7 8,9]
mamatrice =
1 2 3
4 5 6
7 8 9
>>
Les donnes sont entres en ligne, spares par des virgules ou des espaces. Les lignes
sont spares par des point virgules.
Oprateurs
+ Addition - Soustraction
* Multiplication / Division
Puissance ./ Division lment par
lment (matrices)
' Conjugu et transpose .* Multiplication
lment par lment
(matrices)
.' Transpose
Pour la liste des oprateurs disponibles, tapez help ops.
Fonctions
Pour obtenir une liste des fonctions mathmatiques lmentaires taper :
>>help elfun

M.Helaoui
5
Intelligence artificielle Initiation Matlab ISIMa 2011

Pour obtenir une liste des fonctions matricielles lmentaires taper :


>>help elmat
Pour obtenir la liste des fonctions d'une toolbox spcifique, par exemple signal toolbox
(traitement du signal) taper :
>>help signal
Bien sr il est aussi possible de dfinir ses propres fonctions.
Constantes
Un certain nombre de fonctions prdfinies (sans arguments) renvoient les valeurs de
constantes usuelles :
pi 3.14159265358979
i unit imaginaire -1
j pareil que i
eps prcision relative en virgule flottante : 2-52
realmin plus petit nombre en virgule flottante : 2-
1022

realmax plus grand nombre en virgule flottante :


2+1022
Inf Infini (rsultat de 1/0 par exemple)
NaN Not A Number (rsultat de 0/0 par exemple)
Attention : il est possible de raffecter les valeurs de ces constantes (viter d'utiliser i et j
comme indice dans les boucles de calcul, notamment).
Un petit jeu amusant : essayer Inf+Inf, Inf/0, Inf-Inf, realmax+eps, realmax*(1+eps),
etc

Un peu plus sur les matrices


Oprations sur les matrices et fonctions matricielles
Les additions, soustractions transposes et autres inversions de matrices (taper A^-1)
sont triviales.
Un lment de la matrice s'appelle avec les parenthses. Par exemple A(1,3) renvoie
l'lment de la premire ligne, troisime colonne. Attention : pas de colonne 0.
La concatnation de matrice est triviale, attention cependant respecter les dimensions.
(Exemple : Z=[A,B;C,D])
L'oprateur : s'utilise de diffrentes manires :
- pour crer des listes. Par exemple 1:4 renvoie [1 2 3 4] et 1:2:5 renvoie [1 3 5].
- Pour faire appel des sous-parties de matrices. Par exemple A(:,3) renvoie la
troisime colonne de A et A(1:2:k,3) renvoie les k premiers lments impairs de la
troisime colonne de A
- Pour supprimer une ligne ou une colonne. Par exemple X(2,:)=[] supprime la deuxime
ligne (et redimensionne donc la matrice)
Stocker des matrices dans des fichiers

M.Helaoui
6
Intelligence artificielle Initiation Matlab ISIMa 2011

On utilise souvent des matrices de grandes dimensions (rsultats de mesures par


exemple). Les donnes doivent alors tre crites sous forme de tableau, spares par des
blancs et des fins de lignes dans un fichier.dat
Par exemple un fichier donnees.dat cre par n'importe quel diteur de texte contient :
1.001 2.34 0.12
2.44431 2.2 2.0091
3.1 47 4.31112
La commande load donnees.dat charge le fichier sous matlab et cre la matrice donnes.
A l'inverse, disposant sous Matlab d'un tableau rsultat par exemple, il est possible de le
stocker dans un fichier par la commande save fichier_resultat resultat. Il est alors stock
sous forme binaire dans un fichier fichier_resultat.mat et rcuprable par la commande
load. Pour crer un fichier texte1 (ressemblant au fichier donnees.dat par exemple)
utiliser la commande fwrite.

Les structures
Matlab permet de manipuler des donnes sous formes de structures : les donnes sont
ranges dans une arborescence et accessibles par des champs. L'exemple suivant permet
de comprendre comment crer une structure simple :
>> toto.tata=[1 2 3 4]
toto =
tata: [1 2 3 4]
>> toto.titi=2
toto =
tata: [1 2 3 4]
titi: 2
>> toto
toto =
tata: [1 2 3 4]
titi: 2
>>
La structure toto contient deux champs : tata (qui est un vecteur de dimension 4) et titi
(qui est un entier). Pour accder un lment de la structure, on utilise le point :
>> toto.tata
ans =
1 2 3 4
>>
Bien sr, on peut imbriquer plus de deux champs et inclure des variables de nature
diffrentes. Ainsi le "papa du papa du papa de mon papa tait un fameux pioupiou"2
donne :
>>papa.papa.papa.papa='fameux pioupiou';

1 Par exemple pour tre trait par un autre logiciel comme Excel
2 Paroles et musique Boby Lapointe

M.Helaoui
7
Intelligence artificielle Initiation Matlab ISIMa 2011

Ctrl-C Ctrl-V, M-files, fonctions : rationalisons notre travail

Historique
Les flches de direction () permettent de retrouver et modifier les lignes de
commandes prcdentes.
La version 2009a de Matlab propose une fentre command history qui garde en mmoire
les commandes passes dans la session courante et dans les sessions prcdentes.

Copier-Coller (Ctrl-C Ctrl-V)


En pratique on tape les commandes directement dans la fentre de l'interprteur pour de
petits calculs. Lorsque cela devient plus srieux il est beaucoup plus rentable d'utiliser
un diteur de texte pour entrer les expressions (spares par des retours la ligne) puis
de copier-coller dans la fentre Matlab. L'diteur de texte le plus commode est alors celui
de Matlab : dans la barre de menu File / New / M-file.

Scripts
L'tape suivante consiste crer des scripts : il s'agit de fichiers textes comprenant un
ensemble de commandes. Pour cela le plus simple consiste utiliser l'diteur/Debugger
de Matlab.
Crons par exemple un nouveau script :
File / New / M-file
Puis crivons la squence de commande qui nous intresse :
%Mon premier script
a=2;
b=3;
a+b
Sauvegardons ce script dans un fichier : File / Save As puis choisir un nom de fichier, par
exemple essai. Notons que Matlab ajoute l'extension .m par dfaut.
Pour lancer le script depuis Matlab il suffit de taper son nom essai sans l'extension .m.
L'affichage propose alors :
>> essai
ans=
5
>>
Deux remarques :
1. La ligne prcde du caractre % n'a pas t interprte : il s'agit d'une ligne de
commentaires.
2. Seule les expressions qui ne sont pas termines par un point virgule ( ; ) sont visibles
dans la fentre de l'interprteur.

M.Helaoui
8
Intelligence artificielle Initiation Matlab ISIMa 2011

Fonctions
Les M-files permettent aussi de dfinir des fonctions. A la diffrence des scripts, les
variables dfinies dans une fonction sont locales. Examinons par exemple le m-file
comportant les lignes d'instruction suivantes :

function Maxi = Moyenne(Note_2009, Note_2008)


%Cette fonction retourne le maximum des notes entre 2008 et 2009
d'un %etudiant
Maxi=max(Note_2009, Note_2008);

TAF
1. Developper, Moyenne.m la fonction
function Moy = Moyenne(n, Note_2009, Note_2008, coef)
%Cette fonction permet le calcul de la moyenne d'un etudiant tel que
n %est le nombre de notes, Note_200X est lensemble des notes
obtenues en %200X et coef est lensemble des coefficients.

2. Crer les donnes suivant :


Dans Najah.m enregistrer les donnes de Najah
n =10,
Note_2009 = [9 9 9 9 9 9 9 9 9 9],
Note_2008 =[8 11 8 11 11 8 11 8 11 11],
Coef =[2 3 2 3 3 2 3 2 3 3].

La commande >> Najah


Doit retourner la moyenne de Najah.
Dans Raceb.m enregistrer les donnes de Raceb
n =10,
Note_2009 = [9 9 9 9 9 9 9 9 9 9],
Note_2008 =[8 10 8 10 10 8 10 8 10 10],
Coef =[2 3 2 3 3 2 3 2 3 3].

La commande >> Raceb


Doit retourner la moyenne de Raceb.

Instructions et structures de contrle


Matlab dispose d'un certain nombre d'instructions de contrle :
- if
- switch
- for
- while
- continue
- break
Pour la syntaxe exacte et pour des exemples, utiliser l'aide en ligne : help if (par
exemple).

M.Helaoui
9
Intelligence artificielle Initiation Matlab ISIMa 2011

Il est parfois possible de rduire le temps de calcul en utilisant la vectorisation.


Examinons par exemple les lignes suivantes :
A=1:1:100;
for ii=1:1:100
B(ii)=sin(A(ii));
end;
Ces lignes sont strictement quivalentes :
A=1:1:100;
B=sin(A);
Le rsultat produit est le mme que dans la premire version, le temps de calcul plus
court et la lisibilit amliore.

Un peu plus sur la programmation


Le programmeur en Java ou C++ sera rassur de savoir que le langage de
programmation de Matlab est aussi orient-objet. Le lecteur qui vient de lire ces lignes
et qui n'a rien compris est invit attendre les cours d'informatique.

Les figures
Matlab permet de crer des graphiques complexes et d'en contrler les moindres dtails.
Ce chapitre donne l'essentiel savoir ainsi que quelques clefs pour aller plus loin.

Tracer des courbes et crer une figure


La squence d'instruction suivante cre d'abord une figure puis place les commentaires
sur les deux axes et enfin une ligne de titre :
>> x=0:pi/100:pi;
>>y=sin(x);
>>plot(x,y);
>>xlabel('x = 0:2\pi');
>>ylabel('sinus de x');
>>title('sinusode','Fontsize',12);
La figure suivante apparat dans une nouvelle fentre :

M.Helaoui
10
Intelligence artificielle Initiation Matlab ISIMa 2011

sinusode
1

0.8

0.6

0.4

0.2
sinus de x

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7
x = 0:2

Style et couleurs des lignes


Il est possible de choisir le style et la couleur des lignes avec la commande plot :
plot(x,y,'color_style_marker'). 'color_style_marker' est une chane de caractre
comportant jusqu' quatre caractres :
Couleur : 'c', 'm', 'y', 'r', 'g', 'b', 'w'
Style de ligne : '-', '--', ':', '-.', 'none'
Type de ligne : '+', 'o', '*', 'x', 's' (square), 'd' (diamond), etc
La variable 'color_style_marker' peut par exemple prendre la valeur 'y-o' pour que le
trac soit jaune et constitu de ronds relis par un trait continu.

Superposer des courbes


La fonction plot admet un nombre indfini d'arguments et permet de superposer dans
une mme figure plusieurs courbes.
Essayer par exemple : plot(x,y,x,y*2)

Variables complexes
Si Z est un vecteur de nombre complexes la fonction plot(Z) est quivalente
plot(real(Z),imag(Z)).

Ajouter des courbes une figure existante


La commande hold on permet de conserver la figure courante : le trac suivant ne se fait
pas dans une nouvelle fentre mais se superpose au trac prcdent (en adaptant
ventuellement les chelles).

Plusieurs courbes dans une mme fentre


La commande subplot permet de partitionner la fentre de la figure et de tracer
plusieurs courbes. Considrons l'exemple suivant :

x=0:pi/100:pi*2;

M.Helaoui
11
Intelligence artificielle Initiation Matlab ISIMa 2011

subplot(2,2,1);plot(x,sin(x);
subplot(2,2,1);plot(x,sin(x));
subplot(2,2,2);plot(x,cos(x));
subplot(2,1,2);plot(x,cos(x).*cos(x));

La figure cre est reproduite ci-aprs :

1 1

0.5 0.5

0 0

-0.5 -0.5

-1 -1
0 2 4 6 8 0 2 4 6 8

0.8

0.6

0.4

0.2

0
0 1 2 3 4 5 6 7

Le premier subplot partitionne en deux lignes et deux colonnes et place le pointeur sur la
premire case. Le second subplot partitionne de la mme manire et place le pointeur sur
la deuxime case. Le troisime subplot partitionne en deux lignes et une seule colonne et
place le pointeur sur la deuxime case (la deuxime ligne).

Placer des titres et des commentaires


Les commandes xlabel, ylabel, title, text permettent de commenter les axes x, y, de
placer un titre au graphique ou de placer un commentaire n'importe o sur le graphique.

TAF
1. Tracer dans le mme graphe dans un premier subplot les notes de Najah en 2008
et en 2009, et dans un second subplot les notes de Raceb en 2008 et en 2009.

Un peu plus sur les graphiques


Une fois le graphique cr, il est possible de rajouter des titres, des commentaires, etc...
en utilisant la fonction Tools / Edit Plot de la barre de menu de la fentre graphique.
De manire plus gnrale, et cela sort du cadre de ce manuel, les donnes dcrivant
l'ensemble d'un graphique sont stockes sous la forme d'une structure. Il est donc
possible de pointer directement sur un lment d'un graphique (axe, titre, donne, etc)
et de le modifier en utilisant des fonctions spcialises. Pour plus de dtails consulter
l'aide de Matlab.

M.Helaoui
12
Intelligence artificielle Initiation Matlab ISIMa 2011

Rfrences
http://www.mathworks.com/ LA socit Mathworks, qui dveloppe et commercialise Matlab
http://pauillac.inria.fr/cdrom/www/scilab/fra.htm La page officielle de Scilab

M.Helaoui
13
Intelligence artificielle Les rseaux de neurones ISIMa 2011

DEUXIEME PARTIE :
LES RESEAUX DE
NEURONES

M.Helaoui
14
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

TP2 Ajustement de
fonction et
classification
Objectif
Ce TP explique comment utiliser deux outils graphiques : lajustement de fonctions et la
classification. Ceci pour rsoudre des problmes en appliquant la technique des rseaux de neurones.
L'utilisation de ces deux techniques nous donnera une excellente introduction l'utilisation de la bote
outils des rseaux de neurones (neural network toolbox software).

Prsentation des rseaux de neurones


Les rseaux de neurones sont composs par des lments simples fonctionnant en parallle. Ces
lments sont inspirs par des systmes nerveux biologiques. Comme dans la nature, les connexions
entre ces lments dterminent en grande partie la fonction de rseau. Nous pouvons exploiter un
rseau de neurone pour excuter une fonction particulire en ajustant les valeurs (paramtres) des
connexions (des poids) entre ces lments.
Typiquement, les rseaux de neurones sont ajusts, ou forms, pour qu'un objet entr (input) mne
une production cible (target) spcifique. La figure ci dessous illustre une telle situation.
Le rseau est ajust en se basant sur une comparaison de la production et la cible (target), jusqu' ce
que la production de rseau corresponde la cible (target). Typiquement plusieurs tel paires
Entr/Cible (Input/Target) sont ncessaires pour former un rseau.

M.Helaoui
15
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

Les rseaux de neurones ont t forms pour excuter des fonctions complexes dans des divers
domaines, comme la reconnaissance de formes, l'identification, la classification, le discours, la
vision et des systmes de commande.

TAF
- Dcrire le rle des rseaux de neurones en se basant sur la figure ci-dessus.

TAF : Exemple Illustrative de Classification des fruits


- Dans la command window tapez:
>> nnd3pc
- Cliquer sur Go
- Dcrire lexemple.
- Que fera la machine pour classer le fruit ?
- Quelle est la mthode ou technique de classification utilise ?
- Prsenter une modlisation et une description de cette technique.
- Comment cette technique pourra dcider pour classifier le fruit ?
- Ecrire un algorithme qui rsume cette technique de classification (prciser la rgle de
dcision)

- Il est possible dutiliser dautres techniques : dans la command window tapez:


>> nnd3hamc
- Quelle est la nouvelle technique de classification utilise ?
- Prsenter une modlisation et une description de cette deuxime technique.
- Comment cette nouvelle technique pourra dcider pour classifier le fruit ?
- Ecrire un algorithme qui rsume cette technique de classification (prciser la rgle de
dcision)

- Dans la command window tapez:


>>nnd3hopc

- Quelle est la nouvelle technique de classification utilise ?


- Prsenter une modlisation et une description de cette deuxime technique.
- Comment cette nouvelle technique pourra dcider pour classifier le fruit ?
- Ecrire un algorithme qui rsume cette technique de classification (prciser la rgle de
dcision)
- Comment nous pouvons comparer lefficacit de ces trois techniques ?
- Dfinir les rseaux de neurones en prsentant leur apport pour lIntelligence Artificielle.

(Notes de Lecture)
Les rseaux de neurones peuvent aussi tre utiliss pour rsoudre des problmes qui sont difficiles
mme pour des ordinateurs conventionnels ou pour des tres humains. La bote outils souligne
l'utilisation des rseaux de neurones dans lingnierie, la finance et d'autres applications pratiques.

M.Helaoui
16
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

Fonctions dajustement
Supposons, par exemple, que nous avons des donnes d'une demande de logement
[HaRu78]. Nous voulons concevoir un rseau qui peut prvoir la valeur d'une maison, tant
donn 13 pices d'informations gographiques et immobilires. Nous avons un total de 506
exemples de maisons pour lesquelles nous avons ces 13 packs de donnes.

Prsentation du problme

Pour dfinir un problme la bote outils, arrangeons un ensemble de vecteurs


d'entrs Q (input) comme des colonnes dans une matrice. Ensuite, arrangeons un autre
ensemble de vecteurs T cible de Q dans une deuxime matrice. Par exemple, nous pouvons
dfinir le problme dajustement du Boolen ET portant sur quatre ensembles deux lments
de vecteurs d'entrs et un lment de cible comme suit :

>>Q = [0 1 0 1; 0 0 1 1];
>>T = [0 0 0 1];

La sous section suivante dmontre comment apprendre un rseau dadapter un ensemble de


donnes, utilisant l'outil d'ajustement de rseau de neurone, nftool. Cet exemple utilise
lensemble de donnes de logement fourni avec la bote outil.

Utilisation de l'Outil d'Ajustement de Rseau de Neurone

1 Ouvrir loutil dajustement en tapant:

>>nftool

M.Helaoui
17
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

2 Cliquer Next pour procder.

3 Cliquer Load Example Data Set dans la fentre Select Data. La fentre Fitting Data Set Chooser
souvre.
Noter Utiliser les options dentrs (Inputs) et cibles (Targets) dans la fentre Select Data lorsque
vous avez besoin dimporter des donns de MATLAB workspace.

4 Selectionner House Pricing, et cliquer Import. Ceci retourne la fentre Select Data.
5 Cliquer Next pour afficher la fentre Validation and Test Data, voir la figure ci-dessous.
Les ensembles Validation et test data prennent chacun 15% comme valeurs dorigine.

M.Helaoui
18
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

Avec ces fixations de donns, les vecteurs d'entrs et les vecteurs cibles seront alatoirement diviss
dans trois ensembles comme suit :
70% sera utilis pour la formation (training).
15% sera utilis pour valider le rseau gnralis et arrter la formation auparavant de l'ajustement.
Les 15% restante sera utilise comme un test compltement indpendant de la gnralisation de
rseau.

6 Cliquer Next.
Le rseau standard qui est utilis pour l'ajustement de fonction est un rseau feedforward deux
couches, avec une fonction de transfert de sigmoid dans la couche cache et une fonction de transfert
linaire dans la couche de production. Le nombre par dfaut de neurones cachs est mis 10. Vous
pourriez augmenter ce nombre plus tard, si le rseau formant la performance est pauvre.

M.Helaoui
19
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

7 Cliquer Next.

8 Cliquer Train.
La formation continue jusqu' lchec de l'erreur de validation diminuer durant six itrations (l'arrt
de validation).

M.Helaoui
20
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

9 Cliquer Rgression. Ceci est utilis pour valider la performance de rseau.


Les reprsentations de rgression suivantes montrent les productions de rseau en respectant les cibles
forms, la validation et les testes des ensembles. Pour une crise parfaite, les donnes devraient chuter
le long de 45 degr, o les productions de rseau sont gales aux cibles. Pour ce problme, la crise est
raisonnablement bonne pour tous les ensembles de donnes, avec des valeurs de R de 0.93 dans
chaque cas. Si des rsultats encore plus prcis ont t exigs, vous pourriez recycler le rseau par
cliquer Recyclent dans nftool. Cela changera les poids initiaux et les prventions du rseau et peut
produire un rseau amlior aprs Retraining. On fournit d'autres options sur le carreau suivant.

M.Helaoui
21
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

10 Considrez l'histogramme d'erreur pour obtenir une vrification supplmentaire de la performance


de rseau. Sur le Plots pane, cliquer Error Histogram.

M.Helaoui
22
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

Les barres bleues reprsentent des donnes de formation, les barres vertes reprsentent des donnes de
validation et les barres rouges reprsentent des donnes de test. L'histogramme peut vous donner une
indication d'outliers, qui sont des points de donnes o la crise est significativement plus mauvaise que
la majorit de donnes. Dans ce cas, vous pouvez voir que tandis que la plupart d'erreurs chutent entre
-5 et 5, cest un point de formation avec une erreur de 17 et des points de validation avec des erreurs
de 12 et 13. Ces outliers sont aussi visibles sur le complot de rgression de test. Le premier correspond
au point avec une cible de 50 et la production prs de 33. C'est une bonne ide de vrifier l'outliers
pour dterminer si les donnes sont mauvaises, ou si ces points de donnes sont diffrents que le reste
densemble de donnes. Si l'outliers sont des points de donnes valables, mais elles sont diffrentes du
reste des donnes, donc le rseau extrapole pour ces points. Vous devriez rassembler plus de donnes
qui ressemblent aux points d'outlier et recycler le rseau.
11 Cliquer Ensuite dans l'Outil d'Ajustement de Rseau de Neurone pour valuer le rseau.

M.Helaoui
23
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

ce point, vous pouvez tester le rseau contre de nouvelles donnes. Si vous tes peu satisfaits avec la
performance du rseau sur les donnes originales ou nouvelles, vous pouvez faire une des choses
suivantes :
Train de nouveau.
Augmenter le numro de neurones.
Choisir un ensemble plus grand de donnes de formation.
Si la performance sur lensemble de formation est bonne, mais la performance de lensemble de test
est significativement plus mauvaise, qui pourrait indiquer le sur ajustement, donc la rduction du
nombre de neurones peut amliorer vos rsultats. En formant une performance faible, alors vous
pouvez augmenter le nombre de neurones.
12 si vous tes satisfaits de la performance de rseau, cliquez Next.
13 Utilisez les boutons sur cet cran pour produire dautres scnarios ou sauvegarder vos rsultats.

M.Helaoui
24
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

- Vous pouvez cliquer sur le Simple Script ou Advanced Script pour crer le code MATLAB qui
peut tre utilis pour reproduire tous les tapes prcdents de la ligne de commande. La cration du
code MATLAB peut tre utile si vous voulez apprendre comment utilisez la fonctionnalit de ligne
de commande de la bote outils pour personnaliser le processus de formation.
- Vous pouvez aussi faire sauver le rseau comme le rseau dans l'espace de travail. Vous pouvez y
excuter des tests supplmentaires ou le mettre pour travailler sur de nouveaux entrs.
14 Quand vous avez cr le code MATLAB et aprs avoir sauvegard vos rsultats, cliquer Finish.

Comment utiliser la fonctionalit de la ligne de commande

La faon la plus facile d'apprendre comment utiliser la fonctionnalit de ligne de commande


de la bote outils est de produire des scnarios du GUIS et les modifier ensuite pour personnaliser la
formation de rseau. Comme un exemple, regardez le scnario simple qui a t cr l'tape 13 de la
section prcdente.

% Solve an Input-Output Fitting problem with a Neural Network


% Script generated by NFTOOL
%
% This script assumes these variables are defined:
%
% houseInputs - input data.
% houseTargets - target data.
inputs = houseInputs;
targets = houseTargets;
% Create a Fitting Network
hiddenLayerSize = 10;
net = fitnet(hiddenLayerSize);

M.Helaoui
25
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

% Set up Division of Data for Training, Validation, Testing


net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
% Train the Network
[net,tr] = train(net,inputs,targets);
% Test the Network
outputs = net(inputs);
errors = gsubtract(outputs,targets);
performance = perform(net,targets,outputs)
% View the Network
view(net)

% Plots
% Uncomment these lines to enable various plots.
%figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, plotfit(targets,outputs)
%figure, plotregression(targets,outputs)
%figure, ploterrhist(errors)

Vous pouvez sauvegarder le scnario et l'excuter ensuite de la ligne de commande pour vous
reproduire les rsultats de la session GUI prcdente. Vous pouvez aussi diter le scnario
personnaliser le processus de formation. Dans ce cas, suivez chaque scnario.
0 le scnario suppose que les vecteurs d'entrs et les vecteurs cibles sont dj chargs dans l'espace de
travail. Si les donnes ne sont pas charges, vous pouvez les charger comme Suit :
load house_dataset
inputs = houseInputs;
targets = houseTargets;

Cet ensemble de donnes est un des ensembles de donnes types qui fait partie de la bote outils.
Vous pouvez voir une liste de tous les ensembles de donnes disponibles en entrant la commande
help nndatasets.

La commande de chargement vous permet aussi de charger les variables de n'importe quel de ces
ensembles de donnes utilisant votre propre nom de variable.
Par exemple, la commande
[inputs,targets] = house_dataset;

1 Crez un rseau. Le rseau par dfaut pour ajustement de fonction (ou rgression) les problmes,
fitnet, sont un rseau feedforward avec le bronzage-sigmoid par dfaut la fonction de transfert dans la
couche cache et le transfert linaire fonctionne dans la couche de production. Vous avez assign dix
neurones (quelque peu arbitraire) celui couche cache dans la section prcdente. Le rseau a un
neurone de production, parce qu'il y a seulement une valeur cible associe chaque vecteur dentrs.
hiddenLayerSize = 10;
net = fitnet(hiddenLayerSize);
2 Fondez la division de donnes.

net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;

Avec ces fixations, les vecteurs d'entrs et les vecteurs cibles seront alatoirement diviss, avec 70 %
utiliss pour la formation, 15 % pour la validation et 15 % pour le test.

M.Helaoui
26
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

3 Formez le rseau. Le rseau utilise par dfaut lalgorthme de Levenberg-Marquardt pour la


formation the network (trainlm). Pour former le rseau, entrer:

[net,tr] = train(net,inputs,targets);

Pendant la formation, la fentre de formation suivante s'ouvre. Ces affichages de fentre formant le
progrs et vous permettent d'interrompre la formation n'importe quel point en cliquant Stop
Training.

Cette formation s'est arrte quand l'erreur de validation a augment durant six itrations, ce qui se
fera l'itration 23. Si vous cliquez Performance dans la fentre de formation, Un affichage des
erreurs dune formation, des erreurs de validation et des erreurs de test apparat, comme indiqu dans
la figure suivante.
Dans cet exemple, le rsultat est raisonnable cause des considrations suivantes :
L'erreur carre moyenne finale est petite.
L'erreur de lensemble test et lerreur de lensemble validation ont des caractristiques semblables.

M.Helaoui
27
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

Pas de surajustement significatif obtenu par l'itration 17 (o on a obtenu la meilleure performance de


validation).

4 Testez le rseau. Aprs que le rseau a t form, vous pouvez l'utiliser pour calculer les productions
de rseau. Le code suivant calcule les productions de rseau, des erreurs et la performance complte.
outputs = net(inputs);
errors = gsubtract(targets,outputs);
performance = perform(net,targets,outputs)

Il est aussi possible de calculer la performance de rseau seulement sur lensemble de test, en utilisant
les indices de test, qui sont placs dans le rapport de formation.

tInd = tr.testInd;
tstOutputs = net(inputs(tInd));
tstPerform = perform(net,targets(tInd),tstOutputs)

5 Excutez quelques analyses de la rponse de rseau. Si vous cliquez Regression dans la fenetre de
formation (training window), Vous pouvez excuter une rgression linaire entre les productions de
rseau et les cibles correspondantes.
La figure suivante montre les rsultats.

M.Helaoui
28
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

La production suit la trace les bons cibles pour la formation, le test et la validation et la R-valeur est
plus de 0.95 pour la rponse totale. Si des rsultats encore plus prcis ont t exigs, vous pourriez
essayer n'importe laquelle de ces approches :

Reset les poids de rseau initiaux et les prventions nouvelles valeurs avec init et train de nouveau.
Augmenter le nombre de neurones cachs.
Augmenter le nombre de vecteurs de formation.
Augmenter le nombre de valeurs d'entrs, si des informations plus appropries sont disponibles.
Essayez un algorithme de formation diffrent.
Dans notre cas, la rponse de rseau est satisfaisante et vous pouvez maintenant utiliser le rseau avec
de nouveaux entrs.

6 Considrez le diagramme de rseau.


view(net)
Cela cre le diagramme de rseau suivant.

M.Helaoui
29
Intelligence artificielle Ajustement de fonctions et classification ISIMa 2011

Pour obtenir plus d'exprience dans des oprations de ligne de commande, essayez certaines de ces
tches :

Pendant la formation, ouvrez une fentre daffichage (comme laffichage de rgression) et animez la
Affichez de la ligne de commande avec les fonctions comme plotfit, plotregression, plottrainstate et
plotperform.

M.Helaoui
30
Intelligence artificielle Rseaux perceptron et rgles dapprentissage ISIMa 2011

TP3 Rseaux
perceptron et rgles
dapprentissage
Objectif

Ce TP a plusieurs objectifs. D'abord, il vous prsente l'tude de rgles : mthodes


dapprentissage, qui est une procdure par laquelle un rseau est ajust pour faire un
travail particulier.

En effet, ce TP dfinit que signifie une rgle apprenante, explique le rseau perceptron et
son tude de la rgle et vous prsente comment initialiser et simuler des rseaux
perceptron. Il dcrit la bote outils de MATLAB permettant de crer un rseau de
perceptron simple tout en prsentant les fonctions pour initialiser et simuler de tels
rseaux. Le perceptron est utilis comme un lien de ces divers concepts.

Vous pouvez crer des rseaux perceptron avec la fonction newp. Ces rseaux peuvent
tre initialiss, simuls et forms avec init, sim, et train. Le modle de Neurone dcrit
comment les perceptrons travaillent tout en prsentant ces fonctions.

Enfin, nous implmentons un algorithme qui exploite les rgles dapprentissage.

Modle de Neurone
Rosenblatt [Rose61] a cr plusieurs variations de perceptrons. Un du plus simples
tait un rseau dune seule couche dont les poids W et les prventions b pourraient tre
ajusts pour produire un vecteur cible correct en partant dun vecteur dentrs (Input) P.
Le perceptron occupe un grand intrt en raison de sa capacit de se gnraliser de ses
vecteurs de formation et apprendre en partant de connexions initialement alatoirement
distribues. Les perceptrons sont particulirement convenus pour des problmes de la
classification de modle simples. Ils sont des rseaux rapides et fiables pour les
problmes qu'ils peuvent rsoudre. De plus, une comprhension des oprations du
perceptron fournit une bonne base pour comprendre des rseaux plus complexes.

Ci-dessous on prsente un neurone : perceptron, qu'utilise la fonction de transfert


hard-limit hardlim :

M.Helaoui
31
Intelligence artificielle Rseaux perceptron et rgles dapprentissage ISIMa 2011

Chaque entre externe est pondre avec un poids appropri W1j et la somme des
entres pondres est envoye la fonction de transfert hard-limit, qui a aussi une
entre de 1 transmise par le dplacement (la prvention) b. Ci-dessous on prsente la
fonction de transfert hard-limit, qui rend 0 ou 1 :

Le neurone perceptron retourne 1 si lentre du rseau dans la fonction de


transfert est suprieure ou gal 0; sinon il retourne 0.

La fonction de transfert hard-limit donne un perceptron la capacit de classifier des


vecteurs d'entres en divisant l'espace d'entres dans deux rgions. Spcifiquement, les
productions (Outputs) seront 0 si lentre au rseau n est infrieur 0, ou 1 si lentr au
rseau n est suprieur ou gale 0.
La figure suivante montre l'espace dentres d'un neurone hard-limit deux entres avec
les poids W11 =-1, W12=1 et un dplacement b=0.

M.Helaoui
32
Intelligence artificielle Rseaux perceptron et rgles dapprentissage ISIMa 2011

Deux rgions de classification sont formes par la frontire de dcision L : Wp+b=0. Cette
ligne est perpendiculaire la matrice de poids W et change selon le dplacement b. Les
vecteurs d'entrs ci-dessus et gauche de la ligne L aboutiront un rseau dentres
plus grand que 0 et, donc, causent une production de 1 au neurone de hard-limit. Les
vecteurs d'entrs ci-dessous et droite de la ligne L causent une production de 0 au
neurone.

Les neurones de hard-limit sans un dplacement (b=0) auront toujours une ligne de
classification passant l'origine. L'ajout d'un dplacement b permet au neurone de
rsoudre des problmes o les deux ensembles de vecteurs d'entres ne sont pas placs
sur les cts diffrents de l'origine. Le dplacement permet la frontire de dcision
d'tre change loin de l'origine, comme indiqu dans la figure ci-dessus.

TAF
1. Crer un fichier Neurone.m
2. Excuter le programme nnd4db de dmonstration. Avec cela dplacer une
frontire de dcision autour, choisir de nouveaux entres pour classifier et voir
comment l'application rpte de la rgle apprenante rapporte un rseau qui
classifie vraiment les vecteurs d'entres correctement.
3. Trouver trois combinaisons {W,b} permettant de classifier lespace dentres
comme dsir sachant que P= [p1=5, p2=1]. Dans chaque proposition trouver
respectivement la valeur entire minimale respectivement de W11 W12 et b.
Travailler sous forme de commentaires.
4. Reprsenter ces trois solutions dans une mme figure (Utiliser un subplot pour
chaque solution, les trois subplots doivent occuper le mme espace. Dans chaque
subplot reprsenter la droite de dpart L et la droite solution Lsi avec une autre
couleur, noublier pas de tracer W et Wsi).
5. Proposer et implmenter un algorithme (sous forme de fonction nomme
classification) qui en faisant varier progressivement W11 W12 et b permet de
classifier lespace dentres comme dsir. Lalgorithme partira des valeurs de

M.Helaoui
33
Intelligence artificielle Rseaux perceptron et rgles dapprentissage ISIMa 2011

W11 W12 et b trs faible, choisis par lutilisateur, il calcule a, il affiche la dcision
courante, par la suite, il permet lutilisateur de choisir le poids ou le
dplacement qui sera incrment dune unit selon son dsir. Lalgorithme doit
sarrter lorsque a=1. Et il doit afficher W, b et la dcision.
6. Implmenter un second algorithme (sous forme de fonction nomme
classification_opt) qui en faisant varier un seul paramtre choisit par lutilisateur
retourne la valeur optimale de ce paramtre pour laquelle a=1.

Architecture
Le rseau perceptron est form dune seule couche : il sagit de S perceptrons de
neurones connects aux R entres par un un ensemble de poids
Wij, comme indiqu ci-dessous en deux formes. Comme auparavant, les indices de rseau
i et j indiquent que Wij est la force de la connexion du jme entre au ime neurone.

Le perceptron quon va tudier est capable de former seulement une seule couche. Ainsi
on considre des rseaux une seule couche ici. Ce qui nous prsente des limites au
perceptron.

Cration dun perceptron : TAF

1. Dans un fichier Creation_perceptron.m crer un perceptron avec la fonction newp:

net = newp(P,T)

Les paramtres dentres sont comme suit:

M.Helaoui
34
Intelligence artificielle Rseaux perceptron et rgles dapprentissage ISIMa 2011

P est une matrice R-par-Q tel que Q reprsente les vecteurs dentres et R ses
lments.
T est une matrice S-par-Q tel que Q reprsente les vecteurs cible (target) et S ses
lments.

La fonction hardlim est utilise souvent par dfaut pour les perceptrons.

Les commandes suivantes permettent de crer un rseau de perceptron avec un seul


vecteur dentr P qui prend les values 0 et 2, et un neuron avec un vecteur de sortie
(outputs) T qui prend les valeurs 0 ou 1:

P = [0 2];
T = [0 1];
net = newp(P,T);

2. Vrifier que le rseau a t cr en excutant la commande suivante:

inputweights = net.inputweights{1,1}

ce qui produit:

inputweights =
delays: 0
initFcn: 'initzero'
learn: 1
learnFcn: 'learnp'
learnParam: []
size: [1 1]
userdata: [1x1 struct]
weightFcn: 'dotprod'
weightParam: [1x1 struct]

La fonction dapprentissage par dfaut est learnp. Le net dentre de la fonction de


transfert hardlim est dotprod, Ce qui gnre la production du vecteur dentr P et la
matrice des poids W et ajoute b pour calculer le net dentre.

La fonction dinitialisation par dfaut est initzero et elle est utilise pour initialiser les
valeurs des poids 0.

3. Similairement taper

biases = net.biases{1}

donne

biases =
initFcn: 'initzero'
learn: 1

M.Helaoui
35
Intelligence artificielle Rseaux perceptron et rgles dapprentissage ISIMa 2011

learnFcn: 'learnp'
learnParam: []
size: 1
userdata: [1x1 struct]

4. Vrifier que b est aussi initialis 0.

Simulation (sim)

Cette sous section montre comment la fonction sim tourne en utilisant un


problme simple.

Supposons que nous traitons un seul perceptron (netex) avec 2 vecteurs P1 et P2


dentres chacun avec 2 lments P1=[-2 2] et P2=[-2 2]. Ce perceptron a comme sorties
les valeurs 0 et 1.

TAF

1. Crer ce perceptron en utilisant le fichier exemple_sim.m


2. Quelles sont les valeurs initiales des poids et du dplacement b.
3. Nous voulons des poids et un dplacement avec des valeurs diffrentes de celles
dinitialisation pour cela mettez les deux poids et le dplacement -1, 1 et 1, en
utilisant les commandes suivantes :

net.IW{1,1}= [-1 1];


net.b{1} = [1];

4. Afficher les valeurs de ces paramtres par les commandes suivantes:

net.IW{1,1}
ans =
-1 1
net.b{1}
ans =
1

5. Maintenant voir si le rseau rpond deux signaux, un sur chaque ct de la


frontire du perceptron :

p1 = [1;1];
a1 = sim(net,p1)
a1 =
1

Et pour

p2 = [1;-1];

M.Helaoui
36
Intelligence artificielle Rseaux perceptron et rgles dapprentissage ISIMa 2011

a2 = sim(net,p2)
a2 =
0

6. Sassurer que le perceptron a classifi les deux entres correctement.


7. Prsenter les deux entres en ordre et obtenir tous les productions comme suit :

p3 = {[1;1] [1;-1]};
a3 = sim(net,p3)
a3 =
[1] [0]

Initialization (init) : TAF

1. Utiliser la fonction init pour remettre W et b leurs valeurs originales.


Supposons, par exemple, que vous commencez par le rseau utiliser un fichier
nomm exemple_Init.m

net = newp([-2 2;-2 2],[0 1]);


2. Afficher les valeurs de W et b


3. Affecter les valeurs 3 et 4 W et la valeur 5 b
4. Afficher W et b
5. Utiliser la fonction init pour remettere W et b leurs valeurs dorigine:

net = init(net);

6. Afficher les nouvelles valeurs de W et b


7. Changer leffet de la fonction init. Par exemple nous allons faire de sorte que la
fonction init affecte des valeurs alatoires W et b travers les fonctions
initFcns et rands:

net.inputweights{1,1}.initFcn = 'rands';
net.biases{1}.initFcn = 'rands';
net = init(net);

8. Afficher les nouvelles valeurs de W et b

Rgles daprentissage

Une rgle dapprentissage est dfinie comme une procdure pour modifier W et b d'un
rseau. (Cette procdure peut aussi tre mentionne comme un algorithme recevant une
formation.) la rgle apprenante est applique pour apprendre au rseau excuter une
certaine tche particulire. L'tude de rgles dans ce tp traite deux larges catgories :
tude surveille et tude non surveille.

M.Helaoui
37
Intelligence artificielle Rseaux perceptron et rgles dapprentissage ISIMa 2011

Dans l'tude surveille, on fournit la rgle apprenante un ensemble d'exemples


(ensemble de formation) de comportement de rseau appropri

{P1, T1}, {P2,T2},..,{PQ,TQ}

O PQ est lensemble des entres au rseau et TQ est la correspondante correcte


production (cible). Comme les entres sont appliques au rseau, les productions de
rseau sont compares aux cibles. La rgle apprenante est alors utilise pour ajuster W
et b du rseau pour ajuster les productions de rseau vers les cibles. Les rgles
dapprentissage du perceptron assurent lapprentissage de cette catgorie.

Dans l'tude non surveille, W et b sont modifis en rponse seulement des entres au
rseau. Il n'y a aucune production cible disponible. La plupart de ces algorithmes
excutent des oprations pendantes par grappes. Ils catgorisent les modles d'entres
dans un nombre fini de classes. C'est particulirement utile dans de telles applications
que la quantification vectorielle.

Rgles dapprentissage du perceptron

Les perceptrons sont forms et appliqus sur les exemples de comportement


dsirable. Le comportement dsirable peut tre rcapitul par un ensemble d'entrs Pi,
des paires de production Ti. O P est lensemble des entres au rseau et T est la
correspondante correcte production (cible). L'objectif est de rduire l'erreur e, qui est la
diffrence T-a entre la rponse de neurone a et le vecteur cible T. La rgle
dapprentissage du perceptron learnp calcule des changements dsirables W et b du
perceptron, tant donn un vecteur d'entres P et l'erreur associe e. Le vecteur cible T
doit contenir les valeurs de 0 ou 1, parce que un perceptron (avec des fonctions de
transfert de hardlim) peut seulement assurer la production de ces valeurs.

Chaque fois la fonction learnp est excute, le perceptron aura une meilleure chance
dobtenir des productions correctes. La rgle dapprentissage du perceptron est prouve
pour converger vers une solution dans un nombre fini d'itrations si une telle solution
existe.

Si b n'est pas utilis, learnp cherche trouver une solution en variant seulement W pour
classifier les vecteurs d'entres comme 1 et loin de les classifier comme 0. Cela aboutit
une frontire de dcision qui est perpendiculaire W et qui classifie correctement les
vecteurs dentres.

Il y a trois conditions qui peuvent arriver pour un neurone simple une fois qu'un vecteur
d'entre P est prsent et la rponse du rseau a est calcule :

1er CAS. Si un vecteur d'entre P est prsent et la production du neurone est correcte (a
= T et e = T - a = 0), donc le vecteur de poids W ne sera pas chang.

2me CAS. Si la production de neurone est 0 et devrait tre 1 (a = 0 et T = 1 et e = T - a =


1), le vecteur d'entre P sera ajout au vecteur de poids W. Cela fait que le vecteur de
poids W pointe plus prs du vecteur dentr, en augmentant ainsi la chance que le
vecteur d'entre sera classifi comme 1 dans l'avenir.

M.Helaoui
38
Intelligence artificielle Rseaux perceptron et rgles dapprentissage ISIMa 2011

3me CAS. Si la production de neurone est 1 et devrait tre 0 (a = 1 et T = 0 et e = T - a =-


1), le vecteur dentres P est soustrait du vecteur de poids W. Cela fait que le vecteur de
poids pointe plus loin du vecteur dentres, en augmentant la chance que le vecteur
d'entres sera classifi comme 0 dans l'avenir.

La rgle dapprentissage du perceptron peut tre crite en termes de l'erreur e = T - a et


le changement doit tre fait au vecteur de poids deltat W :

CASE 1. Si (e = 0) alors faire

DeltatW = 0.

CASE 2. Si (e = 1) alors

DeltatW = PT.

CASE 3. If (e = -1) alors

DeltatW = -PT.

Ces trois cas peuvent tre rsums par cette expression:

Deltat W=(T-a) PT =ePT

Vous pouvez obtenir l'expression pour des changements de b d'un neurone en notant que
b est simplement un poids qui a toujours des entres de 1 :

Deltat b=(T-a) (1) =e

Pour le cas d'une couche de neurones vous avez

Deltat W=(T-a) (P)T =e(P)T

Et Deltat b=(T-a) (1) =e

TAF

1. Dans un fichier RAP.m commencer avec un neurone simple ayant un


vecteur d'entres avec juste deux lments. Voici des vecteurs d'entres
avec les valeurs -2 et 2 et des productions avec des valeurs 0 et 1 : crer le
perceptron netRAP.
2. Pour simplifier, prendre b = 0 et des valeurs de W de 1 et -0.8:
3. Soit une paire dentres production (target) donne comme suit

p = [1; 2];
t = [1];

4. Calculer la production a et lerreur e.


5. Utiliser la fonction learnp pour calculer la variation de poids dw.

M.Helaoui
39
Intelligence artificielle Rseaux perceptron et rgles dapprentissage ISIMa 2011

dw = learnp(w,p,[],[],[],[],e,[],[],[])
dw =
1 2

6. Calculer les nouveaux poids.


7. Essayer la dmonstration nnd4pr. Il vous permet de choisir des nouveaux
vecteurs d'entres et appliquer la rgle apprenante pour les classifier.
8. Le processus de trouver de nouveaux poids W (et des dplacements b) peut
tre rpt jusqu' il n'y a aucune erreur. Rappelez-vous que le perceptron
garantit que la rgle dapprentissage converge dans un nombre fini
d'tapes pour tous les problmes qui peuvent tre rsolus par un
perceptron. Ceux-ci incluent tous les problmes de classification qui sont
linairement sparables. Les objets tre classifis dans de tels cas
peuvent tre spars par une ligne simple. Implmenter un algorithme de
classification qui exploite les rgles dapprentissage du perceptron.
Implmenter toutes les fonctions utilises.

M.Helaoui
40
Intelligence artificielle Rseaux perceptron et rgles dapprentissage ISIMa 2011

Troisime partie :
La logique floue

M.Helaoui
41
Intelligence artificielle Utiliser un rgulateur avec Matlab ISIMa 2011

TP4 Utiliser un
rgulateur avec
Matlab
Exemple 0 Application avec Matlab

Principe
Le calcul en logique floue ncessite, outre la licence de base MATLAB, l'achat et
l'installation du Fuzzy Control Toolbox. Celui-ci met disposition de l'utilisateur deux
outils fondamentaux:
Un guide de construction du rgulateur par logique floue.
Un bloc fonctionnel intgrer dans un schma de rgulation Simulink.

Conception du rgulateur
On accde la fentre principale du FIS Editor par une instruction sur la ligne de
commande MATLAB: fuzzy

Fig. 1 Fentre principale de l'diteur de logique floue.

M.Helaoui
42
Intelligence artificielle Utiliser un rgulateur avec Matlab ISIMa 2011

On y choisit premirement le nombre d'entres depuis la barre de menu: Edit --> Add
input. On trouve alors sur la fentre principale du FIS Editor autant d'icnes qu'on
veutde signaux d'entres et sorties, et une pour les rgles d'infrence. La partie
infrieure permette de spcifier les mthodes d'infrences. On accde alors une
fentre spcifique par un double clics sur l'icne du signal dont on veut spcifier les
fonctions d'appartenance.

Fig. 2 Fentre de l'diteur de fonctions d'appartenance d'un signal.

On doit y accomplir les actions suivantes, de prfrence dans l'ordre indiqu:


Choix de la gamme de variation de chaque signal, de prfrence [1; 1], ce qui implique
que
les signaux soient d'abord normaliss.
Choix des fonctions d'appartenance depuis la barre de menu: Edit Add MFs... . On
accde alors une fentre qui permet de choisir le nombre de fonctions et leur type. On
prfrera les formes simples triangle trimf et trapze trapmf peu coteuses en
temps et en espace mmoire.
Sur la fentre MF, on choisit le nom et la dimension de chaque fonction
d'appartenance: soit
en dplaant les points du graphique avec la souris, soit en spcifiant le vecteur dans la
fentre params. Pour le nom, un mnmonique tel EZ pour "environ zro" vaut
mieux que mf1 mfn attribus par dfaut. On ferme ensuite chaque fentre de signal.
De retour dans le du FIS Editor, on choisit le nom du signal de prfrence inputk
attribu par dfaut.

M.Helaoui
43
Intelligence artificielle Utiliser un rgulateur avec Matlab ISIMa 2011

Fig. 3 Fentre de l'diteur de fonctions d'appartenance d'un signal: exemple.

Lorsque tous les signaux sont spcifis, on ouvre l'diteur des rgles d'infrence:

Fig. 4 Fentre de l'diteur de rgles d'infrence.

On termine en dfinissant les mthodes pour interprter les combinaisons logiques et


les rgles d'infrence. On recommande ici des choix qui ne soient pas trop gourmands
en temps de calcul, en donnant des rsultats assez bons. Pour le ET logique (And
method), on choisit la mthode produit (prod) et pour le OU logique (Or method), on
choisit la mthode Maximum (max).
Pour les rgles d'infrence, on prfre la mthode somme-produit: Implication: prod et
Agrgation: mean. Pour la dfuzzyfication, on recommande la mthode du centre de
gravit (centroid).
On ferme toutes les fentres secondaires de l'diteur FIS avant d'enregistrer le
rgulateur sur le disque en choisissant un nom dont on se souviendra facilement. Si on
veut ensuite utiliser ce rgulateur dans un schma Simulink, il faut encore l'enregistre
dans l'espace de travail MATLAB: Workspace.

M.Helaoui
44
Intelligence artificielle Utiliser un rgulateur avec Matlab ISIMa 2011

Essai en simulation
On cre un schma Simulink dans lequel on colle un bloc "Fuzzy Logic Controller"
qu'on trouve dans la bote "SIMULINK Fuzzy", elle-mme place dans la bote
"Blocksets & Toolboxes". On doit y spcifier un nom de rgulateur parmi ceux chargs
prcdemment dans l'espace de travail. Ce bloc doit tre prcd de blocs gain chargs
de la normalisation des signaux et suivi d'un gain ajustable de l'amplification du
rgulateur.

Exemple 1 Contrle du niveau d'eau

(http://www.tn.refer.org/hebergement/cours/logique_floue/_we_hinfo/trav1.htm)

On peut construire le rgulateur (contrle du niveau de leau) laide des interfaces


graphiques proposes par la Fuzzy Logic Toolbox ; pour y accder on tapera fuzzy
partir de lenvironnement MATLAB; Le Fis Editor apparat et nous permet alors
daccder aux autres interfaces, on procde alors comme suit :
Avec le Fis Editor On a dfinit les entres; Le niveau Level et sa driv rate; On
dfinit ensuite la sortie commande de la valve: valve, en choisissant les options add
input et add output du menu Edit.

Le menu view permet de passer dune interface graphique une autre. On dfinit
ensuite les ensembles flous et les fonctions dappartenances de lentre level en
utilisant loption add mfs du menu dit. On prcisera alors le type de ces fonctions :
gaussinnes et lintervalle sur le quel varie cette entre.

M.Helaoui
45
Intelligence artificielle Utiliser un rgulateur avec Matlab ISIMa 2011

On fait de mme pour lentre variation de niveau: rate et on sintressera aux petites
variations.

On dfinit ensuite les fonctions dappartenances de la sortie valve selon la commande


quon dsire.

M.Helaoui
46
Intelligence artificielle Utiliser un rgulateur avec Matlab ISIMa 2011

Sur le Rule Editor on dfinit les rgles dinfrences liants les entres et la sortie du
rgulateur. On dfinit chaque fois la relation logique entre les deux entres, ensuite
on choisit la sortie quon va appliquer et on clique sur add rule.

Une fois les entres sont dfinies, ainsi que la sortie et les rgles, on enregistre notre
systme dinfrence (le rgulateur flou cre) dans le workspace sous le nom tank.fis.
Lors de la construction du modle du systme sur SIMULINK on utilisera le bloc Fuzzy
Controller pour modliser le rgulateur flou. Et en cliquant sur ce bloc, on nous invite
prciser quel systme d'infrences on va utiliser, On choisira alors le tank.fis. Une fois
la simulation est lance on peut voir la rponse du systme sur le scope1. Les interfaces
Rule Viewer et Surface Viewer sactivent avec la simulation.

Le rule viewer qui sactive pendant la simulation nous permet de voir la participation

M.Helaoui
47
Intelligence artificielle Utiliser un rgulateur avec Matlab ISIMa 2011

de chaque rgle dans la commande ; il fera ensuite la moyenne pour dduire la


commande valve.

Le graphique de la fonction : Valve = f(level, rate) est donn par la Surface Viewer, si
on remarque bien il y a une asymtrie sur ce graphe ; elle est de lasymtrie de la
sortie valve.

TAF :
1. Copier le dossier fuzzy de la toolbox vers votre rpertoire de travail.

M.Helaoui
48
Intelligence artificielle Utiliser un rgulateur avec Matlab ISIMa 2011

2. A partir de fuzzy.m, crer fuzzy_water.m avec des donnes conformes lexemple 1.

M.Helaoui
49
Intelligence artificielle Exemple de freinage ISIMa 2011

TP5 Exemple de
Freinage

M.Helaoui
50
Intelligence artificielle Exemple de freinage ISIMa 2011

M.Helaoui
51
Intelligence artificielle Exemple de freinage ISIMa 2011

M.Helaoui
52
Intelligence artificielle Exemple de freinage ISIMa 2011

M.Helaoui
53
Intelligence artificielle Exemple de freinage ISIMa 2011

TAF

Questions

1. Dfinire la logique floue et son utilit.


2. Comparer une variable binaire et une variable Floue.
3. Diffrences entre thorie de probabilit, thorie de possibilit et la logique
floue ?
4. Historique de la logique floue ?
5. Les ensembles flous : apports et utilits.
6. Comment la notion de degr dapportenance a t introduite ?
7. Dcrire les diffrentes composantes dun controleur flou ?
8. Etudier le Problme controleur flou de freinage.
9. Crer fuzzy_freinage.m avec des donnes conformes ce problme.

M.Helaoui
54
Intelligence artificielle Rfrences de base ISIMa 2011

Rfrences de base

1. Ben Krose., Patrick. van. der. Smagt. An introduction to Neural Networks, Eighth
edition November, 1996.

2. Cornelius T. Leondes, Fuzzy Logic and Expert Systems Applications, by


ACADEMIC PRESS 1998.

3. Equipe du Laboratoire Analyse et Commande des Systmes


(LACS- Tunisie) avec le soutien de l'Agence Universitaire de la
Francophonie,
http://www.tn.refer.org/hebergement/cours/logique_floue/index.html#

4. Grard Dreyfus. Neural Networks Methodology and Applications, Springer-


Verlag Berlin Heidelberg 2005.

5. La toolbox Rseaux de neurones de Mathlab

6. Valluru B. Rao. C++ Neural Networks and Fuzzy Logic, IDG Books Worldwide,
Inc., 1995.

M.Helaoui
55
View publication stats