0% ont trouvé ce document utile (0 vote)
19 vues26 pages

Perceptron multicouche et rétro-propagation

Le document présente le perceptron multicouche (MLP), un type de réseau de neurones qui permet une classification non linéaire et l'approximation de fonctions. Il décrit également le processus d'apprentissage par rétro-propagation du gradient, qui ajuste les poids des neurones en fonction de l'erreur observée. Les étapes clés incluent la propagation avant pour obtenir la sortie et la rétro-propagation pour minimiser l'erreur globale du réseau.

Transféré par

Hou Hou
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
19 vues26 pages

Perceptron multicouche et rétro-propagation

Le document présente le perceptron multicouche (MLP), un type de réseau de neurones qui permet une classification non linéaire et l'approximation de fonctions. Il décrit également le processus d'apprentissage par rétro-propagation du gradient, qui ajuste les poids des neurones en fonction de l'erreur observée. Les étapes clés incluent la propagation avant pour obtenir la sortie et la rétro-propagation pour minimiser l'erreur globale du réseau.

Transféré par

Hou Hou
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Perceptron multicouche et

Retro-propagation du gradient

Zoulikha KOUDAD

February 28, 2023

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Perceptron multicouche

Le perceptron multicouche (MLP: multi-layer perceptron) est


un réseau orienté de neurones articiels organisé en couches et
où l'information voyage dans un seul sens, de la couche
d'entrée vers la couche de sortie. La couche d'entrée ne
contient pas de neurones, c'est une couche virtuelle associe
aux entrées X (t ) du système.
Les neurones sont reliés entre eux par des connexions
pondérées.
Il n'existe pas de connexion entre les neurones d'une même
couche.

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Perceptron multicouche

Un MLP permet de faire une classication non linéaire avec


des frontières de décision convexes, concaves, ouvertes ou
fermées, et permet d'approximer n'importe quelle fonction.
Un réseaux à couche doit contenir au moins une couche avec
fonction d'activation sigmoïde (logistique).

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Perceptron multicouche

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Perceptron multicouche

Dans la suite, on va considérer que tous les fonctions


d'activation des neurones du réseau sont de type sigmoïde
h(x ) = 1+exp(−
1
x)

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Perceptron multicouche

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Apprentissage du réseau

Soit le couple (X (t ), y (t )) désignant la t i me donnée


d'entraînement du réseau.

X (t ) = {x1 (t ) , x2 (t ) , ..., xp (t )} y (t ) = {y1 (t ) , y2 (t ) , ..., yq (t )}

p est le nombre d'éléments de la couche d'entrée ou


nombre de caractéristiques.
q est le nombre de neurones de la couche de sortie, ex:
nombre de classes.
le vecteur de sortie observée est notée
s (t ) = {s1 (t ) , s2 (t ) , ..., sq (t )}.

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Etape 1: propagation avant

consiste à présenter un stimulus (X (t ) à l'entrée du réseau et


le laisser propager jusqu'à la sortie, on obtient la sortie
observée s (t ) d'ici on peut calculer l'erreur observée e (t ).

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Etape 2: rétro-propagation du gradient

(back-propagation)

L'algorithme procède à l'adaptation des poids neurone par


neurone en commençant par la couche de sortie.
soit ej (t ) l'erreur observé pour le neurone de sortie j et la
donnée d'entraînement de l'instant t .

ej (t ) = yj (t ) − sj (t )
Dans ce qui suit
l'indice j représente un neurone de la couche actuelle.
l'indice i représente un neurone de la couche précédente.

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Etape 2 : rétro-propagation du gradient

(back-propagation)

L'erreur globale de la sortie du réseau est donnée par


q
1X 2
E (t ) = e (t )
2 j =1 j

La sortie sj (t ) du neurone j est dénie par


r
!
sj (t ) = h wij (t ) si (t )
X

i =0

ou h est la fonction d'activation sigmoïde / logistique.

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Etape 2: rétro-propagation du gradient

(back-propagation)

soit r
vj (t ) = wij (t ) si (t )
X

i =0

la somme pondérée des entrée du neurone j .


On suppose que la couche précédente contient r neurone.
Pour corriger l'erreur observée, il faut modier les poids wij
t)
dans le sens opposé du gradient de l'erreur ∂∂E(
w (t )
, ainsi on
ij

applique l'algorithme de descente du gradient pour minimiser


l'erreur globale du réseau.

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Rétro-propagation:Cas de la couche de sortie

La règle de descente du gradient est alors la suivante; pour


chaque poids wij de la couche de sortie;
∂E
∆wij = −α.
∂ wij
, ou 0 < α < 1 est le taux d'apprentissage. Puisque
q
1X 2
E (t ) = e (t )
2 j =1 j

Et en utilisant la règle de dérivation en chaîne pour chaque


neurone j de la couche de sortie, on obtient
∂E (t ) ∂E (t ) ∂ ej (t )
= .
∂ wij (t ) ∂ ej (t ) ∂ wij (t )
Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient
Rétro-propagation : Cas de la couche de sortie

Sachant que
ej (t ) = yj (t ) − sj (t )
et
sj (t ) = h (vj (t ))
et r
vj (t ) = wij (t ) si (t )
X

i =0

On peut utiliser encore la règle de dérivation par chaîne


comme suit
∂E (t ) ∂E (t ) ∂ ej (t ) ∂ sj (t ) ∂ vj (t )
= . . . (*)
∂ wij (t ) ∂ ej (t ) ∂ sj (t ) ∂ vj (t ) ∂ wij (t )

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Rétro-propagation : Cas de la couche de sortie

Évaluons les termes du gradient;

∂E (t ) ∂ 12 qk =1 ek2 (t )
P 
=
∂ ej (t ) ∂ ej ( t )
∂ 2 ej (t )
1 2
=
∂ e j (t )
2
= ej (t )
2
= ej (t ) (1)

∂ ej ( t ) ∂ (y (t ) − sj (t ))
=
∂ sj (t ) ∂ sj (t )
= −1 (2)
Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient
Rétro-propagation : Cas de la couche de sortie

∂ sj (t ) ∂ h (vj (t ))
=
∂ vj (t ) ∂ vj (t )
 
1
∂ 1+exp −v (t )
( )j

=
∂ vj (t )
− exp (−vj (t ))
=
− (1 + exp (−vj (t )))2
exp (−vj (t ))
=
(1 + exp (−vj (t )))2

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Rétro-propagation : Cas de la couche de sortie

∂ sj (t ) exp (−vj (t )) 1
= .
∂ v j (t ) 1 + exp (−vj (t )) 1 + exp (−vj (t ))
exp (−vj (t )) + 1 − 1
= .sj (t )
1 + exp (−vj (t ))
1
 
= 1− .sj (t )
1 + exp (−vj (t ))
= sj (t ) (1 − sj (t )) (3)

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Rétro-propagation : Cas de la couche de sortie

et le quatrième terme
Pr 
∂ vj (t ) ∂ l =0 wlj (t ) .sl (t )
=
∂ wij (t ) ∂ wij (t )
∂ (w1j (t ) .s1 (t ) + · · · + wij (t ) .si (t ) + · · · wrj (t ) .sr (t ))
=
∂ wij (t )
= si (t ) (4)

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Rétro-propagation : Cas de la couche de sortie

En résultat
∂E (t )
= ej (t ) (−1) (sj (t )) (1 − sj (t )) (si (t )) (5)
∂ wij (t )
= −ej (t ) (sj (t )) (1 − sj (t )) (si (t )) (6)

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Rétro-propagation : Cas de la couche de sortie

par conséquent
∂E (t )
∆wij (t ) = −α
∂ wij (t )
= −α [−ej (t ) (sj (t )) (1 − sj (t ))] (si (t ))
= α.δj (t ) .si (t )

où [α.δj (t ) .si (t )] est appelé la règle du delta pour la couche


de sortie, et
[δj (t ) = ej (t ) (sj (t )) (1 − sj (t ))] est appelé le gradient local.

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Rétro-propagation : Cas d'une couche cachée

Il faut faire le même travail que pour la couche de sortie, mais


le problème est que nous n'avons pas de sorties désirées pour
les neurones des couches cachées, par conséquent, nous
n'avons pas d'erreur observée e .
On commence par la dernière couche cachée, les autres
couches cachées suivront le même traitement.
par la suite on considère;
j est l'indice d'un neurone de la couche actuelle.
i est l'indice d'un neurone de la couche précédente.
k est l'indice d'un neurone de la couche suivante.
On reprend la même formule du gradient de l'erreur totale (*),
mais sans utiliser ej (t ).
∂E (t ) ∂E (t ) ∂ sj (t ) ∂ vj (t )
= . . (**)
∂ wij (t ) ∂ sj (t ) ∂ vj (t ) ∂ wij (t )
Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient
Rétro-propagation : Cas d'une couche cachée

Les deux derniers termes donnent le même résultat que (3) et


t)
(4). Il reste à évaluer le premier terme ∂∂E(
s (t )
j
.
E est toujours l'erreur globale de la couche de sortie;
q
1X 2
E (t ) = e (t )
2 k =1 k

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Rétro-propagation : Cas d'une couche cachée

Par la suite,
∂E (t ) ek2 (t )
1
Pq 
∂ 2 k =1
=
∂ sj (t ) ∂ sj (t )
Dans le cas des couches cachées, contrairement au cas des
neurones de la couche de sortie, tous les erreurs des neurones
de sortie ek (t ) dépendent de la sortie sj (t ) du neurone j en
question de la couche cachée, ceci implique qu'il n'y aura pas
de constantes à éliminer pendant le processus de dérivation de
la somme. On peut alors écrire,
.............
.............
.............

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Rétro-propagation : Cas d'une couche cachée

Après calcul nous avons trouvé


 
∂E (t )
q
ek (t ) [sk (t ) (1 − sk (t ))] .wjk (t ) (7)
X
=−
∂ sj (t )
k =1
| {z }
gradient local k

En résultat,
∂E (t )
q

δk (t ) .wjk (t ) (8)
X
=−
∂ sj (t )
k =1

Finalement nous aurons


" q
#
∂E (t ) X
= − ek (t ) [sk (t ) (1 − sk (t ))] wjk (t ) sj (t ) (1 − sj (t )) si (t )
∂ w (t )
=1
ij
k

q
!
X
= − (s (t )) (1 − s (t ))
j j δ (t ) w (t ) s (t )
k jk i (9)
k =1

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Rétro-propagation : Cas d'une couche cachée

Donc
∂E (t )
∆wij (t ) = −α = +αδj (t ) si (t ) (10)
∂ wij (t )
Avec le gradient local
q

δj (t ) = sj (t ) (1 − sj (t )) δk (t ) .wjk (t ) (11)
X

k =1

Les équations (10) et (11) sont valides pour toutes les


couches cachées.
Dans la première couche cachée, les si (t ) sont remplacées
par les xi (t ).

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient


Algorithme

1 Initialiser tous les poids par de petites valeurs aléatoires


dans l'intervalle [-0.5, 0.5];
2 Préparer les données d'entraînement;
3 Permuter aléatoirement les données d'entraînement ;
4 Pour chaque donnée d'entraînement t :
a Calculer les sorties observées en propageant
les entrées vers l'avant;
b Ajuster les poids en rétro-propageant l'erreur
observée
wij (t ) = wij (t − 1) + 4wij (t )
= wij (t − 1) + αδj (t ) .si (t )
5 Répéter les étapes 3 et 4 jusqu'à un nombre maximum
d'itérations ou jusqu'à ce que la racine de l'erreur
quadratique moyenne (EQM) soit inférieure à un certain
seuil.
Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient
Algorithme

où le "gradient local" est déni par:

 ej (t ) .sj (t ) . (1 − sj(t )) si j ∈ couche de sortie


δj ( t ) =
 sj (t ) . (1 − sj (t )) . δk (t ) .wjk (t ) si j ∈ couche cach
P
k

avec si (t )la sortie du neurone i sur la couche précédente ou


xi (t ) en cas de la première couche cachée.

Zoulikha KOUDAD Perceptron multicouche et Retro-propagation du gradient

Vous aimerez peut-être aussi