You are on page 1of 11

GEI 457 - Intelligence artificielle et langages associs

Laboratoire sur les rseaux de neurones

Laboratoire sur les RSEAUX DE NEURONES ARTIFICIELS


Objectifs Introduction aux rseaux de neurones artificiels; Familiarisation avec les tapes de conception et ses principes de mise en uvre; Connaissance doutils-types en Matlab pour les rseaux de neurones artificiels de type rtropropagation standard. Directives Ce laboratoire est valu sur 5%. Le travail consiste remplir les questions demandes dans ce compte-rendu et de le remettre la fin du laboratoire. Les scripts Matlab pour les rseaux de neurones artificiels sont donns dans la librairie nnet;nndemos plac dans le rpertoire de Matlab (sur PC: W:\Matlab\Toolbox; sur Macintosh: NOVA.APP;App;Maths;Matlab 4.2.c.1;toolbox). Les scripts pour le laboratoire sont donns dans la librairie rna plac dans le rpertoire du cours GEI 457. Utilisez Matlab 5 (il y a quelques problmes avec la version 5.2). Ce laboratoire peut tre fait de faon individuelle ou en quipe de deux. Je suis aussi disponible pour rpondre vos questions, mais seulement lors de la journe du laboratoire. Ceci nest pas un examen, ni mme un quiz. Lobjectif est que vous vous familiarisiez avec les rseaux de neurones artificiels et leurs concepts. Vous pouvez joindre les impressions des graphes et des rsultats demands en les brochant votre compte-rendu. Chacun des graphes et des impressions remis doit porter votre nom et numro de matricule (pas crit la main: modifiez les scripts pour que ces informations puissent tre sur limpression). Vous pouvez copier vos rsultats dans le formulaire de rponses Labo RNA.x en format Word 98, Word 6 ou Word 5 placs dans la librairie rna, dans le rpertoire du cours GEI 457. Veuillez bien identifier votre copie de compte-rendu de laboratoire.
MATRICULE NOM PRNOM SIGNATURE

Bon laboratoire!
2/8/01 - 1 -

GEI 457 - Intelligence artificielle et langages associs

Laboratoire sur les rseaux de neurones

Partie 1

Fonctions de base connatre

Dans les scripts que vous allez utiliser, un certain nombre de scripts sont frquemment utiliss. Des descriptions sommaires sont donnes ici afin de faciliter votre comprhension. Pour plus dexplications sur les RNA propagation avant et la loi de rtropropagation standard, veuillez vous rfrer votre manuel de cours. initff: Cration dun RNA propagation avant jusqu' trois couches. Initialise les poids et les biais du RNA. Cette fonction prend la matrice de vecteurs dentres P, la fonction de transfert de chaque couche F, et retourne la matrice de poids W et la matrice des biais b pour chaque couche. Ex. pour un RNA 8 units caches, 4 units de sorties, deux couches, avec des fonctions sigmodales: [W1,b1,W2,b2]=initff(P,8,'logsig',4,'logsig'); Il est important que P contienne les valeurs maximale et minimale de chaque entre afin de calculer les meilleurs poids et les biais initiaux. Sinon, il est possible de donner l'intervalle en question. Ex. pour une premire unit dentre dfinie sur lintervalle 10 et la seconde sur lintervalle de 0 5: [W1,b1,W2,b2]=initff([-10 10; 0 5],8,'logsig',4,'logsig'); Si T est la matrice de sortie, on peut aussi utiliser: [W1,b1,W2,b2]=initff(P,8,'logsig',T,'logsig'); simuff: Propagation avant dun vecteur dentre un RNA propagation avant jusqu' trois couches. Cette fonction prend le vecteurs dentres p, la matrice de poids W et la matrice des biais b pour chaque couche, ainsi que la fonction de transfert de chaque couche F, et retourne les sorties a de chaque couche. Ex.: a=simuff(p,W,b,'logsig'); %1 couche [a1,a2]=simuff(p,W1,b1,'logsig',W2,b2,'logsig'); %2 couches [a1,a2,a3]=simuff(p,W1,b1,'logsig',W2,b2,'logsig',W3,b3, 'logsig'); %3 couches deltalog: Drive de lerreur (le delta vector) pour une couche du RNA propagation avant. La fonction deltalog(a,e) retourne ce vecteur pour une couche de sortie utilisant la sigmode comme fonction dactivation, e tant le vecteur derreur du RNA. La fonction deltalog(a,d,W) retourne ce vecteur pour une couche cache, avec d tant le vecteur delta de la couche de sortie. logsig: Fonction dactivation de type sigmode (entre 0 et 1).
2/8/01 - 2 -

GEI 457 - Intelligence artificielle et langages associs

Laboratoire sur les rseaux de neurones

learnbp: Retourne les variations de poids et de biais. Cette fonction prend le vecteurs dentres p, le vecteur delta d et le rythme dapprentissage lr. Ex.: [dW,db]=learnbp(p,d,lr); learnbpm: Retourne les variations de poids et de biais. Cette fonction prend le vecteurs dentres p, le vecteur delta d, le rythme dapprentissage lr, le momentum mc, et les variations de poids et de biais pour le cycle prcdent. Ex.: [dW,db]=learnbpm(p,d,lr,mc,dW,db). trainbp: Fonction qui effectue lapprentissage dun RNA propagation avant, jusqu trois couches. Cette fonction prend la matrice de poids W et de biais b, les fonctions de transfert F, pour chacune des couches. Ces arguments sont suivis des vecteurs1 dentre P, les vecteurs de sorties T, et les paramtres dapprentissage tp. Cette dernire variable indique la frquence de prsentation des rsultats, le nombre maximum dpoques dentranement, la tolrance sur la somme des erreurs au carr juge acceptable (pour indiquer quand lentranement peut tre arrt) et le rythme dapprentissage. La fonction retourne les nouvelles matrices de poids et de biais, le nombre d'poques d'apprentissage et les erreurs enregistres tr. Ex.: tp = [display_frequency max_epoch err_goal lr]; [W,b,epochs,tr]= trainbp(W,b,'F',P,T,tp); % 1 couche [W1,b1,W2,b2,epochs,tr]= trainbp(W1,b1,'F1',W2,b2,'F2',P,T,tp); % 2 couches trainbpm: Fonction qui effectue lapprentissage dun RNA propagation avant, jusqu trois couches, avec momentum. trainbpx: Fonction qui effectue lapprentissage dun RNA propagation avant, jusqu trois couches, avec momentum et rythme d'apprentissage variable. trainlm: Fonction qui effectue lapprentissage dun RNA propagation avant, jusqu trois couches, avec des variantes de type rtropropagation. Note: On utilise habituellement la variable R pour indiquer le nombre de couches, Q pour le nombre de sorties, et Sx pour indiquer le nombre dunits sur la couche x.

Si on dsire faire du batch learning, on soumet les matrices de vecteurs dentre et les matrices de vecteurs de sortie. Sinon, on peut soumettre les vecteurs un par un.
2/8/01 - 3 -

GEI 457 - Intelligence artificielle et langages associs

Laboratoire sur les rseaux de neurones

Partie 2

Dmonstration des principes de base - Effet de la rtropropagation

Ouvrez le script bp1. Ce script dfinit un problme simple utilisant un RNA une entre, une sortie. Le neurone de sortie utilise une fonction de transfert sigmodale, et la sortie obtenue correspond a = log sig( w p + b), avec w, le poids sur le lien entre le neurone dentre et le neurone de sortie, b, le biais, p, lactivation du neurone dentre. NOTE IMPORTANTE: Le biais b correspond en fait la position centrale de la fonction dactivation g (x) sur laxe des x. On le qualifie souvent de seuil o u threshold. Le fait de varier b en cours dapprentissage permet de translater la fonction dactivation (i.e., modifier son seuil). Pour y arriver, on modlise le biais sous la forme dun poids, liant un neurone ne recevant aucune entre et dont lactivation est maximale et toujours fixe, au neurone qui reoit le biais pour valuer son activation. Reprsentez le RNA par un schma simple:

On donne deux vecteurs dapprentissage ce RNA: si on donne -3 en entre, le RNA doit retourner 0.4; si on donne 2 en entre, le RNA doit retourner 0.8. Deux variables doivent tre dtermines par apprentissage dans ce RNA, w et b, e n fonction de lerreur. Sachant que la loi dapprentissage utilise la drive de lerreur en fonction des poids et biais du RNA, on peut reprsenter pour ce problme lerreur du RNA en fonction de w et b. Activez le script pour voir cette reprsentation. On peut voir une reprsentation en trois dimensions et une reprsentation des contours de la surface derreur (plus les lignes sont rapproches, plus la variation de lerreur est grande). Notez quhabituellement, il nest pas possible de tracer de telles reprsentations, car le nombre de poids et de biais est beaucoup plus grand (la surface derreur est alors reprsente en N-dimensions, o N est le nombre de poids et de biais). La premire tape pour lentranement du RNA est dinitialiser le poids et le biais avec initff. Leurs valeurs initiales respectives sont illustres par un + sur la reprsentation de contours. Lorsque le script vous demandera quels poids et biais vous voulez utiliser, prenez les valeurs du guide de lusager (choix 2). Ensuite, le script initialise les paramtres dapprentissage (la frquence daffichage, le nombre maximum dpoques, la tolrance dsire de lerreur (en terme de somme des carrs des erreurs) et le rythme dapprentissage). Le RNA est ensuite prt tre entran en utilisant tbp1, une procdure similaire trainbp mais plus spcifique
2/8/01 - 4 -

GEI 457 - Intelligence artificielle et langages associs

Laboratoire sur les rseaux de neurones

des RNA une couche (i.e., sans couche cache). Au cours de lapprentissage, w et b sont ajusts pour dplacer le RNA vers une erreur minimale. Quel est le nombre dpoques dapprentissage requis? Quelle est la prcision atteinte? Comment faire pour lamliorer?

Le script montre ensuite un graphe de la somme du carr des erreurs, et les valeurs dactivation pour les deux entres donnes lors de lapprentissage. Quelles sont les valeurs de sortie pour -3 et 2 appliques en entre?

Avec laide des valeurs de w et de b rsultantes, retrouver mathmatiquement les sorties obtenues (Note: puisque le neurone de sortie utilise une fonction sigmodale dfinie entre 0 et 1, vous ne pouvez obtenir de rponses ngatives ceci est un signe derreur de calcul).

Si on changeait dans le script la tolrance dsire de la somme des erreurs au carr pour 0.001, quelles seraient le nombre dpoques dapprentissage (en prenant les mmes poids et biais initiaux) et les valeurs de sorties obtenues pour les vecteurs dentre?

Quen dduisez-vous?

2/8/01 - 5 -

GEI 457 - Intelligence artificielle et langages associs

Laboratoire sur les rseaux de neurones

Si vous placez le point de dpart sur le plateau en w = -0.4, b = 4, que se passe-t-il?

Partie 3

Surface derreur non-linaire

La surface derreur dun RNA na habituellement pas un seul minimum, et il est possible que le RNA converge vers un minimum local et y reste pris. Lobjectif est plutt datteindre le minimum global de la surface derreur, mais ceci nest pas garantie. Le script bp2 ralise lapprentissage dun RNA une entre, une sortie, avec huit vecteurs dapprentissage. Pour cette application, la surface derreur a un minimum en plein centre, et deux valles sur les cts mnent des minimums locaux (en haut droite, et en bas droite). Si vous utilisez le poids et le biais initiaux du guide de lusager, vous constaterez que le RNA converge vers le minimum global. Quel est le rythme dapprentissage et le nombre lentranement du RNA? dpoques requis pour raliser

Rptez lentranement avec w = -0.1, b = -2.4. Que se passe-t-il? Pourquoi?

En conclusion, il faut toujours prendre en considration que le RNA puisse converger vers un minimum local, et ceci dpend, entre autres, du point de dpart du RNA sur la surface derreur. Ce point de dpart dpend de linitialisation des poids et des biais du RNA. Partie 4 Effet du rythme dapprentissage

Un paramtre trs important pour lentranement du RNA est le rythme dapprentissage. Il nexiste pas de formule qui permet de fixer ce paramtre pour une application donne. Le meilleur moyen est de faire quelques tests, et de comprendre leffet de ce paramtre sur les performances dapprentissage du RNA. Avec le script bp3, vous pouvez voir leffet du rythme dapprentissage sur la convergence du RNA en fonction de la surface derreur. Pour les prochaines questions, repartez toujours de la position par dfaut.

2/8/01 - 6 -

GEI 457 - Intelligence artificielle et langages associs

Laboratoire sur les rseaux de neurones

Si le rythme dapprentissage est 2, que se passe-t-il?

Si le rythme dapprentissage est 8, que se passe-t-il? Pourquoi?

Si le rythme dapprentissage est 0.16, que se passe-t-il? Combien de fois d e v e z vous ractivez lentranement (avec Go) avant darriver au minimum global de l a surface derreur?

Lorsque vous voulez utiliser un RNA pour un problme donn, vous devez tablir un compromis entre un rythme dapprentissage lev pour un entranement rapide, et suffisamment petit pour converger vers un minimum. Ce choix nest pas toujours facile raliser: des variantes existent o le rythme dapprentissage est modifi en cours dapprentissage en fonction de la variation de lerreur (si la variation de lerreur est petite, alors on augmente le rythme dapprentissage; si elle est grande, alors on diminue le rythme dapprentissage). Partie 5 Apprentissage avec momentum

Lutilisation du momentum lors de lapprentissage permet de diminuer la sensibilit du RNA aux petits dtails prsents dans la surface dapprentissage, comme les minimums locaux. Comme expliqu dans le volume de cours, le momentum ajoute la variation des poids et biais une fraction (dtermine par le paramtre momentum) de la variation des poids et biais de lpoque prcdente. On peut comparer cet effet une acclration (ou un momentum!). Pour mieux comprendre son effet, le script bp4 ralise lentranement dun RNA une entre, une sortie. En partant toujours de la position par dfaut, rpondez aux questions suivantes:

2/8/01 - 7 -

GEI 457 - Intelligence artificielle et langages associs

Laboratoire sur les rseaux de neurones

Que se passe-t-il lorsque le facteur de momentum est nul?

Que se passe-t-il lorsque le facteur de momentum est 1?

Quelle est la valeur de momentum permettant d'atteindre le minimum global? Combien de fois devez-vous ractivez lentranement (avec Go) pour y arriver?

Partie 6

Distinction entre deux spirales - Problme thorique

Passons maintenant une premire application, soit la distinction de deux spirales partir de points (x,y) donns en entre. Dans une telle application, il serait difficile dlaborer des rgles permettant de modliser cette classification. Deux spirales classifier 1 0.8 0.6 y 0.4 0.2 0 0

0.5 x

Pour ce problme, quelle est le nombre dentres et de sortie du RNA?

2/8/01 - 8 -

GEI 457 - Intelligence artificielle et langages associs

Laboratoire sur les rseaux de neurones

Le script spirale sera utilis ici pour lentranement dun RNA pour cette application. Puisque ce problme est non-linaire, un RNA deux couches est ncessaire. En plus de linfluence des poids initiaux du RNA, du rythme dapprentissage et du momentum, il reste dterminer le nombre dunits caches. Ce nombre doit tre suffisamment grand pour permettre au RNA dtablir la fonction de correspondance dsire, mais pas trop grand pour permettre la gnralisation du RNA. Comme critre pour dterminer si un vecteur fut appris par le RNA ou non, la dernire partie du script examine si lerreur sur chacun des vecteur est suprieure 0.5 (soit le niveau servant de distinction entre les deux spirales). En gardant le rythme dapprentissage et le momentum aux valeurs donnes dans le script (lr = 0.15 et mc = 0.9) (soyez patient!): Essayez avec 5 units caches. Le RNA est-il en mesure de distinguer les d e u x spirales? Imprimez vos rsultats en cours dapprentissage, et le nombre de vecteurs non appris. Indiquez vos rsultats sur le formulaire de rponses (rf.: Directives page 1).

Essayez avec 9 units caches. Le RNA est-il en mesure de distinguer les d e u x spirales? Imprimez vos rsultats en cours dapprentissage, et le nombre de vecteurs non appris. Indiquez vos rsultats sur le formulaire de rponses (rf.: Directives page 1).

Expliquez pourquoi, si on rpte l'apprentissage avec une mme configuration, les rsultats diffrent?

Partie 7

Application de reconnaissance de caractres

Dvelopper des machines capables de lire des caractres peut tre trs utile dans le traitement automatique du courrier ou pour lire des chques. La prsente application dmontre comment un RNA rtropropagation peut arriver reconnatre des caractres simples. Le RNA sera conu et entran pour reconnatre les 26 lettres de lalphabet. On suppose avoir notre disposition un systme qui centre chaque lettre dans son champ de vision et la digitalise. Le rsultat est une reprsentation dans un plan de 5 par 7 de la prsence (1) ou non (0) dencre. Lobjectif est de classifier les entres digitalises pour indiquer laquelle des 26 lettres est reconnue. Pour chacun des
2/8/01 - 9 -

GEI 457 - Intelligence artificielle et langages associs

Laboratoire sur les rseaux de neurones

vecteurs dentres, la sortie dsire consiste assigner un 1 au neurone pour la lettre correspondante, et 0 pour les autres. Consultez le fichier prprob (dans le rpertoire pour le laboratoire ou dans le toolbox nnet de Matlab) pour visualiser les vecteurs pour chacune des lettres de lalphabet. Il est noter que la digitalisation peut comporter du bruit, et il sera important de valider cet aspect au cours de lentranement du RNA et par rapport aux performances de lapprentissage. Combien de neurones dentres et de neurones de sorties sont ncessaires pour l e RNA?

Le RNA que nous utiliserons aura deux couches, soit une seule couche cache. Les fonctions de transfert des neurones sont de type sigmodal. Une fois le R N A initialis, le script appcr effectue les oprations suivantes Entranement du RNA avec les donnes du fichier prprob, pour un maximum de 5000 poques; Copie des poids du RNA pour crer un deuxime RNA avec lequel on effectuera un apprentissage avec trois ensembles de donnes bruites pour un maximum de 300 poques. La tolrance sur la somme des erreurs au carr est plus grande; Rapprentissage du deuxime RNA avec les donnes sans bruit; Validation des deux RNA avec diffrents niveaux de bruit, et impression des rsultats. Avant de commencer, ajoutez votre nom et numro de matricule dans le script. En gardant le rythme dapprentissage et le momentum constant, tentez de trouver l e nombre dunits caches minimales pour que le RNA soit en mesure de respecter l e critre darrt dentranement (bas sur la somme du carr des erreurs SSE) dans l e nombre dpoques prescrit.

Imprimer les rsultats obtenus (nombre dunits caches, somme du carr d e s erreurs la fin de lentranement du premier RNA, graphe de comparaison d e s erreurs pour les deux RNA). Indiquez vos rsultats sur le formulaire de rponses (rf.: Directives page 1).

2/8/01 - 10 -

GEI 457 - Intelligence artificielle et langages associs

Laboratoire sur les rseaux de neurones

Avec le script testCharac, vous pouvez aussi utiliser les RNA entrans pour traiter des entres que vous auriez dfinies. Il suffit de modifier la variable lettre dans ce script pour dfinir votre entre, enregistrer le script et donner la commande (dans la fentre Command): testCharac(W1,b1,W2,b2) %Pour le premier RNA testCharac(W1n,b1n,W2n,b2n) %Pour le deuxime RNA Imprimer les rsultats affichs pour la lettre donne dans testCharac, et indiquer la lettre identifie par le RNA. Complter le script pour retourner la lettre e n question. Indiquez vos rsultats sur le formulaire de rponses (rf.: Directives page 1). Essayez avec les lettres M et U et commentez les rsultats obtenus.

2/8/01 - 11 -

You might also like