8
Le perceptron multicouche et son algorithme de etropropagation des erreurs Marc Parizeau epartement de g´ enie ´ electrique et de g´ enie informatique Universit´ e Laval 10 septembre 2004 Le perceptron multicouche est un r´ eseau orient´ e de neurones artificiels organis´ e en couches et o` u l’information voyage dans un seul sens, de la couche d’entr´ ee vers la couche de sor- tie. La figure 1 donne l’exemple d’un r´ eseau contenant une couche d’entr´ ee, deux couches cach´ ees et une couche de sortie. La couche d’entr´ ee repr´ esente toujours une couche virtuelle associ´ ee aux entr´ ees du syst` eme. Elle ne contient aucun neurone. Les couches suivantes sont des couches de neurones. Dans l’exemple illustr´ e, il y a 3 entr´ ees, 4 neurones sur la premi` ere couche cach´ ee, trois neurones sur la deuxi` eme et quatre neurones sur la couche de sortie. Les sorties des neurones de la derni` ere couche correspondent toujours aux sorties du syst` eme. Dans le cas g´ en´ eral, un perceptron multicouche peut poss´ eder un nombre de couches quel- conque et un nombre de neurones (ou d’entr´ ees) par couche ´ egalement quelconque. Les neurones sont reli´ es entre eux par des connexions pond´ er´ ees. Ce sont les poids de ces connexions qui gouvernent le fonctionnement du r´ eseau et “programment” une appli- cation de l’espace des entr´ ees vers l’espace des sorties ` a l’aide d’une transformation non lin´ eaire. La cr´ eation d’un perceptron multicouche pour r´ esoudre un probl` eme donn´ e passe donc par l’inf´ erence de la meilleure application possible telle que d´ efinie par un ensemble de donn´ ees d’apprentissage constitu´ ees de paires de vecteurs d’entr´ ees et de sorties d´ esir´ ees. Cette inf´ erence peut se faire, entre autre, par l’algorithme dit de r´ etropropagation. 1 Algorithme de r´ etropropagation Soit le couple (x(n), d(n)) esignant la n e donn´ ee d’entraˆ ınement du r´ eseau o ` u: x(n)=<x 1 (n),...,x p (n) > et d(n)=<d 1 (n),...,d q (n) > (1) 1

Le perceptron multicouche et son algorithme de ... · PDF fileLe perceptron multicouche et son algorithme de retropropagation des erreurs´ Marc Parizeau Departement de g´ enie´

  • Upload
    hatruc

  • View
    220

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Le perceptron multicouche et son algorithme de ... · PDF fileLe perceptron multicouche et son algorithme de retropropagation des erreurs´ Marc Parizeau Departement de g´ enie´

Le perceptron multicouche et son algorithme deretropropagation des erreurs

Marc ParizeauDepartement de genieelectrique et de genie informatique

Universite Laval

10 septembre 2004

Le perceptron multicouche est un reseau oriente de neurones artificiels organise en coucheset ou l’information voyage dans un seul sens, de la couche d’entree vers la couche de sor-tie. La figure 1 donne l’exemple d’un reseau contenant une couche d’entree, deux couchescachees et une couche de sortie. La couche d’entree represente toujours une couche virtuelleassociee aux entrees du systeme. Elle ne contient aucun neurone. Les couches suivantes sontdes couches de neurones. Dans l’exemple illustre, il y a 3 entrees, 4 neurones sur la premierecouche cachee, trois neurones sur la deuxieme et quatre neurones sur la couche de sortie. Lessorties des neurones de la derniere couche correspondent toujours aux sorties du systeme.Dans le cas general, un perceptron multicouche peut posseder un nombre de couches quel-conque et un nombre de neurones (ou d’entrees) par coucheegalement quelconque.

Les neurones sont relies entre eux par des connexions ponderees. Ce sont les poids deces connexions qui gouvernent le fonctionnement du reseau et “programment” une appli-cation de l’espace des entrees vers l’espace des sortiesa l’aide d’une transformation nonlineaire. La creation d’un perceptron multicouche pour resoudre un probleme donne passedonc par l’inference de la meilleure application possible telle que definie par un ensemblede donnees d’apprentissage constituees de paires de vecteurs d’entrees et de sorties desirees.Cette inference peut se faire, entre autre, par l’algorithme dit de retropropagation.

1 Algorithme de retropropagation

Soit le couple(~x(n), ~d(n)) designant lane donnee d’entraınement du reseau ou :

~x(n) =<x1(n), . . . , xp(n)> et ~d(n) =<d1(n), . . . , dq(n)> (1)

1

Page 2: Le perceptron multicouche et son algorithme de ... · PDF fileLe perceptron multicouche et son algorithme de retropropagation des erreurs´ Marc Parizeau Departement de g´ enie´

2 1 ALGORITHME DE RETROPROPAGATION2 1 ALGORITHM E DE RETROPROPAGATION

couche couched’entr·ee cach·ee cach·ee

1er couche 2eme couchede sortie

FIG. 1 Exemple d’un r eseau de type perceptron multicouche.

correspondent respectivement auxp entr·ees et auxq sorties d·esir·ees du systeme. L’algorithmede r·etropropagation consiste alors a mesurer l’erreur entre les sorties d·esir·ees !d(n) et lessorties observ ·ees!y(n) :

!y(n) =<y1(n), . . . , yq(n)> (2)

r·esultant de la propagation vers l’avant des entr·ees!x(n), et a r·etropropager cette erreur atravers les couches du r·eseau en allant des sorties vers lesentr·ees.

1.1 Cas de la couche de sortie

L’algorithme de r·etropropagation procede a l’adaptation des poids neurone par neuroneen commenc‚ant par la couche de sortie. Soit l’erreur observ·ee e j(n) pour le neurone de sortiej et la donn·ee d’entra nement n :

ej(n) = dj(n) − yj(n) (3)

ou dj(n) correspond a la sortie d·esir·ee du neurone j et y j(n) a sa sortie observ ·ee. La variablen repr·esentera toujours la donn·ee d’entra nement c’est-a-dire le couple

contenant un vecteur d’entr·ees et un vecteur de sorties d·esir·ees. L’objectif de l’algorithme est d’adapter les poids des connexions du r·eseau de maniere

a minimiser la somme des erreurs sur tous les neurones de sortie. L’indice j repr·esentera toujours le neurone pour lequel on veut adapter les poids.

FIG. 1 –Exemple d’un reseau de type perceptron multicouche.

correspondent respectivement auxp entrees et auxq sorties desirees du systeme. L’algorithmede retropropagation consiste alorsa mesurer l’erreur entre les sorties desirees~d(n) et lessorties observees~y(n) :

~y(n) =<y1(n), . . . , yq(n)> (2)

resultant de la propagation vers l’avant des entrees~x(n), et a retropropager cette erreuratravers les couches du reseau en allant des sorties vers les entrees.

1.1 Cas de la couche de sortie

L’algorithme de retropropagation procedea l’adaptation des poids neurone par neuroneen commencant par la couche de sortie. Soit l’erreur observeeej(n) pour le neurone de sortiej et la donnee d’entraınementn :

ej(n) = dj(n)− yj(n) (3)

ou dj(n) corresponda la sortie desiree du neuronej etyj(n) a sa sortie observee.

Page 3: Le perceptron multicouche et son algorithme de ... · PDF fileLe perceptron multicouche et son algorithme de retropropagation des erreurs´ Marc Parizeau Departement de g´ enie´

1.1 Cas de la couche de sortie 31.1 Casdelacouchedesortie 3

y1

yi

wj0 = θj...

...

wji

wj1

y0 = −1

yr

wjr

yj = ϕ (∑r

i=0 wjiyi)

FIG. 2 Mod ele du neurone j.

Soit E(n) la somme des erreurs quadratiques observ ·ees sur l’ensemble C des neurones desortie :

E(n) =1

2

∑j∈C

e2j(n) (4)

La sortie yj(n) du neurone j est d·e nie par :

yj(n) = ϕ[vj(n)] = ϕ

[r∑

i=0

wji(n)yi(n)

](5)

ou ϕ[.] est la fonction d’activation du neurone,v j(n) est la somme pond·er·ee des entr·ees duneurone j, wji(n) est le poids de la connexion entre le neuronei de la couche pr·ec·edente etle neurone j de la couche courante, et yi(n) est la sortie du neurone i. On suppose ici que lacouche pr·ec·edente contient r neurones num·erot·es de 1 a r, que le poidsw j0(n) correspondau biais du neuronej et que l’entr·eey 0(n) = −1. La gure 2 illustre l’·equation 5.

L’indice i repr·esentera toujours un neurone sur la couche pr·ec·edente par rapport auneurone j ; on suppose par ailleurs que cette couche contientr neurones.

Pour corriger l’erreur observ ·ee, il s’agit de modi er le poids w ji(n) dans le sens oppos·eau gradient ∂E(n)

∂wji(n) de l’erreur (voir gure 3). Cette d·eriv ·ee partielle repr·esente un facteur de sensibilit·e : si je change un peuw ji(n),

est-ce que c‚ a change beaucoupE(n) ? Si oui, alors je vais changer beaucoupw ji(n)dans le sens inverse de cette d·eriv ·ee car cela devrait me rapprocher beaucoup du mini-mum local. Sinon, je dois changer seulement un peuwji(n) pour corriger l’erreur carje suis tout pres de ce minimum !

Puisqu’il y ar neurones sur la couche pr·ec·edant la couche de sortie, il y aaussi r poidsa adapter, et il importe donc de remarquer que la courbe de la gure 3 correspond enfait a une hyper-surface der + 1 dimensions !

Par la regle de cha nage des d·eriv ·ees partielles, qui nous dit que ∂f(y)∂x

= ∂f(y)∂y

·∂y∂x

, on obtient :

∂E(n)

∂wji(n)=

∂E(n)

∂ej(n)·∂ej(n)

∂yj(n)·∂yj(n)

∂vj(n)·

∂vj(n)

∂wji(n), (6)

FIG. 2 –Modele du neuronej.

– La variablen representera toujours la donnee d’entraınement c’est-a-dire le couplecontenant un vecteur d’entrees et un vecteur de sorties desirees.

– L’objectif de l’algorithme est d’adapter les poids des connexions du reseau de manierea minimiser la somme des erreurs sur tous les neurones de sortie.

– L’indice j representera toujours le neurone pour lequel on veut adapter les poids.Soit E(n) la somme des erreurs quadratiques observees sur l’ensembleC des neurones desortie :

E(n) =1

2

∑j∈C

e2j(n) (4)

La sortieyj(n) du neuronej est definie par :

yj(n) = ϕ[vj(n)] = ϕ

[r∑

i=0

wji(n)yi(n)

](5)

ou ϕ[.] est la fonction d’activation du neurone,vj(n) est la somme ponderee des entrees duneuronej, wji(n) est le poids de la connexion entre le neuronei de la couche precedente etle neuronej de la couche courante, etyi(n) est la sortie du neuronei. On suppose ici que lacouche precedente contientr neurones numerotes de 1a r, que le poidswj0(n) correspondau biais du neuronej et que l’entreey0(n) = −1. La figure 2 illustre l’equation 5.

– L’indice i representera toujours un neurone sur la couche precedente par rapport auneuronej ; on suppose par ailleurs que cette couche contientr neurones.

Pour corriger l’erreur observee, il s’agit de modifier le poidswji(n) dans le sens opposeau gradient∂E(n)

∂wji(n)de l’erreur (voir figure 3).

– Cette derivee partielle represente un facteur de sensibilite : si je change un peuwji(n),est-ce que ca change beaucoupE(n) ? Si oui, alors je vais changer beaucoupwji(n)dans le sens inverse de cette derivee car cela devrait me rapprocher beaucoup du mini-mum local. Sinon, je dois changer seulement un peuwji(n) pour corriger l’erreur carje suis tout pres de ce minimum !

Page 4: Le perceptron multicouche et son algorithme de ... · PDF fileLe perceptron multicouche et son algorithme de retropropagation des erreurs´ Marc Parizeau Departement de g´ enie´

4 1 ALGORITHME DE RETROPROPAGATION4 1 ALGORITHM E DE R ETROPROPAGATION

E(n)

wji(n)

∂E(n)∂wji(n)

FIG. 3 Gradient de l’erreur totale.

et on exprime la variation de poids∆w ji(n) sous la forme suivante :

∆wji(n) = −η∂E(n)

∂wji(n)(7)

avec0 ≤ η ≤ 1 repr·esentant untaux d’apprentissage ou gain de l’algorithme.·Evaluons maintenant chacun des termes du gradient.

∂E(n)

∂ej(n)=

1

2

∑k∈C

e2k(n)

∂ej(n)

=1

2·∂e2

j (n)

∂ej(n)

= ej(n)

∂ej(n)

∂yj(n)=

∂[dj(n) − yj(n)]

∂yj(n)

= −1

FIG. 3 –Gradient de l’erreur totale.

– Puisqu’il y ar neurones sur la couche precedant la couche de sortie, il y a aussir poidsa adapter, et il importe donc de remarquer que la courbe de la figure 3 correspond enfait a une hyper-surface der + 1 dimensions !

Par la regle de chaınage des derivees partielles, qui nous dit que∂f(y)∂x

= ∂f(y)∂y

· ∂y∂x

, on obtient :

∂E(n)

∂wji(n)=

∂E(n)

∂ej(n)· ∂ej(n)

∂yj(n)· ∂yj(n)

∂vj(n)· ∂vj(n)

∂wji(n), (6)

et on exprime la variation de poids∆wji(n) sous la forme suivante :

∆wji(n) = −η∂E(n)

∂wji(n)(7)

avec0 ≤ η ≤ 1 representant untaux d’apprentissageougainde l’algorithme.

Evaluons maintenant chacun des termes du gradient.

∂E(n)

∂ej(n)=

12

∑k∈C

e2k(n)

∂ej(n)

=1

2·∂e2

j(n)

∂ej(n)

= ej(n)

Page 5: Le perceptron multicouche et son algorithme de ... · PDF fileLe perceptron multicouche et son algorithme de retropropagation des erreurs´ Marc Parizeau Departement de g´ enie´

1.1 Cas de la couche de sortie 5

∂ej(n)

∂yj(n)=

∂[dj(n)− yj(n)]

∂yj(n)

= −1

∂yj(n)

∂vj(n)=

∂[

1

1+e−vj(n)

]∂vj(n)

=e−vj(n)[

1 + e−vj(n)]2

= yj(n)

[e−vj(n)

1 + e−vj(n)

]

= yj(n)

[e−vj(n) + 1

1 + e−vj(n)− 1

1 + e−vj(n)

]

= yj(n)[1− yj(n)]

Et finalement :

∂vj(n)

∂wji(n)=

[r∑

l=0

wjl(n)yl(n)

]∂wji(n)

=∂[wji(n)yi(n)]

∂wji(n)

= yi(n)

Nous obtenons donc :∂E(n)

∂wji(n)= −ej(n)yj(n)[1− yj(n)]yi(n) (8)

et la regle dite du “delta” pour la couche de sortie s’exprime par :

∆wji(n) = −η∂E(n)

∂wji(n)= ηδj(n)yi(n) (9)

avec :δj(n) = ej(n)yj(n)[1− yj(n)] (10)

qui corresponda ce qu’on appelle le “gradient local”.– Jusqu’ici, nous avons traite seulement le cas de la couche de sortie ! Il reste maintenant

a faire l’adaptation des poids sur les couches cachees. . .– Mais le probleme est qu’on ne dispose plus de l’erreur observee ! ?

Page 6: Le perceptron multicouche et son algorithme de ... · PDF fileLe perceptron multicouche et son algorithme de retropropagation des erreurs´ Marc Parizeau Departement de g´ enie´

6 1 ALGORITHME DE RETROPROPAGATION

1.2 Cas d’une couche cachee

Considerons maintenant le cas des neurones sur la derniere couche cachee (le cas desautres couches cachees est semblable).

– La variablen designera toujours la donnee d’entraınement c’est-a-dire un couple devecteurs d’entrees et de sorties desirees.

– L’objectif sera toujours d’adapter les poids de la couche courante en minimisant lasomme des erreurs sur les neurones de la couche de sortie.

– Les indicesi et j designeront respectivement (comme precedemment) un neurone surla couche precedente et un neurone sur la couche courante.

– L’indice k servira maintenanta designer un neurone sur la couche suivante.Reprenons l’expression de la derivee partielle de l’erreur totaleE(n) par rapporta wji maisen ne derivant plus par rapporta l’erreurej(n) car celle-ci est maintenant inconnue :

∂E(n)

∂wji(n)=

∂E(n)

∂yj(n)· ∂yj(n)

∂vj(n)· ∂vj(n)

∂wji(n)(11)

Par rapport aux resultats obtenus pour la couche de sortie, les deux derniers termes de cetteequation restent inchanges, seul le premier terme requiert d’etreevalue :

∂E(n)

∂yj(n)=

12

∑k∈C

e2k(n)

∂yj(n)

(12)

Notre probleme ici, contrairement au cas des neurones de la couche de sortie, est que tous lesek(n) dans la somme ci-dessus dependent deyj(n). On ne peut donc pas se debarrasser decette somme ! Neanmoins, nous pouvonsecrire :

∂E(n)

∂yj(n)=

∑k∈C

[ek(n) · ∂ek(n)

∂yj(n)

]

=∑k∈C

[ek(n) · ∂ek(n)

∂vk(n)· ∂vk(n)

∂yj(n)

]

=∑k∈C

[ek(n) · ∂ [dk(n)− ϕ(vk(n))]

∂vk(n)· ∂ [

∑l wkl(n)yl(n)]

∂yj(n)

]

=∑k∈C

[ek(n) · (−yk(n)[1− yk(n)]) · wkj]

Et en substituant l’equation 10 on obtient :

∂E(n)

∂yj(n)= −

∑k∈C

δk(n)wkj(n) (13)

Page 7: Le perceptron multicouche et son algorithme de ... · PDF fileLe perceptron multicouche et son algorithme de retropropagation des erreurs´ Marc Parizeau Departement de g´ enie´

1.3 Sommaire de l’algorithme (regle du “delta”) 7

En substituant l’equation 13 dans l’equation 11, on obtient :

∂E(n)

∂wji(n)= −yj(n)[1− yj(n)]

∑k∈C

δk(n)wkj(n)

yi(n) (14)

Et :

∆wji(n) = −η∂E(n)

∂wji(n)= ηδj(n)yi(n) (15)

Avec :δj(n) = yj(n)[1− yj(n)]

∑k∈C

δk(n)wkj(n) (16)

On peut demontrer que lesequations 15 et 16 sont valides pour toutes les couches cachees.Notez bien, cependant, que dans le cas de la premiere couche cachee du reseau, puisqu’il n’ya pas de couche precedente de neurones, il faut substituer la variableyi(n) par l’entreexi(n).

1.3 Sommaire de l’algorithme (regle du “delta”)

L’algorithme de retropropagation standard se resume donca la serie d’etapes suivantes :

1. Initialiser tous les poidsa de petites valeurs aleatoires dans l’intervalle[−0.5, 0.5] ;2. Normaliser les donnees d’entraınement ;3. Permuter aleatoirement les donnees d’entraınement ;4. Pour chaque donnee d’entraınementn :

(a) Calculer les sorties observees en propageant les entrees vers l’avant ;(b) Ajuster les poids en retropropageant l’erreur observee :

wji(n) = wji(n− 1) + ∆wji(n) = wji(n− 1) + ηδj(n)yi(n) (17)

ou le “gradient local” est defini par :

δj(n) =

ej(n)yj(n)[1− yj(n)] Si j ∈ couche de sortie

yj(n)[1− yj(n)]∑k

δk(n)wkj(n) Si j ∈ couche cachee(18)

avec0 ≤ η ≤ 1 representant le taux d’apprentissage etyi(n) representant soitla sortie du neuronei sur la couche precedente, si celui-ci existe, soit l’entreeiautrement.

5. Repeter lesetape 3 et 4 jusqu’a un nombre maximum d’iterations ou jusqu’a ce que laracine de l’erreur quadratique moyenne (EQM) soit inferieurea un certain seuil.

Page 8: Le perceptron multicouche et son algorithme de ... · PDF fileLe perceptron multicouche et son algorithme de retropropagation des erreurs´ Marc Parizeau Departement de g´ enie´

8 1 ALGORITHME DE RETROPROPAGATION

1.4 Regle du “delta generalise”

L’ equation 17 decrit ce qu’on appelle la regle du “delta” pour l’algorithme de retropropa-gation des erreurs. L’equation suivante, nomme regle du “delta generalise”, decrit une autrevariante de l’algorithme :

wji(n) = wji(n− 1) + ηδj(n)yi(n) + α∆wji(n− 1) (19)

ou 0 ≤ α ≤ 1 est un parametre nomme momentumqui represente une espece d’inertie dansle changement de poids.