Vous êtes sur la page 1sur 4

FIT 4 [INF444] 2009/10

Intelligence artificielle
Vincent Labatut
Universit Galatasaray

TP 8

implmentation du Perceptron

1 Prsentation
Dans ce TP, nous allons manipuler des neurones formels de type McCulloch & Pitts, utilisant la rgle du perceptron pour lapprentissage. Vous trouverez avec ce sujet un projet TP08 contenant un certain nombre de classes : package gui : interface graphique. package perceptron.neuron : classes permettant de dfinir des neurones : o LearningNeuron : neurone implmentant la rgle dapprentissage du perceptron. o FiringNeuron : neurone sans apprentissage, capable seulement dmettre. o AbstractNeuron : classe abstraite contenant les mthodes et champs communs aux deux types de neurones. o TheoreticalOuptut : objet reprsentant la sortie thorique dun neurone. package perceptron.network : classes permettant de dfinir des rseaux : o LearningNetwork : rseau capable dapprentissage, ne contenant quun seul neurone. o FiringNetwork : rseau sans apprentissage, pouvant contenir plusieurs neurones. o AbstractNetwork : classe abstraite contenant les mthodes et champs communs aux deux types de rseaux. o NetworkInput : objet reprsentant une entre dun rseau. package main : classes de lancement.

Le package gui permet de reprsenter un rseau de neurone sous la forme dune fentre contenant autant de sous-fentre quil y a de neurones dans le rseau. Chaque sous fentre montre lvolution des paramtres du neurone en temps rel. Un bouton Dmarrer permet de lancer le traitement (mission et ventuellement apprentissage). Certaines classes sont incompltes, et vous allez devoir dfinir les mthodes manquantes afin dimplmenter les algorithmes tudis en cours.

Intelligence artificielle

FIT 4 [INF444] 2009/10

TP 8 1/4

implmentation du Perceptron

2 Implmentation
2.1 Neurone
Dans limplmentation qui vous est propose, un neurone (FiringNeuron ou LearningNeuron) est caractris par un certain nombre de champs : name : une chane de caractres reprsentant le nom du neurone. weights : un tableau contenant les poids du neurone. inputs : un tableau des objets (autres neurones ou entres du rseau) constituant les entres du neurone. inputValues : un tableau contenant les valeurs issues de ces objets. activation : la valeur dactivation a du neurone. emission : la valeur dmission y du neurone. cycle, iteration : le cycle et litration courants. Si le neurone est capable dapprentissage (LearningNeuron), on trouve en plus les champs suivants : output : lobjet reprsentant la sortie thorique du neurone. theoreticalOutput : la valeur t issue de cet objet. error : la dernire erreur e commise par le neurone. deltas : un tableau des variations apporter aux poids pour raliser lapprentissage. alpha : le coefficient dapprentissage .

Exercice 1
Dans la classe AbstractNeuron, compltez la mthode emit de manire mettre jour les champs activation et emission. Vous utiliserez les valeurs des poids, contenues dans le tableau weights. Les entres du neurone sont contenues dans le tableau inputs : il sagit soit dautres neurones soit des entres du rseau. Utilisez la mthode getValue pour obtenir leur valeur, et mettre jour le tableau inputValues. Remarque : cette implmentation utilise la version de la formule dactivation dans laquelle le seuil est assimil un poids supplmentaire dont lentre associe vaut toujours 1.

Exercice 2
Dans la classe LearningNeuron, compltez la mthode processDeltas de manire calculer les variations apporter aux poids. Ces variations doivent tre stockes dans le tableau deltas. Vous utiliserez les valeurs dentre du neurone (que vous avez prcdemment stockes dans inputValues), le coefficient dapprentissage alpha et la sortie thorique du neurone, que vous pouvez obtenir en utilisant la mthode getValue de lobjet output. Vous devez galement mettre jour les champ error, reprsentant lerreur commise par le neurone (soit ) ainsi que le champ theoreticalOutput.

Exercice 3
Toujours dans la classe LearningNeuron, compltez la mthode updateWeights, qui effectue la mise jour des poids partir du tableau deltas que vous avez calcul.

2.2 Rseau
Un rseau est caractris par : inputs : un tableau dentres.

Intelligence artificielle

FIT 4 [INF444] 2009/10

TP 8 2/4

implmentation du Perceptron

: une liste de couches, chaque couche tant reprsente par un tableau de neurones. Sil sagit dun rseau dapprentissage (LearningNetwork), il ne contient quun seul LearningNeuron, puisque la rgle du perceptron ne permet pas den manipuler plusieurs. Sil sagit dun simple rseau dmission (FiringNetwork), il est possible de combiner plusieurs neurones, mais ceux-ci ne peuvent pas apprendre (FiringNeuron). La mthode run de la classe NetworkRunnable implmente lenchanement des cycles dmission ou dmission+apprentissage (suivant le type de rseau).

layers

Exercice 4
Compltez la mthode run de manire dfinir une condition pour arrter la rptition des cycles. Vous utiliserez la mthode getError de lobjet network, qui renvoie un boolen indiquant si le rseau a fait une erreur lors de la dernire itration (auquel cas la mthode renvoie true). Pour un rseau capable dapprentissage, lerreur consiste calculer une sortie diffrente de la sortie thorique. Pour un rseau incapable dapprentissage, lerreur nest pas ncessaire (la mthode renvoie toujours false).

3 Neurone et
Exercice 5
La classe LearningNetworkLaunch permet de crer un rseau contenant un neurone et de lancer son apprentissage. Avant cela, il faut dabord initialiser le rseau traiter grce la mthode initNetwork. Vous remarquerez que les entres sont initialises de manire former les valeurs , , et . Compltez la mthode de manire faire apprendre loprateur et au neurone. Pour cela, vous devez prcisez la sortie thorique en initialisant le tableau out. Vous devez galement initialiser les poids de dpart weights : utilisez les valeurs , et . Pour , utilisez successivement les valeurs ; et . Combien de cycles fautil ? Pourquoi ?

4 Rseau ou exclusif
Nous avons vu en cours que loprateur logique ou exclusif ne peut pas tre implment par un seul neurone, car cela constitue un problme dont les solutions ne sont pas linairement sparables. Par contre, il est possible dimplmenter simplement loprateur en utilisant un rseau deux entres et contenant trois neurones, connects de la faon suivante :

Comme le seul algorithme dapprentissage que nous connaissons est celui du perceptron, et que cet algorithme permet lapprentissage dun neurone seul, nous devons traiter lapprentissage de chaque neurone sparment.

Exercice 6
Modifiez la mthode initNetwork de manire tenter lapprentissage du ou exclusif avec un seul neurone. Vous utiliserez les mmes poids et coefficient dapprentissage que pour loprateur et. Quobservez-vous ?

Exercice 7
Intelligence artificielle FIT 4 [INF444] 2009/10 TP 8 3/4

implmentation du Perceptron

Modifiez la mthode initNetwork de manire raliser lapprentissage dun neurone possdant la droite de dcision suivante :

0 1 Utilisez les paramtres de dpart , , , et un coefficient dapprentissage de . Vous relverez les poids obtenus la fin de lapprentissage. Quel est loprateur logique implment par ce neurone ?

Exercice 8
Mme exercice pour un neurone 1 possdant la droite de dcision suivante :

0 1 Vous utiliserez les mmes poids de dpart et le mme coefficient dapprentissage. Quel est loprateur logique implment par ce neurone ?

Exercice 9
La table suivante dcrit le comportement de (avec ) et (avec ), ainsi que le comportement que lon voudrait avoir pour (avec ), de manire ce que la sortie de ce neurone corresponde un ou exclusif. x1 0 0 1 1 Quel oprateur logique le neurone x2 0 1 0 1 y1 0 1 1 1 y2 1 1 1 0 t3 0 1 1 0 .

doit-il implmenter ? Calculez les poids de

Exercice 10
La classe FiringNetworkLaunch permet de dfinir un rseau incapable dapprendre mais pouvant contenir plusieurs neurones, et de calculer toutes les valeurs dmission possibles. La mthode initNetwork construit un rseau de trois neurones correspondant la structure dcrite prcdemment. Compltez cette mthode avec les poids obtenus prcdemment, de manire construire un rseau implmentant un ou exclusif, puis testez-le.

Intelligence artificielle

FIT 4 [INF444] 2009/10

TP 8 4/4