Titeur : Dr. Haithem Hermessi
Cours : Fondamentaux du Deep learning
A/U :2021-2021
Techniques d’optimisation
1. Descente de gradient :
La méthode la plus élémentaire est la méthode de la descente de gradient.
Problème : Minimiser la fonction de perte % aux paramètres
Solution itérative :
wi+1 et wi sont les valeurs des mise à jour (poids et bias) de l’itération i+1 et i respectivement. γk
est la valeur du pas (learning rate) et ∇𝑓(𝑤𝑘) est le gradient de f.
On suppose ici que la fonction f est continue et différenciable. Notre objectif est de trouver le
point le plus bas (vallée) de la fonction d’optimisation. Cependant, la direction réelle de cette vallée
n’est pas connue. Nous ne pouvons regarder que localement et de ce fait la direction du gradient
négatif est la meilleure information dont nous disposons. Faire un petit pas dans cette direction
ne peut que nous rapprocher du minimum. Une fois que nous avons fait ce petit pas, nous
calculons à nouveau le nouveau gradient et nous nous déplaçons à nouveau un peu dans cette
direction, jusqu’à ce que nous atteignions la vallée. Par conséquent, la descente de de gradient ne
fait essentiellement que suivre la direction de la descente la plus raide (pente négative).
Le paramètre γ dans l’équation de mise à jour itérative est appelé la taille du pas (taux
Publicité
d’apprentissage). En général, nous ne connaissons pas la valeur de la taille de pas optimale. Nous
devons donc essayer différentes valeurs. La pratique courante consiste à essayer un ensemble de
valeurs sur une échelle logarithmique et à utiliser ensuite la meilleure. Quelques scénarios
différents peuvent se produire. L’image ci-dessus représente ces scénarios pour une fonction
quadratique 1D. Si le taux d’apprentissage est trop faible, alors nous progresserons régulièrement
vers le minimum. Cependant, cela pourrait prendre plus de temps que ce qui est idéal. Il est
généralement très difficile (ou impossible) d’obtenir une échelle qui nous mènerait directement au
minimum. L’idéal serait d’avoir une taille de pas un peu plus grande que l’optimale. En
pratique, cela permet d’obtenir la convergence la plus rapide. Cependant, si nous utilisons un taux
d’apprentissage trop élevé, les itérations s’éloignent de plus en plus des minima et nous
obtenons une divergence. Dans la pratique, nous voudrions utiliser un taux d’apprentissage qui
est juste un peu moins que divergent.
Figure 1 : Différentes valeurs du pas appliquer à une fonction quadratique 1D
2. Descente de gradient stochastique :
Dans le cas de la descente de gradient stochastique (SGD en anglais), nous remplaçons le vecteur
de gradient réel par une estimation stochastique du vecteur de gradient. Pour un réseau de
neurones, l’estimation stochastique signifie le gradient de la perte pour un seul point de
données (une seule instance).
Soit fi qui désigne la perte du réseau pour la i-ième instance.
Publicité
La fonction que nous voulons finalement minimiser est f, la perte totale dans tous les cas.
fi=l(𝑥𝑖,𝑦𝑖,w)
Dans SGD, nous mettons à jour les poids en fonction du gradient sur fi (par opposition au gradient
sur la perte totale f).
(i choisi uniformément au hasard)
Si i est choisi au hasard, alors fi est un estimateur bruyant mais non biaisé de f, qui s’écrit
mathématiquement comme :
Par conséquent, le k-ème pas prévu de la SGD est le même que le k-ème pas de la descente en
pleine pente :
Ainsi, toute mise à jour de la SGD est la même que la mise à jour complète attendue.
Cependant, la SGD n’est pas seulement une descente plus rapide avec du bruit. En plus d’être plus
rapide, la SGD peut également nous donner de meilleurs résultats que la descente de gradient
en batch complet. Le bruit dans la SGD peut nous aider à éviter les minima locaux peu
profonds et à trouver de meilleurs minima (plus profonds). Ce phénomène est
appelé annealing.
Figure 2 : Annealing avec SGD
En résumé, les avantages de la descente de gradient stochastique sont les suivants :
1. Il y a beaucoup d’informations redondantes d’une instance à l’autre. La SGD empêche
beaucoup de ces calculs redondants.
Publicité
2. Aux premiers stades, le bruit est faible par rapport aux informations du gradient. Par
conséquent, une étape SGD est virtuellement aussi bonne qu’une étape GD.
3. Le bruit dans la mise à jour de la SGD peut empêcher la convergence vers un mauvais
minimum local (peu profond).
4. La descente stochastique de gradient est considérablement moins coûteuse à calculer
(car vous ne passez pas en revue tous les points de données).
3. Mini-batching :
Avec le mini-batching, nous considérons la perte sur plusieurs instances choisies au hasard au
lieu de la calculer sur une seule instance. Cela permet de réduire le bruit lors de la mise à jour
des étapes.
Souvent, nous pouvons faire un meilleur usage de nos capacités de calcul en utilisant des mini-
batch au lieu d’une seule instance. Par exemple, les GPU sont mal utilisés lorsque nous effectuons
un entraînement avec une seule instance. Les techniques d’entraînement en réseau distribué
répartissent les mini-batchs entre les différentes machines et agrègent ensuite les gradients
résultants. En utilisant une telle distribution, Facebook a récemment entraîné un réseau sur les
données d’ImageNet en moins d’une heure (Goyal et al. (2018)). Il est important de noter que la
descente de gradient ne doit jamais être utilisée avec des batchs entier (taille entière).
4. Momentum :
Avec momentum, nous avons deux itérations (p et w) au lieu d’une seule. Les mises à jour sont les
Publicité
suivantes :
p est appelé le momentum da la SGD. À chaque étape de la mise à jour, nous ajoutons le gradient
stochastique à l’ancienne valeur du momentum, après l’avoir amorti d’un facteur β (valeur
comprise entre 0 et 1). On peut considérer p comme une moyenne mobile des gradients. Enfin,
nous déplaçons w dans la direction du nouvel élan p.
Forme alternative : « méthode stochastique de la boule lourde » :
Cette formule est mathématiquement équivalent à la précédente. Ici, l’étape suivante est une
combinaison de la direction de l’étape précédente (wk - wk−1) et du nouveau gradient négatif.
Informations pratiques
Le momentum doit presque toujours être utilisé avec une descente de gradient stochastique. β =
0,9 ou 0,99 fonctionne presque toujours bien.
La valeur du pas doit généralement être diminuée lorsque le paramètre de momentum est augmenté
pour maintenir la convergence. Si β passe de 0,9 à 0,99, le taux d’apprentissage doit être diminué
d’un facteur 10.
Visualiser l’effet du momentum - Source : distill.pub
Happy Learning
Contact: [email protected]