Algorithme du gradient

De testwiki
Aller à la navigation Aller à la recherche

LModèle:'algorithme du gradient désigne un algorithme d'optimisation différentiable. Il est par conséquent destiné à minimiser une fonction réelle différentiable définie sur un espace euclidien (par exemple, , l'espace des Modèle:Math-uplets de nombres réels, muni d'un produit scalaire) ou, plus généralement, sur un espace hilbertien. L'algorithme est itératif et procède donc par améliorations successives. Au point courant, un déplacement est effectué dans la direction opposée au gradient, de manière à faire décroître la fonction. Le déplacement le long de cette direction est déterminé par la technique numérique connue sous le nom de recherche linéaire. Cette description montre que l'algorithme fait partie de la famille des algorithmes à directions de descente.

Les algorithmes d'optimisation sont généralement écrits pour minimiser une fonction. Si l'on désire maximiser une fonction, il suffira de minimiser son opposée.

Il est important de garder à l'esprit le fait que le gradient, et donc la direction de déplacement, dépend du produit scalaire qui équipe l'espace hilbertien ; l'efficacité de l'algorithme dépend donc de ce produit scalaire.

L'algorithme du gradient est également connu sous le nom dModèle:'algorithme de la plus forte pente ou de la plus profonde descente (Modèle:Lang, en anglais) parce que le gradient est la pente de la fonction linéarisée au point courant et est donc, localement, sa plus forte pente (notion qui dépend du produit scalaire).

Dans sa version la plus simple, l'algorithme ne permet de trouver ou d'approcher qu'un point stationnaire (i.e., un point en lequel le gradient de la fonction à minimiser est nul) d'un problème d'optimisation sans contrainte. De tels points sont des minima globaux, si la fonction est convexe. Des extensions sont connues pour les problèmes avec contraintes simples, par exemple des contraintes de borne. Malgré des résultats de convergence théoriques satisfaisants, cet algorithme est généralement lent si le produit scalaire définissant le gradient ne varie pas avec le point courant de manière convenable, c'est-à-dire si l'espace vectoriel n'est pas muni d'une structure riemannienne appropriée, d'ailleurs difficilement spécifiable a priori. Il est donc franchement à déconseiller, même pour minimiser une fonction quadratique strictement convexe de deux variables. Toutefois, ses qualités théoriques font que l'algorithme sert de modèle à la famille des algorithmes à directions de descente ou de sauvegarde dans les algorithmes à régions de confiance.

Le principe de cet algorithme remonte au moins à Cauchy (1847)[1].

L'algorithme

Soient un espace hilbertien (produit scalaire noté et norme associée notée ) et une fonction différentiable. On note et la dérivée et le gradient de en , si bien que pour tout , .

Modèle:Théorème

En pratique, il faudra prendre  ; la valeur nulle de cette tolérance a été admise uniquement pour simplifier l'expression des résultats de convergence ci-dessous.

Cet algorithme structurellement très simple repose sur le fait que, dans le voisinage d'un point , la fonction décroît le plus fortement dans la direction opposée à celle du gradient de en , à savoir dans la direction . De manière plus précise, cette affirmation exprime en termes suggestifs le fait que, si , la solution du problème d'optimisation

est la direction , orientée donc vers l'opposé du gradient[2].

La notion de direction de plus forte pente est en fait mal définie car elle dépend fortement du produit scalaire que l'on se donne sur l'espace hilbertien . En effet, si est un autre produit scalaire sur , il existe un opérateur linéaire continu auto-adjoint et défini positif tel que si bien que le gradient de en pour ce dernier produit scalaire s'écrit , ce qui montre explicitement la dépendance du gradient par rapport au produit scalaire. Il n'y a donc pas une unique direction de plus forte pente, ce qui n'apparaît pas clairement dans l'affirmation faite au début du paragraphe précédent. On peut même montrer que toute direction de descente de en , c'est-à-dire toute direction telle , est l'opposé du gradient de en pour un certain produit scalaire[3]. L'efficacité de l'algorithme du gradient dépendra donc du choix de ce produit scalaire.

Si , la direction est une direction de descente de en , puisque , si bien que pour tout assez petit, on a

.

Grâce à la recherche linéaire, tant que , l'algorithme fait décroître la fonction strictement à chaque itération :

L'algorithme du gradient peut s'utiliser lorsque l'espace vectoriel sur lequel est définie la fonction à minimiser est de dimension infinie[4]. Dans ce cas, l'algorithme n'est pas implémentable, mais son étude peut avoir un intérêt pour connaître son comportement en grande dimension ou pour en utiliser les propriétés de convergence à des fins théoriques.

L'algorithme du gradient peut s'interpréter comme la méthode d'Euler explicite de résolution de l'équation différentielle ordinaire (flot du gradient), avec un pas de discrétisation adapté à l'itération courante par la recherche linéaire.

Résultats de convergence

Modèle:...

Problèmes quadratiques

On considère dans un premier temps le cas où le critère est une fonction quadratique strictement convexe, définie sur un espace euclidien (donc de dimension finie) :

et est un opérateur auto-adjoint défini positif. Dans ce cas, l'algorithme du gradient avec recherche linéaire exacte (i.e., à chaque itération le critère est minimisé le long de la direction opposée au gradient) converge q-linéairement vers l'unique minimum du problème. De manière plus précise, on a le résultat de convergence suivant, qui utilise le conditionnement du hessien Modèle:Math du critère Modèle:Math, c'est-à-dire le rapport entre sa plus grande valeur propre et sa plus petite valeur propre ,

et la norme associée à Modèle:Math qui est définie par

Modèle:Théorème

Comme , l'estimation de la vitesse de convergence ci-dessus s'applique aussi à celle du critère Modèle:Math vers sa valeur optimale Modèle:Math.

Ce résultat pourrait paraître attrayant et laisser penser que l'algorithme du gradient est une méthode performante, mais en général, ce n'est pas le cas. D'une part, la convergence linéaire est une propriété relativement faible en optimisation différentiable, d'autant plus faible que le taux de convergence (ici ) est proche de 1. Cela se produit dans l'algorithme du gradient lorsque est grand, c'est-à-dire pour les problèmes mal conditionnés. À l'inverse, lorsque (i.e., le hessien est un multiple de l'identité), l'algorithme converge en 1 itération. On rappelle par ailleurs que pour minimiser une fonction quadratique strictement convexe, l'algorithme du gradient conjugué ou toute méthode directe de résolution du système linéaire associé trouve le minimum en un nombre fini d'opérations (en arithmétique exacte), alors que l'algorithme du gradient requiert en général un nombre infini d'itérations.

Problèmes non linéaires

Modèle:...

Exemples

Minimisation d'une fonction de 2 variables

Algorithme du gradient sur une fonction de type bol (vue en plan avec courbes de niveaux).

L'évolution des itérés au cours de l'algorithme est illustrée sur la figure de droite : Modèle:Math est une fonction convexe de deux variables (définie sur le plan ) et son graphe représente une forme de bol. Chaque courbe bleue représente une courbe de niveau de Modèle:Math, un lieu de points en lesquels Modèle:Math vaut une constante donnée. Chaque vecteur rouge représente un déplacement , qui est orienté suivant l'opposé de la direction du gradient en Modèle:Math. Ici, le gradient en Modèle:Math est celui associé au produit scalaire euclidien, si bien qu'il est orthogonal (pour le produit scalaire euclidien) à la tangente en Modèle:Math à la courbe de niveau auquel Modèle:Math appartient. La figure illustre la progression des itérés vers le fond du bol, c'est-à-dire vers le point où la valeur de Modèle:Math est minimale.

Maximisation d'une fonction de 2 variables

Application de la méthode de remontée de gradient à la fonction


Modèle:Message galerie



Points faibles, remèdes et extensions

L'algorithme du gradient peut rencontrer un certain nombre de problèmes, en particulier celui de la convergence lorsque le minimum de la fonction se trouve au fond d'une vallée étroite (plus précisément lorsque le conditionnement de la matrice hessienne est élevée). Dans un tel cas, la suite des Modèle:Math} oscille de part et d'autre de la vallée et progresse laborieusement, même lorsque les sont choisis de sorte à minimiser Modèle:Math.

La figure ci-dessous illustre ce type de comportement pour une fonction de Rosenbrock à 2 dimensions.

Deux points faibles de l'algorithme du gradient sont :

  • l'algorithme peut nécessiter de nombreuses itérations pour converger vers un minimum local, notamment si la courbure est très différente dans des directions différentes ;
  • la recherche du pas optimal, généralement effectuée par une recherche linéaire, peut se révéler très longue. Inversement, utiliser un pas fixe peut conduire à de mauvais résultats. Des méthodes comme la méthode de Newton et l'inversion de la matrice hessienne en complément des techniques de gradient conjugué offrent souvent de meilleurs résultats.

Un algorithme plus efficace est la méthode BFGS, qui consiste à calculer en chaque étape une matrice, qui multipliée au gradient permet d'obtenir une meilleure direction. De plus, cette méthode peut être combinée avec une méthode plus efficace de recherche linéaire afin d'obtenir la meilleure valeur de .

L'algorithme du gradient est mal défini pour minimiser des fonctions non lisses, même si elles sont convexes. Lorsque le critère est localement lipschitzien, et spécialement s'il est convexe, l'Modèle:Lien apporte un remède à l'absence de convergence[5].

Notes et références

Modèle:Traduction/Référence Modèle:Références

Voir aussi

Articles connexes

Bibliographie

  • Modèle:En Mordecai Avriel (2003). Nonlinear Programming: Analysis and Methods. Dover Publishing. Modèle:ISBN.
  • Modèle:En D. P. Bertsekas (1995), Nonlinear Programming. Athena Scientific. Modèle:ISBN
  • Modèle:En J. F. Bonnans, J. Ch. Gilbert, C. Lemaréchal, C. Sagastizábal (2006), Numerical Optimization - Theoretical and Numerical Aspects Modèle:Détail des éditions
  • Modèle:En Jan A. Snyman (2005). Practical Mathematical Optimization: An Introduction to Basic Optimization Theory and Classical and New Gradient-Based Algorithms. Springer Publishing. Modèle:ISBN

Lien externe

J. Ch. Gilbert, Éléments d'Optimisation Différentiable — Théorie et Algorithmes, syllabus de cours à l'ENSTA ParisTech, Paris.

Modèle:Portail

  1. Modèle:Article.
  2. Par l'inégalité de Cauchy-Schwarz la valeur optimale de ce problème est supérieure à , borne atteinte par la solution donnée.
  3. En effet, supposons que et que soit le gradient de en pour le produit scalaire . On considère l'application avec

    est l'identité sur Échec de l’analyse (⧼mw_math_mathml⧽ : réponse non valide(« Math extension cannot connect to Restbase. ») du serveur « https://wikimedia.org/api/rest_v1/ » :): {\displaystyle \mathbb{E}} et est l'opérateur défini en par (on reconnaît la formule de BFGS directe de mise à jour de l'identité). Comme est auto-adjoint et défini positif pour le produit scalaire , l'application bilinéaire est un produit scalaire. Par ailleurs, on a , si bien que le gradient de pour le produit scalaire , qui vaut , n'est autre que , comme annoncé.

  4. K. Ito, K. Kunisch (2008), Lagrange Multiplier Approach to Variational Problems and Applications, Advances in Design and Control, SIAM Publication, Philadelphia.
  5. Modèle:En K. C. Kiwiel (2001), « Modèle:Langue », Modèle:Langue, 90, 1-25.