Академический Документы
Профессиональный Документы
Культура Документы
« la rétropropagation du gradient »
S. Canu,
laboratoire PSI, INSA de Rouen
équipe « systèmes d’information pour
l’environnement »
asi.insa-rouen.fr/~scanu
Histoire … Les réseaux de neurones pour l’apprentissage
ESSEC, le 28 Juin 2002
• Rappels :
– Moindres carrés stochastiques
– Algorithmes de gradient
– Perceptron Multicouches
• Principe de la rétropropagation
• Algorithmes de rétropropagation
Les réseaux de neurones pour l’apprentissage
Moindres carrés « stochastiques » ESSEC, le 28 Juin 2002
J ( W ) n
WX n
2 WX yi
2 WX yi ' WX X
W i 1 W i 1
J
0
W
impossible (’ ! ) méthode itérative :
winit Algorithme itératif de gradient
Répéter
wnew = wold -
Tant qu ’il reste des mals classés ou que le coût n’évolue plus
Les réseaux de neurones pour l’apprentissage
Algorithme de gradient ESSEC, le 28 Juin 2002
Direction du gradient
J’(W) Le gradient est orthogonal aux lignes
d’iso-coût : argument à la « Taylor »
w1
Les réseaux de neurones pour l’apprentissage
Algorithme de gradient ESSEC, le 28 Juin 2002
Direction du gradient
J’(W)
Minimum du coût w
Les réseaux de neurones pour l’apprentissage
3 solutions ESSEC, le 28 Juin 2002
J ( W ) n
Le gradient : 2 Wx i yi ' Wx i xi
W i 1
J ( W ) n
• Perceptron : ’=1 2 Wx i yi xi
W i 1
• Réseau feedforward
(1986)
x1
xi y
xn 0
• Biais :
– 1
n0 n0 avec x0=1
yj f
w ji xi b
f w ji xi
i 1 i 0
– idem pour toutes les couches (ex : PMC à une couche cachée)
(1)
x0=1 x0 = 1
– W1=[wji]
– W2=[wkj]
xi yk
wji wkj
i=1:n0 j=1:n1 k=1:n2
Les réseaux de neurones pour l’apprentissage
Propagation ESSEC, le 28 Juin 2002
wji wkj
x j1 f a (j1 )
xi yk n1
2 a k2 wkj x j1
j 0
(1)
xj
y k g a k( 2 )
Function y = propag(x,w1,w2)
a1 = [x ones(n,1)]*W1;
x1 = tanh(a1);
a2 = [x1 ones(n,1)]*W2;
y = a2;
Parallélisé sur les exemples
(si x est une matrice, ça marche !)
Calcul de l ’erreur Les réseaux de neurones pour l’apprentissage
ESSEC, le 28 Juin 2002
• Fonction de coût :
– on présente un exemple x=[x1... xn0] (avec ydes sortie désirée)
– on calcule la sortie correspondante y =[y1... yn2]
– erreur : ek ykdes yk
n
1 2 2
– coût associé à l ’exemple : J ( exemple ) ek
2 k 1
n
– coût global : J J ( exemple l)
l 1
Les réseaux de neurones pour l’apprentissage
Calcul du gradient ESSEC, le 28 Juin 2002
J J
• Problème = calcul de w ji
et wkj
Les réseaux de neurones pour l’apprentissage
Couche de sortie ESSEC, le 28 Juin 2002
J
wkj
wkj
• Calcul
J
de
J y a 2 pour un exemple fixé
k k
wkj y k ak2 wkj
xj(1) yk
n n1
1 2 des
a k2 wkj x j1
2
J yk yk y k g a k( 2 )
2 k 1 j 0
1
j=1:n1 k=1:n2
y kdes yk g ak( 2 ) x 1
j
Errk
J
a k2
y des
k y k
g a 2
k
J
wkj
Errk .x j1
Les réseaux de neurones pour l’apprentissage
Couche cachée ESSEC, le 28 Juin 2002
J
w ji
wji
• Calcul
J
de 1 1 pour un exemple fixé
J x j a j
w ji x j1 a j1 w ji
xi x j1
2 n0
J a k
J
n2
2 1 y j1 f a (j 1 ) a j1 w ji xi
x j1
k 0 a k x j i 0
i=1:n0
j=1:n1
J
n2
xi
x 1
Errk wkj f a (j 1 )
j k 0
J
Err j .xi
J
n2
Err j 1 Errk wkj f a j1
w ji
a j
k 0
Les réseaux de neurones pour l’apprentissage
Algorithme de rétropropagation ESSEC, le 28 Juin 2002
ERRk = -(yd-y).*(1-y.*y);
GradW2 = [x1 ones(n,1)]'* ERRk ;
ERRj = (w2(1:n2-1,:)*ERRk')'.*(1-x1.*x1);
GradW1 = [x ones(n,1)]'* ERRj ;
w1 = w1 - pas1 .* GradW1;
w2 = w2 - pas2 .* GradW2;
Les réseaux de neurones pour l’apprentissage
Exemple 1/4 ESSEC, le 28 Juin 2002
x2 = 1 err2 = 0.2703
x2(1)
n0=2 n1 =2 n2 =2
Les réseaux de neurones pour l’apprentissage
Exemple 3/4 ESSEC, le 28 Juin 2002
(1)
x1= •0.5 Nouvelle x
propagation,
1
yetc...
1 = 0.5242
x2 = 1 y2 = 0.6344
x2(1)
n0=2 n1 =2 n2 =2
Les réseaux de neurones pour l’apprentissage
Exemple 4/4 ESSEC, le 28 Juin 2002
• Evolution de y1 et y2
1.3
1.2
1.1
y2
1
0.9
0.8
0.7
0.6
y1
0.5
0 5 10 15
Les réseaux de neurones pour l’apprentissage
Gradient batch / séquentiel ESSEC, le 28 Juin 2002
– « batch » :
mise à jour des poids après la présentation de tous les
exemples
• calculs et stockage plus lourds si trop d ’exemples
– « batch » :
mise à jour des poids après la présentation de tous les
exemples
• calculs et stockage plus lourds si trop d ’exemples
Moins de 5000 exemples,
Matlab
– séquentiel : (on-line, stochastique)
mise à jour des poids après chaque exemple
• besoin de tirer l ’exemple au hasard
• problèmes de convergence
plus de 5000 exemples
SNNS, SN, du C
Pas d’apprentissage Les réseaux de neurones pour l’apprentissage
ESSEC, le 28 Juin 2002
• Pas d’apprentissage :
– trop petit = convergence « lente » vers la solution
– trop grand = risque d’oscillations…
heuristiques courantes :
– diminuer le pas d’apprentissage au fur et a mesure
• « à la main »
• en fonction de la forme de la surface d ’erreur
approximations :
• premier ordre
Rétropropagation avec un moment d’inertie
Delta-Bar-Delta, Rprop, ...
• second ordre
Quickprop
Levenberg Marquard
Les réseaux de neurones pour l’apprentissage
Premier ordre 1/2 ESSEC, le 28 Juin 2002
w ji t ji t .Errj .xi
Les réseaux de neurones pour l’apprentissage
Premier ordre 2/2 ESSEC, le 28 Juin 2002
min ji t u ,max
si Err j .xi t Err j .xi t 1 0 on accélère
ji t 1 max ji t d ,min
si Err j .xi t Err j .xi t 1 0 on freine
ji t sin on
– Calcul du gradient :
J
w h J ( w ) hH w
w w
J
w h H 1 w (w) Problème = calcul de H-1
w
Les réseaux de neurones pour l’apprentissage
Second ordre 2/2 ESSEC, le 28 Juin 2002
• Approximation du Hessien :
– hessien = matrice diagonale
J 2 J
w( t )
w w 2
– Quickprop (Fahlman 1988)
• on évite de calculer H J J
J w
2 w( t 1 ) w( t )
w
w 2 w( t )
J
w( t )
w( t ) w( t 1 ) w
J
w( t ) J w( t 1 )
w w