Beaucoup d’algorithmes de Machine Learning obtiennent de bonnes performances grâce à leur entraînement. Cependant, une grande majorité des entraînements repose sur l’optimisation d’une fonction de perte. Plus sa valeur est petite, meilleurs sont les résultats de l’algorithme. Ainsi, l’algorithme de descente de gradient est un des nombreux moyens qui permettent de trouver le minimum (ou maximum) d’une fonction.
Une première approche intuitive de cet algorithme a été donnée dans cet article.
Ici, nous allons revenir sur les fondements mathématiques de cet algorithme, l’importance du taux d’apprentissage.
Descente du gradient : Formalisation mathématiques
La descente du gradient est un des nombreux algorithmes dits de descente. La formule générale est la suivante :
xt+1= xt– η∆xt
où η le taux d’apprentissage et ∆xt la direction de descente. Cette classe d’algorithme a pour but à chaque itération d’avoir ƒ(xt+1) ≤ ƒ (xt) , avec ƒ une fonction convexe que l’on souhaite minimiser.
L’algorithme de descente du gradient décide de suivre comme direction de descente l’opposé du gradient d’une fonction convexe f, ie – Δƒ .
Pourquoi ? Le gradient d’une fonction indique sa croissance maximale à partir d’un point. Alors choisir l’opposé revient à prendre la pente la plus abrupte, dans l’objectif de minimiser la valeur de cette fonction. Voici son fonctionnement :
- Soit un point d’initialisation x0 appartenant au domaine de f
- Calculer f(xt)
- Mettre à jour les coordonnées : xt+1 = xt– η Δ ƒ (xt ) (*)
- Répéter 2 et 3 jusqu’au critère d’arrêt
Généralement, le critère d’arrêt est de la forme |ƒxt+1 – ƒxt| ≤ ε , où est très petit. Ce critère semble logique puisqu’on décide d’arrêter quand la différence entre les valeurs de la fonction prise en deux points différents est très peu significative, signe qu’on a convergé. Un critère d’arrêt reconnu dans le machine learning est celui du nombre d’itérations ; on réalise un nombre fini d’optimisation (étape 2 et 3).
Deux éléments, à priori négligeables quand on regarde l’algorithme, sont en réalité cruciaux pour le bon fonctionnement de ce dernier ; le point d’initialisation x0 et la valeur du taux d’apprentissage η. Un mauvais point d’initialisation ou un taux d’apprentissage peu adapté peut empêcher l’algorithme de converger vers le minimum. Plus le taux d’apprentissage est élevé, plus on suivra loin la direction indiquée par le gradient. Cela peut nous bloquer dans un minimum local, sur un point-selle où nous faire louper le minimum global. Nous allons étudier à travers un exemple simple l’impact du taux d’apprentissage sur les performances de la descente de gradient.
Importance du taux d’apprentissage
Prenons le cas d’un exemple simple de régression linéaire. Soit une droite y=w0*x+w1. Nous avons n observations qui suivent une relation linéaire et à l’aide de ces celles-ci, nous allons tenter de trouver les bons paramètres, w0 et w1, qui définissent cette relation. Comme dit précédemment, optimiser un modèle, c’est-à-dire trouver les meilleurs paramètres permettant de bonnes performances, revient à optimiser une fonction de perte. La fonction de perte qui s’impose dans ce genre de situation est la MSE,
wt+1,0 wt+1, 1 = wt,1– ηΔw1L(wt,0, wt,1, X) wt,2 – ηΔw2L(wt,0, wt,1, X)
Au niveau code, cela donne le résultat suivant :
Faisons varier le taux d’apprentissage pour observer son impact sur les performances du modèle, le tout sur plus de 100 itérations.
Un petit taux d’apprentissage ?
Prenons un pas volontairement petit de 0.01 pour commencer. On remarque que le modèle met beaucoup de temps à converger. Après 100 itérations, on voit à peine le modèle approximer les observations.
Un grand taux d’apprentissage ?
Un taux plus adapté
Ce taux d’apprentissage semble être optimal. On remarque sur le dernier graphique que dès la première itération, la valeur de la fonction de perte diminue drastiquement, comme cela est indiqué sur le second graphique. Arrivé au creux de la fonction, l’algorithme se stabilise assez rapidement au minimum vers la dixième époque : le modèle approxime parfaitement les données, la fonction de perte se stabilise en 0, son minimum global, et les paramètres sur le graphique 3 stagnes car optimaux !
La complexité du taux d’apprentissage
Nous avons observé que le taux d’apprentissage joue un rôle crucial. S’il est trop élevé, on peut osciller très longtemps autour du minimum, voir le manquer, tandis qu’un taux d’apprentissage trop petit peu mettre beaucoup de temps avant de converger. Un taux même trop élevé peut faire diverger et aller à l’encontre du but voulu, i.e. atteindre le minimum. Le problème est le même pour le point d’initialisation. Deux points d’initialisation peuvent mener à deux résultats différents en fonction de la complexité de la fonction de perte.
Ici, nous étions dans un modèle simple, avec deux paramètres, ce qui nous a permis de visualiser l’évolution du modèle. Dans les faits, notre modèle comporte bien plus de paramètres, rendant la visualisation impossible. Alors l’ajustement du taux d’apprentissage et le choix du point d’initialisation sont beaucoup plus compliqués dans la réalité. Dans la pratique, il nécessaire d’appliquer à note modèle divers taux d’apprentissage pour observer celui qui apporte les meilleures performances, de même pour le point d’initialisation.
Cet article vous a plu ? Inscrivez vous à notre Newsletter pour en recevoir d’autres régulièrement !