Technopedia Center
PMB University Brochure
Faculty of Engineering and Computer Science
S1 Informatics S1 Information Systems S1 Information Technology S1 Computer Engineering S1 Electrical Engineering S1 Civil Engineering

faculty of Economics and Business
S1 Management S1 Accountancy

Faculty of Letters and Educational Sciences
S1 English literature S1 English language education S1 Mathematics education S1 Sports Education
  • Registerasi
  • Brosur UTI
  • Kip Scholarship Information
  • Performance
  1. WeltenzyklopÀdie
  2. Algorithme du gradient
Algorithme du gradient 👆 Click Here! Read More..
Un article de Wikipédia, l'encyclopédie libre.
Algorithme du gradient
Algorithme du gradient sur une fonction de type bol (vue en plan avec courbes de niveaux).
Type
Algorithme d'optimisation, méthode itérative, concept mathématique (en)Voir et modifier les données sur Wikidata
Formule
x n + 1 = x n − Îł ∇ F ( x n ) {\displaystyle \mathbf {x} _{n+1}=\mathbf {x} _{n}-\gamma \nabla F(\mathbf {x} _{n})} {\displaystyle \mathbf {x} _{n+1}=\mathbf {x} _{n}-\gamma \nabla F(\mathbf {x} _{n})}Voir et modifier les donnĂ©es sur Wikidata

modifier - modifier le code - modifier WikidataDocumentation du modĂšle

L'algorithme du gradient, ou de descente de gradient, est une mĂ©thode d'optimisation mathĂ©matique sans contrainte. Il s'agit d'un algorithme itĂ©ratif du premier ordre permettant de minimiser une fonction multivariĂ©e diffĂ©rentiable. L'idĂ©e consiste Ă  effectuer des Ă©tapes rĂ©pĂ©tĂ©es dans la direction opposĂ©e au gradient (ou gradient approximatif) de la fonction au point actuel, car il s'agit de la direction de descente la plus raide. À l'inverse, se dĂ©placer dans la direction du gradient conduira Ă  une trajectoire qui maximise cette fonction ; la procĂ©dure est alors connue sous le nom d'ascension du gradient. Elle est particuliĂšrement utile dans l'apprentissage automatique pour minimiser le coĂ»t ou la fonction de perte.

Il permet donc de minimiser une fonction rĂ©elle diffĂ©rentiable dĂ©finie sur un espace euclidien (par exemple, R n {\displaystyle \mathbb {R} ^{n}} {\displaystyle \mathbb {R} ^{n}}, l'espace des n-uplets de nombres rĂ©els, muni d'un produit scalaire) ou, plus gĂ©nĂ©ralement, sur un espace hilbertien. On qualifie cet algorithme d’itĂ©ratif parce qu’il procĂšde 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 d'algorithme de la plus forte pente ou de la plus profonde descente (steepest descent, 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[rĂ©f. nĂ©cessaire]. 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

[modifier | modifier le code]

Soient E {\displaystyle \mathbb {E} } {\displaystyle \mathbb {E} } un espace hilbertien (produit scalaire notĂ© ⟹ ⋅ , ⋅ ⟩ {\displaystyle \langle \cdot ,\cdot \rangle } {\displaystyle \langle \cdot ,\cdot \rangle } et norme associĂ©e notĂ©e ‖ ⋅ ‖ {\displaystyle \|\cdot \|} {\displaystyle \|\cdot \|}) et x ∈ E ↩ f ( x ) ∈ R {\displaystyle x\in \mathbb {E} \mapsto f(x)\in \mathbb {R} } {\displaystyle x\in \mathbb {E} \mapsto f(x)\in \mathbb {R} } une fonction diffĂ©rentiable. On note d f ( x ) {\displaystyle \mathrm {d} f(x)} {\displaystyle \mathrm {d} f(x)} la diffĂ©rentielle de f {\displaystyle f} {\displaystyle f} en x {\displaystyle x} {\displaystyle x} et ∇ f ( x ) {\displaystyle \nabla f(x)} {\displaystyle \nabla f(x)} le gradient de f {\displaystyle f} {\displaystyle f} en x {\displaystyle x} {\displaystyle x}, si bien que pour tout direction d ∈ E {\displaystyle d\in \mathbb {E} } {\displaystyle d\in \mathbb {E} }, d f ( x ) ( d ) = ⟹ ∇ f ( x ) , d ⟩ {\displaystyle \mathrm {d} f(x)(d)=\langle \nabla f(x),d\rangle } {\displaystyle \mathrm {d} f(x)(d)=\langle \nabla f(x),d\rangle }[2].

Algorithme du gradient â€” On se donne un point/itĂ©rĂ© initial x 0 ∈ E {\displaystyle x_{0}\in \mathbb {E} } {\displaystyle x_{0}\in \mathbb {E} } et un seuil de tolĂ©rance Δ ⩟ 0 {\displaystyle \varepsilon \geqslant 0} {\displaystyle \varepsilon \geqslant 0}. L'algorithme du gradient dĂ©finit une suite d'itĂ©rĂ©s x 1 , x 2 , 
 ∈ E {\displaystyle x_{1},x_{2},\ldots \in \mathbb {E} } {\displaystyle x_{1},x_{2},\ldots \in \mathbb {E} }, jusqu'Ă  ce qu'un test d'arrĂȘt soit satisfait. Il passe de x k {\displaystyle x_{k}} {\displaystyle x_{k}} Ă  x k + 1 {\displaystyle x_{k+1}} {\displaystyle x_{k+1}} par les Ă©tapes suivantes.

  1. Simulation : calcul de ∇ f ( x k ) {\displaystyle \nabla f(x_{k})} {\displaystyle \nabla f(x_{k})}.
  2. Test d'arrĂȘt : si ‖ ∇ f ( x k ) ‖ ⩜ Δ {\displaystyle \|\nabla f(x_{k})\|\leqslant \varepsilon } {\displaystyle \|\nabla f(x_{k})\|\leqslant \varepsilon }, arrĂȘt.
  3. Calcul du pas α k > 0 {\displaystyle \alpha _{k}>0} {\displaystyle \alpha _{k}>0} par une rĂšgle de recherche linĂ©aire sur f {\displaystyle f} {\displaystyle f} en x k {\displaystyle x_{k}} {\displaystyle x_{k}} le long de la direction − ∇ f ( x k ) {\displaystyle -\nabla f(x_{k})} {\displaystyle -\nabla f(x_{k})}.
  4. Nouvel itĂ©rĂ© : x k + 1 = x k − α k ∇ f ( x k ) . {\displaystyle x_{k+1}=x_{k}-\alpha _{k}\nabla f(x_{k}).} {\displaystyle x_{k+1}=x_{k}-\alpha _{k}\nabla f(x_{k}).}

En pratique, il faudra prendre Δ > 0 {\displaystyle \varepsilon >0} {\displaystyle \varepsilon >0} ; 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 x {\displaystyle x} {\displaystyle x}, la fonction f {\displaystyle f} {\displaystyle f} dĂ©croĂźt le plus fortement dans la direction opposĂ©e Ă  celle du gradient de f {\displaystyle f} {\displaystyle f} en x {\displaystyle x} {\displaystyle x}, Ă  savoir dans la direction − ∇ f ( x ) {\displaystyle -\nabla f(x)} {\displaystyle -\nabla f(x)}. De maniĂšre plus prĂ©cise, cette affirmation exprime en termes suggestifs le fait que, si d f ( x ) ≠ 0 {\displaystyle \mathrm {d} f(x)\neq 0} {\displaystyle \mathrm {d} f(x)\neq 0}, la solution du problĂšme d'optimisation

min ‖ d ‖ = 1 ⟹ ∇ f ( x ) , d ⟩ {\displaystyle \min _{\|d\|=1}\,\langle \nabla f(x),d\rangle } {\displaystyle \min _{\|d\|=1}\,\langle \nabla f(x),d\rangle }

est la direction d = − ∇ f ( x ) / ‖ ∇ f ( x ) ‖ {\displaystyle d=-\nabla f(x)/\|\nabla f(x)\|} {\displaystyle d=-\nabla f(x)/\|\nabla f(x)\|}, orientĂ©e donc vers l'opposĂ© du gradient[3].

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 E {\displaystyle \mathbb {E} } {\displaystyle \mathbb {E} }. En effet, si σ : ( u , v ) ↩ σ ( u , v ) {\displaystyle \sigma :(u,v)\mapsto \sigma (u,v)} {\displaystyle \sigma :(u,v)\mapsto \sigma (u,v)} est un autre produit scalaire sur E {\displaystyle \mathbb {E} } {\displaystyle \mathbb {E} }, il existe un opĂ©rateur linĂ©aire continu S : E → E {\displaystyle S:\mathbb {E} \to \mathbb {E} } {\displaystyle S:\mathbb {E} \to \mathbb {E} } auto-adjoint et dĂ©fini positif tel que σ ( u , v ) = ⟹ S u , v ⟩ , {\displaystyle \sigma (u,v)=\langle Su,v\rangle ,} {\displaystyle \sigma (u,v)=\langle Su,v\rangle ,} si bien que le gradient de f {\displaystyle f} {\displaystyle f} en x {\displaystyle x} {\displaystyle x} pour ce dernier produit scalaire s'Ă©crit S − 1 ∇ f ( x ) {\displaystyle S^{-1}\nabla f(x)} {\displaystyle S^{-1}\nabla f(x)}, 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 f {\displaystyle f} {\displaystyle f} en x {\displaystyle x} {\displaystyle x}, c'est-Ă -dire toute direction d {\displaystyle d} {\displaystyle d} telle d f ( x ) ( d ) < 0 {\displaystyle \mathrm {d} f(x)(d)<0} {\displaystyle \mathrm {d} f(x)(d)<0}, est l'opposĂ© du gradient de f {\displaystyle f} {\displaystyle f} en x {\displaystyle x} {\displaystyle x} pour un certain produit scalaire[4]. L'efficacitĂ© de l'algorithme du gradient dĂ©pendra donc du choix de ce produit scalaire.

Si d f ( x ) ≠ 0 {\displaystyle \mathrm {d} f(x)\neq 0} {\displaystyle \mathrm {d} f(x)\neq 0}, la direction d = − ∇ f ( x ) {\displaystyle d=-\nabla f(x)} {\displaystyle d=-\nabla f(x)} est une direction de descente de f {\displaystyle f} {\displaystyle f} en x {\displaystyle x} {\displaystyle x}, puisque d f ( x ) ( d ) = ⟹ ∇ f ( x ) , − ∇ f ( x ) ⟩ = − ‖ ∇ f ( x ) ‖ 2 < 0 {\displaystyle \mathrm {d} f(x)(d)=\langle \nabla f(x),-\nabla f(x)\rangle =-\|\nabla f(x)\|^{2}<0} {\displaystyle \mathrm {d} f(x)(d)=\langle \nabla f(x),-\nabla f(x)\rangle =-\|\nabla f(x)\|^{2}<0}, si bien que pour tout α > 0 {\displaystyle \alpha >0} {\displaystyle \alpha >0} assez petit, on a

f ( x − α ∇ f ( x ) ) < f ( x ) {\displaystyle f(x-\alpha \nabla f(x))<f(x)} {\displaystyle f(x-\alpha \nabla f(x))<f(x)}.

GrĂące Ă  la recherche linĂ©aire, tant que d f ( x k ) ≠ 0 {\displaystyle \mathrm {d} f(x_{k})\neq 0} {\displaystyle \mathrm {d} f(x_{k})\neq 0}, l'algorithme fait dĂ©croĂźtre la fonction strictement Ă  chaque itĂ©ration :

f ( x k + 1 ) < f ( x k ) . {\displaystyle f(x_{k+1})<f(x_{k}).} {\displaystyle f(x_{k+1})<f(x_{k}).}

L'algorithme du gradient peut s'utiliser lorsque l'espace vectoriel sur lequel est dĂ©finie la fonction Ă  minimiser est de dimension infinie[5]. 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 x â€Č ( α ) = − ∇ f ( x ( α ) ) {\displaystyle x'(\alpha )=-\nabla f(x(\alpha ))} {\displaystyle x'(\alpha )=-\nabla f(x(\alpha ))} (flot du gradient), avec un pas α k {\displaystyle \alpha _{k}} {\displaystyle \alpha _{k}} de discrĂ©tisation adaptĂ© Ă  l'itĂ©ration k {\displaystyle k} {\displaystyle k} courante par la recherche linĂ©aire.

Résultats de convergence

[modifier | modifier le code]
Cette section est vide, insuffisamment dĂ©taillĂ©e ou incomplĂšte. Votre aide est la bienvenue ! Comment faire ?

ProblĂšmes quadratiques

[modifier | modifier le code]

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 E {\displaystyle \mathbb {E} } {\displaystyle \mathbb {E} } (donc de dimension finie) :

f : x ∈ E ↩ f ( x ) := ⟹ g , x ⟩ + 1 2 ⟹ H x , x ⟩ , {\displaystyle f:x\in \mathbb {E} \mapsto f(x):=\langle g,x\rangle +{\frac {1}{2}}\langle Hx,x\rangle ,} {\displaystyle f:x\in \mathbb {E} \mapsto f(x):=\langle g,x\rangle +{\frac {1}{2}}\langle Hx,x\rangle ,}

oĂč g ∈ E {\displaystyle g\in \mathbb {E} } {\displaystyle g\in \mathbb {E} } et H : E → E {\displaystyle H:\mathbb {E} \to \mathbb {E} } {\displaystyle H:\mathbb {E} \to \mathbb {E} } 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 ℓ 2 {\displaystyle \ell _{2}} {\displaystyle \ell _{2}} du hessien H du critĂšre f, c'est-Ă -dire le rapport entre sa plus grande valeur propre λ max ( H ) {\displaystyle \lambda _{\max }(H)} {\displaystyle \lambda _{\max }(H)} et sa plus petite valeur propre λ min ( H ) {\displaystyle \lambda _{\min }(H)} {\displaystyle \lambda _{\min }(H)},

Îș 2 := Îș 2 ( H ) := λ max ( H ) λ min ( H ) , {\displaystyle \kappa _{2}:=\kappa _{2}(H):={\frac {\lambda _{\max }(H)}{\lambda _{\min }(H)}},} {\displaystyle \kappa _{2}:=\kappa _{2}(H):={\frac {\lambda _{\max }(H)}{\lambda _{\min }(H)}},}

et la norme associée à H qui est définie par

v ∈ E ↩ ‖ v ‖ H = ⟹ H v , v ⟩ 1 / 2 . {\displaystyle v\in \mathbb {E} \mapsto \|v\|_{H}=\langle Hv,v\rangle ^{1/2}.} {\displaystyle v\in \mathbb {E} \mapsto \|v\|_{H}=\langle Hv,v\rangle ^{1/2}.}

Convergence sur une fonction quadratique strictement convexe â€” Soit f une fonction quadratique strictement convexe sur un espace euclidien, de hessien H. UtilisĂ© pour minimiser cette fonction, l'algorithme du gradient ci-dessus, avec Δ = 0 {\displaystyle \varepsilon =0} {\displaystyle \varepsilon =0} et recherche linĂ©aire exacte, gĂ©nĂšre une suite { x k } k ⩟ 1 {\displaystyle \{x_{k}\}_{k\geqslant 1}} {\displaystyle \{x_{k}\}_{k\geqslant 1}} convergeant q-linĂ©airement vers l'unique minimum x* de f. Plus prĂ©cisĂ©ment, on a

∀ k ⩟ 1 : ‖ x k + 1 − x ∗ ‖ H ⩜ ( Îș 2 − 1 Îș 2 + 1 ) ‖ x k − x ∗ ‖ H . {\displaystyle \forall \;k\geqslant 1:\qquad \|x_{k+1}-x_{*}\|_{H}\leqslant \left({\frac {\kappa _{2}-1}{\kappa _{2}+1}}\right)\|x_{k}-x_{*}\|_{H}.} {\displaystyle \forall \;k\geqslant 1:\qquad \|x_{k+1}-x_{*}\|_{H}\leqslant \left({\frac {\kappa _{2}-1}{\kappa _{2}+1}}\right)\|x_{k}-x_{*}\|_{H}.}

Comme ‖ x − x ∗ ‖ H 2 = 2 [ f ( x ) − f ( x ∗ ) ] {\displaystyle \|x-x_{*}\|_{H}^{2}=2[f(x)-f(x_{*})]} {\displaystyle \|x-x_{*}\|_{H}^{2}=2[f(x)-f(x_{*})]}, l'estimation de la vitesse de convergence ci-dessus s'applique aussi à celle du critùre f(x) vers sa valeur optimale f(x*).

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 ( Îș 2 − 1 ) / ( Îș 2 + 1 ) {\displaystyle (\kappa _{2}-1)/(\kappa _{2}+1)} {\displaystyle (\kappa _{2}-1)/(\kappa _{2}+1)}) est proche de 1. Cela se produit dans l'algorithme du gradient lorsque Îș 2 {\displaystyle \kappa _{2}} {\displaystyle \kappa _{2}} est grand, c'est-Ă -dire pour les problĂšmes mal conditionnĂ©s. À l'inverse, lorsque Îș 2 = 1 {\displaystyle \kappa _{2}=1} {\displaystyle \kappa _{2}=1} (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

[modifier | modifier le code]
Cette section est vide, insuffisamment dĂ©taillĂ©e ou incomplĂšte. Votre aide est la bienvenue ! Comment faire ?

Exemples

[modifier | modifier le code]

Minimisation d'une fonction de 2 variables

[modifier | modifier le code]

L'Ă©volution des itĂ©rĂ©s xk au cours de l'algorithme est illustrĂ©e sur la figure de droite : f est une fonction convexe de deux variables (dĂ©finie sur le plan R 2 {\displaystyle \mathbb {R} ^{2}} {\displaystyle \mathbb {R} ^{2}}) et son graphe reprĂ©sente une forme de bol. Chaque courbe bleue reprĂ©sente une courbe de niveau de f, un lieu de points en lesquels f vaut une constante donnĂ©e. Chaque vecteur rouge reprĂ©sente un dĂ©placement xk + 1 – xk, qui est orientĂ© suivant l'opposĂ© de la direction du gradient en xk. Ici, le gradient en xk est celui associĂ© au produit scalaire euclidien, si bien qu'il est orthogonal (pour le produit scalaire euclidien) Ă  la tangente en xk Ă  la courbe de niveau auquel xk 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 f est minimale.

Maximisation d'une fonction de 2 variables

[modifier | modifier le code]

On applique de la méthode de remontée de gradient à la fonction

f ( x , y ) = sin ⁡ ( 1 2 x 2 − 1 4 y 2 + 3 ) cos ⁡ ( 2 x + 1 − e y ) {\displaystyle f(x,y)=\sin \left({\frac {1}{2}}x^{2}-{\frac {1}{4}}y^{2}+3\right)\cos(2x+1-e^{y})} {\displaystyle f(x,y)=\sin \left({\frac {1}{2}}x^{2}-{\frac {1}{4}}y^{2}+3\right)\cos(2x+1-e^{y})}


  • Vue en plan avec courbes de niveaux
    Vue en plan avec courbes de niveaux
  • Vue en trois dimensions
    Vue en trois dimensions


Une illustration de cette fonction trigonométrique, ci-dessus, permet de constater le caractÚre zigzagant de la méthode du gradient, dû au fait que le gradient d'un itéré est orthogonal au gradient du précédent. On notera que malgré la convergence de l'algorithme, cette derniÚre est relativement lente à cause de cette avancée en zigzag.

Problùme de terminaison de l’algorithme à pas constant

[modifier | modifier le code]

Un dĂ©faut facilement observable de l'algorithme du gradient Ă  pas constant est sa non-convergence pour des pas trop Ă©levĂ©s, ce mĂȘme pour des fonctions qui en thĂ©orie devraient le faire converger. La fonction ci-dessous en est un cas typique. Dans la pratique, avec un pas de 10−2, l'algorithme converge en moins de 150 itĂ©rations. Mais si l'on dĂ©cide d'opter pour un pas de 10−1, l'algorithme ne convergera tout simplement pas. On pourra vĂ©rifier que l'algorithme boucle entre les deux mĂȘmes valeurs indĂ©finiment.

Points faibles, remĂšdes et extensions

[modifier | modifier le code]

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Ă©). Dans un tel cas, la suite des {xk} oscille de part et d'autre de la vallĂ©e et progresse laborieusement, mĂȘme lorsque les αk sont choisis de sorte Ă  minimiser f(b).

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.

Amélioration et alternatives dans le cas général

[modifier | modifier le code]

L’amĂ©lioration la plus naturelle de l’algorithme est la mĂ©thode de Newton avec recherche linĂ©aire, dont la convergence est quadratique, et garantie si on dispose des hypothĂšses mentionnĂ©es dans RĂ©sultats de convergence.

Une alternative 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’algorithme des faisceaux apporte un remĂšde Ă  l’absence de convergence[6].

Notes et références

[modifier | modifier le code]
(en) Cet article est partiellement ou en totalitĂ© issu de l’article de WikipĂ©dia en anglais intitulĂ© « Gradient descent Â» (voir la liste des auteurs).
  1. ↑ Augustin Cauchy, « MĂ©thode gĂ©nĂ©rale pour la rĂ©solution des systĂšmes d’équations simultanĂ©es Â», Comptes Rendus de l’AcadĂ©mie des Sciences de Paris, t. 25,‎ 1847, p. 536-538 (lire en ligne).
  2. ↑ (en) M. Annad, A. Lefkir, M. Mammar-kouadri et I. Bettahar, « Development of a local scour prediction model clustered by soil class Â», Water Practice and Technology, no wpt2021065,‎ 7 juillet 2021 (ISSN 1751-231X, DOI 10.2166/wpt.2021.065, lire en ligne, consultĂ© le 3 septembre 2021)
  3. ↑ Par l'inĂ©galitĂ© de Cauchy-Schwarz la valeur optimale de ce problĂšme est supĂ©rieure Ă  − ‖ ∇ f ( x ) ‖ {\displaystyle -\|\nabla f(x)\|} {\displaystyle -\|\nabla f(x)\|}, borne atteinte par la solution donnĂ©e.
  4. ↑ En effet, supposons que d f ( x ) ( d ) < 0 {\displaystyle \mathrm {d} f(x)(d)<0} {\displaystyle \mathrm {d} f(x)(d)<0} et que ∇ f ( x ) {\displaystyle \nabla f(x)} {\displaystyle \nabla f(x)} soit le gradient de f {\displaystyle f} {\displaystyle f} en x {\displaystyle x} {\displaystyle x} pour le produit scalaire ( u , v ) ↩ ⟹ u , v ⟩ {\displaystyle (u,v)\mapsto \langle u,v\rangle } {\displaystyle (u,v)\mapsto \langle u,v\rangle }. On considĂšre l'application σ : ( u , v ) ↩ ⟹ S u , v ⟩ {\displaystyle \sigma :(u,v)\mapsto \langle Su,v\rangle } {\displaystyle \sigma :(u,v)\mapsto \langle Su,v\rangle } avec

    S := I − ∇ f ( x ) ⊗ ∇ f ( x ) ⟹ ∇ f ( x ) , d ⟩ − d ⊗ d ‖ d ‖ 2 , {\displaystyle S:=I-{\frac {\nabla f(x)\otimes \nabla f(x)}{\langle \nabla f(x),d\rangle }}-{\frac {d\otimes d}{\|d\|^{2}}},} {\displaystyle S:=I-{\frac {\nabla f(x)\otimes \nabla f(x)}{\langle \nabla f(x),d\rangle }}-{\frac {d\otimes d}{\|d\|^{2}}},}

    oĂč I {\displaystyle I} {\displaystyle I} est l'identitĂ© sur E {\displaystyle \mathbb {E} } {\displaystyle \mathbb {E} } et u ⊗ v : E → E {\displaystyle u\otimes v:\mathbb {E} \to \mathbb {E} } {\displaystyle u\otimes v:\mathbb {E} \to \mathbb {E} } est l'opĂ©rateur dĂ©fini en z ∈ E {\displaystyle z\in \mathbb {E} } {\displaystyle z\in \mathbb {E} } par ( u ⊗ v ) z = ⟹ v , z ⟩ u {\displaystyle (u\otimes v)z=\langle v,z\rangle u} {\displaystyle (u\otimes v)z=\langle v,z\rangle u} (on reconnaĂźt la formule de BFGS directe de mise Ă  jour de l'identitĂ©). Comme S {\displaystyle S} {\displaystyle S} est auto-adjoint et dĂ©fini positif pour le produit scalaire ⟹ ⋅ , ⋅ ⟩ {\displaystyle \langle \cdot ,\cdot \rangle } {\displaystyle \langle \cdot ,\cdot \rangle }, l'application bilinĂ©aire σ {\displaystyle \sigma } {\displaystyle \sigma } est un produit scalaire. Par ailleurs, on a S d = − ∇ f ( x ) {\displaystyle Sd=-\nabla f(x)} {\displaystyle Sd=-\nabla f(x)}, si bien que le gradient de f {\displaystyle f} {\displaystyle f} pour le produit scalaire σ {\displaystyle \sigma } {\displaystyle \sigma }, qui vaut S − 1 ∇ f ( x ) {\displaystyle S^{-1}\nabla f(x)} {\displaystyle S^{-1}\nabla f(x)}, n'est autre que − d {\displaystyle -d} {\displaystyle -d}, comme annoncĂ©.

  5. ↑ (en) K. Ito et K. Kunisch, Lagrange Multiplier Approach to Variational Problems and Applications, Philadelphia, SIAM Publication, coll. Â« Advances in Design and Control Â», 2008.
  6. ↑ (en) K. C. Kiwiel, « Convergence and efficiency of subgradient methods for quasiconvex minimization Â», Mathematical Programming (Series A), vol. 90,‎ 2001, p. 1-25 (DOI 10.1007/PL00011414).

Voir aussi

[modifier | modifier le code]

Articles connexes

[modifier | modifier le code]
  • Algorithme du gradient stochastique
  • Algorithme proximal (optimisation)
  • Analyse vectorielle
  • DĂ©rivĂ©e directionnelle
  • DĂ©rivation automatique

Bibliographie

[modifier | modifier le code]
  • (en) Mordecai Avriel, Nonlinear Programming: Analysis and Methods, Dover Publishing, 2003 (ISBN 0-486-43227-0).
  • (en) D. P. Bertsekas, Nonlinear Programming, Athena Scientific, 1995 (ISBN 1-886529-14-0)
  • (en) J. F. Bonnans, J. Ch. Gilbert, C. LemarĂ©chal et C. SagastizĂĄbal, Numerical Optimization - Theoretical and Numerical Aspects, 2006
  • (en) Jan A. Snyman, Practical Mathematical Optimization: An Introduction to Basic Optimization Theory and Classical and New Gradient-Based Algorithms, Springer Publishing, 2005 (ISBN 0-387-24348-8)
  • Michel Bierlaire, Introduction Ă  l'optimisation diffĂ©rentiable, 2006 (ISBN 978-2-88074-669-8)
  • Marie-HĂ©lĂšne Meurisse, Algorithme numĂ©riques, Fondement thĂ©oriques et analyse pratique, Cours, exercices et applications avec MATLAB, 2018 (ISBN 9782340-021860)
  • Patrick Lascaux et Raymond ThĂ©odor, Analyse numĂ©rique matricielle appliquĂ©e Ă  l'art de l'ingĂ©nieur 2. MĂ©thodes itĂ©ratives, 2000
  • Jacques Rappaz et Marco Picasso, Introduction Ă  l'analyse numĂ©rique, 2017

Lien externe

[modifier | modifier le code]

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

  • Gradient descendant (en Espagnol)
v Â· m
Optimisation: théorie et algorithmes
Non linéaire
  • MĂ©thode du nombre d'or
  • Recherche linĂ©aire
  • MĂ©thode de Nelder-Mead
  • CritĂšres de Wolfe
  • MĂ©thode de Broyden-Fletcher-Goldfarb-Shanno
  • Algorithme Ă  rĂ©gions de confiance
  • PĂ©nalisation
  • Algorithme du gradient
  • Algorithme du gradient stochastique
  • MĂ©thode de Newton
  • Algorithme de Gauss-Newton
  • Algorithme de Levenberg-Marquardt
  • Algorithme du lagrangien augmentĂ©
Convexe
  • Optimisation complĂštement positive
  • Optimisation copositive
  • Optimisation SDP
  • MĂ©thode des plans sĂ©cants
  • Algorithme de Frank-Wolfe
  • MĂ©thode de l'ellipsoĂŻde
Linéaire
  • Optimisation conique
  • Algorithme du simplexe
  • MĂ©thodes de points intĂ©rieurs
  • DĂ©composition de Benders
  • GĂ©nĂ©ration de colonnes
Quadratique
  • Optimisation quadratique successive
Combinatoire
  • Algorithme d'approximation
  • Programmation dynamique
  • Algorithme glouton
  • Optimisation linĂ©aire en nombres entiers
Métaheuristique
  • StratĂ©gie d'Ă©volution
    • Algorithme gĂ©nĂ©tique
  • Essaims
  • ForĂȘts alĂ©atoires
  • Boosting
  • icĂŽne dĂ©corative Portail de l'analyse
  • icĂŽne dĂ©corative Portail de l'informatique thĂ©orique
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=Algorithme_du_gradient&oldid=230925644 Â».
CatĂ©gories :
  • Analyse Ă  plusieurs variables
  • Algorithme d'optimisation
CatĂ©gories cachĂ©es :
  • Page utilisant P31
  • Page utilisant P2534
  • Article utilisant l'infobox MĂ©thode scientifique
  • Article utilisant une Infobox
  • Article Ă  rĂ©fĂ©rence nĂ©cessaire
  • Article avec une section vide ou incomplĂšte
  • Portail:Analyse/Articles liĂ©s
  • Portail:MathĂ©matiques/Articles liĂ©s
  • Portail:Sciences/Articles liĂ©s
  • Portail:Informatique thĂ©orique/Articles liĂ©s
  • Portail:Informatique/Articles liĂ©s

  • indonesia
  • Polski
  • Ű§Ù„Ű±ÙŠŰ©
  • Deutsch
  • English
  • Español
  • Français
  • Italiano
  • Ù…Ű”Ű±
  • Nederlands
  • æœŹèȘž
  • PortuguĂȘs
  • Sinugboanong Binisaya
  • Svenska
  • ĐŁĐșŃ€Đ°Ń—ĐœŃĐșа
  • Tiáșżng Việt
  • Winaray
  • äž­æ–‡
  • РуссĐșĐž
Sunting pranala
Pusat Layanan

UNIVERSITAS TEKNOKRAT INDONESIA | ASEAN's Best Private University
Jl. ZA. Pagar Alam No.9 -11, Labuhan Ratu, Kec. Kedaton, Kota Bandar Lampung, Lampung 35132
Phone: (0721) 702022
Email: pmb@teknokrat.ac.id