Passer au contenu principal
Tangente
AnalysisMethod · Glossary
Read in: English

gradient descent algorithm

Un algorithme du gradient est une méthode d’optimisation itérative qui cherche à minimiser une fonction différentiable. À chaque étape, il déplace le point courant dans la direction opposée au gradient, avec un pas choisi pour faire diminuer la fonction.
Descente sur une fonction quadratique Quatre estimés se rapprochent du minimum de la courbe f de x égale à x moins trois au carré. x₀ x₁ x₂ x₃
Les estimés x₀, x₁, x₂ et x₃ avancent vers le minimum x = 3 tandis que leurs déplacements raccourcissent.
Contents

What you will learn

  • Interpréter le gradient comme une direction de montée et son opposé comme une direction de descente.
  • Calculer plusieurs itérations sur une fonction quadratique.
  • Repérer les effets d’un pas trop grand, d’un point stationnaire et d’une tolérance nulle.

In plain terms

Imaginez un paysage dont l’altitude représente la valeur d’une fonction. Depuis un point donné, le gradient indique la pente qui monte le plus vite. Pour descendre, on part donc dans le sens opposé, puis on recommence depuis la nouvelle position.
La longueur de chaque déplacement, appelée pas, est décisive : trop grande, elle peut faire dépasser la vallée ; trop petite, elle ralentit la progression. L’algorithme s’arrête lorsque la pente devient assez faible selon la tolérance choisie.

Definition

Un algorithme du gradient minimise une fonction réelle différentiable par approximations successives. La fonction, notée ff, est définie sur ℝn ou, plus généralement, sur un espace hilbertien. Lorsqu’elle est différentiable au sens de Fréchet, sa différentielle au point courant est une forme linéaire continue. Dans un espace hilbertien, le gradient est l’unique vecteur qui la représente par le produit scalaire, conformément au théorème de Riesz ; dans ℝn muni de sa structure euclidienne, ses coordonnées sont les dérivées partielles. Il indique la direction de croissance la plus rapide, et son opposé fournit donc une direction de descente lorsqu’il n’est pas nul.
À partir d’un point initial x0, l’algorithme construit des estimés x1, x2, etc. À l’itération d’indice k, il choisit un nombre positif αk, appelé pas, puis effectue la mise à jour suivante : xk+1=xkαkf(xk)x_{k+1}=x_k-\alpha_k\nabla f(x_k). Une recherche linéaire peut choisir ce pas en examinant la fonction le long de la direction de descente.
Pour une tolérance ε positive ou nulle, le test d’arrêt compare la norme du gradient à ε. Un gradient faible indique un point presque stationnaire, mais ne suffit pas à garantir qu’il s’agit d’un minimum global.

The principle

Soit une fonction différentiable f, un point initial x0 et une tolérance ε > 0. À l’itération k, on calcule le gradient au point xk. Si sa norme est strictement inférieure à ε, on s’arrête. Sinon, on choisit par recherche linéaire un pas αk > 0 dans la direction opposée au gradient, puis on pose : xk+1=xkαkf(xk)x_{k+1}=x_k-\alpha_k\nabla f(x_k). Les mêmes opérations sont répétées au nouveau point.

When to use it

La fonction à minimiser doit être réelle et différentiable sur le domaine parcouru, afin que son gradient existe aux points examinés. Il faut aussi fixer un point initial, une tolérance et une règle donnant un pas strictement positif. La recherche linéaire doit retenir un déplacement qui fait effectivement progresser la minimisation.
Si la fonction présente un angle, comme la valeur absolue en zéro, le gradient ordinaire n’y existe pas et la procédure se bloque sous cette forme. Une méthode fondée sur un sous-gradient peut alors être envisagée. Si le domaine impose des contraintes, la mise à jour peut aussi sortir de la zone admissible ; une méthode adaptée aux contraintes est nécessaire.

A step-by-step example

On minimise la fonction f(x)=(x3)2f(x)=(x-3)^2. Le point initial vaut x0 = 0, le pas constant vaut 0,25 et la tolérance vaut ε = 1. La dérivée, qui joue ici le rôle du gradient, est f(x)=2(x3)f'(x)=2(x-3).
1. Au point x0 = 0, le gradient vaut −6. Sa norme vaut 6, donc l’algorithme continue et donne x1 = 0 − 0,25 × (−6) = 1,5.
2. Au point x1 = 1,5, le gradient vaut −3. On obtient x2 = 1,5 − 0,25 × (−3) = 2,25.
3. Au point x2 = 2,25, le gradient vaut −1,5. On obtient x3 = 2,25 − 0,25 × (−1,5) = 2,625.
4. Au point x3 = 2,625, la norme du gradient vaut 0,75. Comme 0,75 < 1, le test impose l’arrêt avant une nouvelle mise à jour.
Le résultat renvoyé est donc x3 = 2,625. Le minimum exact de cette fonction est atteint en x = 3 : l’écart vaut 3 − 2,625 = 0,375, ce qui confirme que le point obtenu est proche du fond sans lui être égal.

In practice

Pour ajuster les paramètres d’un modèle, on définit une fonction qui mesure son erreur. Le gradient indique comment modifier simultanément les paramètres afin de réduire cette erreur. Lorsque le calcul du gradient complet devient trop coûteux sur beaucoup de données, une variante utilisant seulement une partie des observations peut être préférée.
Dans un problème numérique de réglage, on surveille la valeur de la fonction et la norme du gradient à chaque itération. Si la valeur oscille ou augmente, le pas est probablement trop grand ; une recherche linéaire est alors préférable à un pas fixe mal calibré.
Si les variables doivent respecter des bornes ou des égalités, une descente sans correction peut produire un point interdit. On choisit alors une méthode projetée ou une autre procédure d’optimisation sous contraintes.

Not to be confused with

Gradient et algorithme du gradient. Le gradient est un vecteur calculé en un point ; l’algorithme est la procédure qui utilise ce vecteur à plusieurs reprises. Pour f(x)=(x3)2f(x)=(x-3)^2, −6 est le gradient en 0, tandis que la suite 0, 1,5, 2,25, 2,625 provient de l’algorithme.
Descente de gradient et gradient conjugué. La première avance dans l’opposé du gradient courant. Le second construit des directions conjuguées pour certains problèmes, notamment quadratiques. Une direction qui combine l’information des étapes précédentes signale que l’on n’applique pas la descente de gradient élémentaire décrite ici.

Limits and pitfalls

Gradient nul. Le test peut arrêter l’algorithme sur un maximum ou un point selle, et pas seulement sur un minimum. Le symptôme est une norme nulle sans comportement minimal dans les directions voisines ; il faut examiner la fonction autour du point ou utiliser des informations de courbure.
Pas mal choisi. Dans l’exemple, un pas de 0,25 rapproche les estimés de 3. Avec un pas constant égal à 1, la même mise à jour alterne exactement entre 0 et 6 : la fonction reste à la valeur 9. Il faut réduire le pas ou employer une recherche linéaire.
Minimum local. Pour une fonction possédant plusieurs vallées, deux points initiaux peuvent mener à deux points stationnaires différents. Une petite norme du gradient ne prouve donc pas que la meilleure valeur sur tout le domaine a été trouvée ; plusieurs initialisations ou une méthode globale peuvent être nécessaires.
Tolérance nulle. Avec ε = 0 et le test strict donné, une norme est toujours supérieure ou égale à zéro : même un gradient nul ne satisfait jamais la condition d’arrêt. Il faut adopter une tolérance positive ou prévoir explicitement l’arrêt lorsque le gradient est nul.

Further reading

Le Sous-gradient prolonge l’idée de direction exploitable lorsque la fonction convexe n’est pas différentiable en certains points.
L’étude de la convergence conduit ensuite à relier la régularité de la fonction, le choix des pas et la vitesse à laquelle les estimés se rapprochent d’un minimum.
Continue with Tangente

Explore mathematics differently

Discover our magazines, podcasts and games to explore mathematics differently.

See our offers