Vous êtes sur la page 1sur 18

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 2011

TP 2 Commenons les rseaux de neurone avec Matlab

1. Objectif
Ce TP explique comment utiliser deux outils graphiques pour rsoudre des problmes par les rseaux de neurone. Les deux outils que nous allons prsenter dans ce TP sont l'ajustement de fonction et la classification. L'utilisation de ces deux outils nous donnera une excellente introduction l'utilisation de la Bote outils des Rseaux de Neurone (Neural Network Toolbox software).

2. Prsentation des rseaux de neurone


Les rseaux de neurone 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 neurone 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 correspond la cible (target). Typiquement plusieurs tel paires Entr/Cible (Input/Target) sont ncessaire pour former un rseau.

M. HELAOUI

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 2011

Les rseaux de neurone 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.

3. Exemple Illustrative: Classification des fruits


TAF : 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 ? Il est possible dutiliser dautres techniques : dans la command window tapez: >> nnd3hamc Quelle est la nouvelle technique de classification utilise ? Quelle est la technique de classification utilise en tapant la commende ci dessous? >>nnd3hopc Dfinir les rseaux de neurone en prsentant son apport pour lIntelligence Artificielle. Les rseaux neuraux peuvent aussi tre forms pour rsoudre les problmes qui sont difficiles mme pour des ordinateurs conventionnels ou pour les tre humain. La bote outils souligne l'utilisation des rseaux de neurone dans lingnierie, la finance et d'autres applications pratiques.

1. Fonctions dajustement
M. HELAOUI

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 2011

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.

4.1 Prsentation du problme


Pour dfinir un problme la bote outils, arrangeons un ensemble de vecteurs d'entrs Q comme des colonnes dans une matrice. Ensuite, arrangeons un autre ensemble de vecteurs de cible de Q (le vecteur production correct pour chaque vecteur d'entr) 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 : >>inputs = [0 1 0 1; 0 0 1 1]; >>targets = [0 0 0 1]; La sous section suivante dmontre comment apprendre un rseau adapter un ensemble de donnes, utilisant l'outil d'ajustement de rseau de neurone, nftool. Cet exemple utilise le jeu de donnes de logement fourni avec la bote outils.

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


1 Ouvrir loutil dajustement en tapant: >>nftool

M. HELAOUI

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 2011

2 Cliquer Next pour procder.

3 Cliquer Load Example Data Set dans la fentre Select Data. La fentre Fitting Data Set Chooser souvre.
M. HELAOUI

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 2011

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

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 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

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 2011

7 Cliquer Next.

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

M. HELAOUI

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 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

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 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

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 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

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 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 cela de nouveau. Increase le numro de neurones. Get 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 Ensuite. 13 Utilisent les boutons sur cet cran pour produire des scnarios ou sauver vos rsultats.

M. HELAOUI

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 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 a sauv vos rsultats, cliquer Finish.

4.3 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 %
M. HELAOUI

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 2011

% 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); % 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 sauver 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
M. HELAOUI

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 2011

[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. 3 Formez le rseau. Le rseau utilise par dfaut lalgorthme de LevenbergMarquardt 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.

M. HELAOUI

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 2011

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. Pas de surajustement significatif obtenu par l'itration 17 (o on a obtenu la meilleure performance de validation).

M. HELAOUI

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 2011

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 le 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

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 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 ce notre cas, la rponse de rseau est satisfaisante et vous pouvez maintenant utiliser le rseau avec de nouveaux entrs.

M. HELAOUI

Intelligence Artificielle

TP 2 Rseaux de neurone

2010 2011

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

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