Cours IFT6266,
Optimisation ` a base de gradient 1 Petit rappel sur le gradient
La d´ eriv´ ee partielle de C (qui peut d´ ependre de w et d’autres variables), est
∂C(w)
∂w = lim
δw→0
C(w + δw) − C(w) δw
donc cela nous dit comment un changement de w affecte C. Supposons que w soit un vecteur de param` etres et C une fonction de coˆ ut ` a minimiser. Si ∂w ∂C
i
< 0 cela signifie qu’une augmentation (infinit´ esimale) du param` etre w i ferait baisser l’erreur C. On voudrait donc changer w dans la direction du vecteur de gradient
∂C
∂w = ( ∂w ∂C
1
, , ∂w ∂C
2
, . . . , ∂w ∂C
m
). C’est le principe de la descente de gradient:
w t+1 ← w t − η t ∂C(w t )
∂w
Si η t est suffisamment petit, cette proc´ edure est garantie de r´ eduire C ` a chaque fois. Si η t n’est pas trop petit on aura convergeance vers un minimum de C, mais
¸ca pourrait ˆ etre un minimum local.
2 Calcul du gradient et graphe de flot
On applique les r` egles de d´ erivation, et en particulier la r` egle de d´ erivation en chaˆıne est la plus utile:
∂C(u 1 (w), u 2 (w), . . . , u n (w))
∂w =
n
X
i=1
∂C
∂u i
∂u i
∂w
La puissance de cette r` egle de d´ erivation en chaˆıne devient apparente quand on l’applique r´ ecursivement. Supposons que l’on peut d´ ecompose C(w) en une s´ erie d’op´ erations diff´ erentiables, telles que le calcul peut se repr´ esenter par une s´ equence de ces op´ erations, o` u les intrants de chaque op´ eration s’obtiennent ` a partir des r´ esultats des op´ erations pr´ ec´ edentes (ou bien ` a partir de w ou ` a partir de quantit´ es externes ou constantes). Notons v i le r´ esultat de la i-` eme op´ eration, obtenu en appliquant la fonction f i ` a un sous-ensemble de {v 1 , . . . , v i−1 }. Pour simplifier la notation on va prendre v 1 = w, et on s’int´ eresse donc ` a obtenir ∂v ∂C
1
. On va le faire en calculant les r´ esultats interm´ ediaires ∂v ∂C
i
. Le temps total du calcul de C est donc la somme des temps de calcul de chacun des v i = f i (v 1 , . . . , v i−1 ).
On peut montrer que l’on peut obtenir le gradient ∂C ∂w dans le mˆ eme ordre de temps de calcul, en appliquant la r` egle de d´ erivation en chaˆıne r´ ecursivement. De mˆ eme qu’on visite et calcule les v i s´ equentiellement pour calculer C, on va faire la mˆ eme chose pour le gradient, mais en sens inverse (en commen¸cant par le dernier v i , qui est C lui-mˆ eme). Pour chacun on va calculer
∂C
∂v i = X
j>i
∂C
∂v j
∂f j
∂v i o` u ∂f ∂v
ji
vaut 0 si v i ne rentre pas comme argument direct de la fonction f j . On ini- tialise la r´ ecursion avec ∂C ∂C = 1 et on continue en r´ etro-propageant le gradient dans le graphe de flot, dans le sens inverse du calcul de C. Pour chaque noeud du graphe on a donc v i , calcul´ e dans la passe avant du calcul de C en fonction de w, et ∂v ∂C
i
, calcul´ e dans la passe arri` ere de r´ etro-propagation du gradient, dans l’ordre inverse.
Des implantations g´ en´ eriques de cette proc´ edure r´ ecursive existent et utilisent justement une structure de donn´ ees en graphe, avec pour chaque noeud les champs v i et ∂C ∂v
i