Dans l'article d'Adam, "... de nombreuses fonctions objectives sont composées d'une somme de sous-fonctions évaluées sur différents sous-échantillons de données; dans ce cas, l'optimisation peut être rendue plus efficace en prenant des gradients graduels vers des sous-fonctions individuelles ...". Cela signifie que la fonction objectif est une somme d'erreurs par rapport aux exemples d'apprentissage et que l'entraînement peut être effectué sur des exemples individuels ou des minibatches. Il en va de même que dans la descente de gradient stochastique (SGD), ce qui est plus efficace pour les problèmes à grande échelle que la formation par lots, car les mises à jour des paramètres sont plus fréquentes.
Quant à pourquoi Adam fonctionne, il utilise quelques astuces.
L'une de ces astuces est l'élan, qui peut accélérer la convergence. Imaginez une fonction objective en forme de canyon long et étroit qui descend progressivement vers un minimum. Disons que nous voulons minimiser cette fonction en utilisant la descente de gradient. Si nous partons d'un point situé sur la paroi du canyon, la pente négative indiquera la direction de la descente la plus raide, c'est-à-dire principalement le sol du canyon. Ceci est dû au fait que les parois du canyon sont beaucoup plus raides que la pente progressive du canyon vers le minimum. Si le taux d’apprentissage (c’est-à-dire la taille des étapes) est faible, nous pourrions descendre au fond du canyon, puis le suivre au minimum. Mais les progrès seraient lents. Nous pourrions augmenter le taux d'apprentissage, mais cela ne changerait pas le sens des étapes. Dans ce cas, nous dépassions le fond du canyon et nous retrouvions sur le mur opposé. Nous répéterions ensuite ce modèle, oscillant de mur en mur tout en progressant lentement vers le minimum. L'élan peut aider dans cette situation.
Momentum signifie simplement qu'une fraction de la mise à jour précédente est ajoutée à la mise à jour actuelle, de sorte que des mises à jour répétées dans une direction donnée soient composées; nous prenons de la vitesse, allant de plus en plus vite dans cette direction. Dans le cas du canyon, nous créerions une dynamique dans la direction du minimum, car toutes les mises à jour ont une composante dans cette direction. En revanche, aller et venir à travers les parois du canyon implique une inversion constante de la direction, de sorte qu'une impulsion aiderait à amortir les oscillations dans cette direction.
Adam utilise une autre astuce consiste à sélectionner de manière adaptative un taux d’apprentissage distinct pour chaque paramètre. Les paramètres qui recevraient normalement des mises à jour plus petites ou moins fréquentes reçoivent des mises à jour plus importantes avec Adam (l'inverse est également vrai). Cela accélère l'apprentissage dans les cas où les taux d'apprentissage appropriés varient selon les paramètres. Par exemple, dans les réseaux profonds, les gradients peuvent devenir petits aux premières couches et il est logique d'augmenter les vitesses d'apprentissage pour les paramètres correspondants. Un autre avantage de cette approche est que, comme les vitesses d’apprentissage sont ajustées automatiquement, le réglage manuel devient moins important. SGD standard nécessite un ajustement soigneux (et éventuellement un ajustement en ligne) des taux d’apprentissage, ce qui est moins vrai avec Adam et les méthodes associées. Il faut encore sélectionner des hyperparamètres,
Méthodes apparentées :
Momentum est souvent utilisé avec SGD standard. Une version améliorée est appelée Nesterov Momentum ou accélération accélérée de Nesterov. Parmi les autres méthodes qui utilisent des taux d'apprentissage réglés automatiquement pour chaque paramètre, citons: Adagrad, RMSprop et Adadelta. RMSprop et Adadelta résolvent un problème avec Adagrad qui pourrait entraîner l’arrêt de l’apprentissage. Adam est similaire à RMSprop avec élan. Nadam modifie Adam pour utiliser la dynamique de Nesterov au lieu de la dynamique classique.
Références :
Kingma et Ba (2014) . Adam: une méthode d'optimisation stochastique.
Goodfellow et al. (2016) . Apprendre en profondeur, chapitre 8.
Diapositives du cours de Geoff Hinton
Dozat (2016) . Incorporer Nesterov Momentum à Adam.