Algorithme à directions de descente

Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.
Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.

Certaines informations figurant dans cet article ou cette section devraient être mieux reliées aux sources mentionnées dans les sections « Bibliographie », « Sources » ou « Liens externes » ().

Vous pouvez améliorer la vérifiabilité en associant ces informations à des références à l'aide d'appels de notes.

Un algorithme à directions de descente est un algorithme d'optimisation différentiable (l'optimisation dont il est question ici est une branche des mathématiques), destiné à minimiser une fonction réelle différentiable définie sur un espace euclidien (par exemple, R n {\displaystyle \mathbb {R} ^{n}} , l'espace des n {\displaystyle n} -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é le long d'une direction de descente, 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 approche algorithmique peut être vue comme une technique de globalisation, c'est-à-dire une méthode permettant d'obtenir la convergence des itérés (sous certaines conditions) quel que soit l'itéré initial choisi. Elle s'apparente ainsi aux algorithmes à régions de confiance ; ces dernières améliorent légèrement (mais parfois de manière décisive) leurs résultats de convergence mais sont plus compliquées à mettre en œuvre, ce qui limite parfois leur application.

Les algorithmes à directions de descente s'étendent aux problèmes avec contraintes simples (pourvu que la projection sur l'ensemble admissible soit aisée, peu coûteuse en temps de calcul) ou pour des problèmes avec contraintes fonctionnelles non linéaires, par l'intermédiaire de fonctions de mérite. Elles sont aussi utilisées en optimisation non lisse.

Principes de l'algorithme

Cadre

Le cadre est le suivant. On cherche un point x {\displaystyle x_{*}} qui minimise une fonction différentiable :

x E f ( x ) R {\displaystyle x\in \mathbb {E} \mapsto f(x)\in \mathbb {R} }

définie sur un espace hilbertien E {\displaystyle \mathbb {E} } , dont on note , {\displaystyle \langle \cdot ,\cdot \rangle } le produit scalaire et {\displaystyle \|\cdot \|} la norme associée. On note f ( x ) {\displaystyle f'(x)} et f ( x ) {\displaystyle \nabla f(x)} la dérivée et le gradient de f {\displaystyle f} en x , {\displaystyle x,} si bien que

d E : f ( x ) d = f ( x ) , d . {\displaystyle \forall \,d\in \mathbb {E} :\qquad f'(x)\cdot d=\langle \nabla f(x),d\rangle .}

Énoncé

Les algorithmes à directions de descente cherchent un minimum de f {\displaystyle f} en générant une suite de points { x k } k 1 , {\displaystyle \{x_{k}\}_{k\geqslant 1},} appelés itérés, qui approchent de mieux en mieux un minimiseur x {\displaystyle x_{*}} du critère f {\displaystyle f} , si tout va bien. Cette suite est construite en se fondant sur deux constructions :

  • calcul d'une direction de descente d k E , {\displaystyle d_{k}\in \mathbb {E} ,}
  • détermination d'un pas α k {\displaystyle \alpha _{k}} , qui est un nombre réel strictement positif, le long de la direction de descente de telle sorte que le nouvel itéré donne au critère une valeur inférieure à celle qu'il a en l'itéré courant ; le nouvel itéré est de la forme suivante

    x k + 1 := x k + α k d k ; {\displaystyle x_{k+1}:=x_{k}+\alpha _{k}d_{k};}

    cette opération de détermination du pas s'appelle la recherche linéaire.

Ces deux opérations seront décrites ci-dessous, mais on peut dès à présent résumer l'algorithme. Il s'agit d'un schéma algorithmique, car beaucoup d'aspects de celui-ci ne sont pas spécifiés avec précision.

Algorithme à directions de descente (schéma) — On se donne un point/itéré initial x 1 E {\displaystyle x_{1}\in \mathbb {E} } et un seuil de tolérance ε 0 {\displaystyle \varepsilon \geqslant 0} . Un algorithme à directions de descente définit une suite d'itérés x 1 {\displaystyle x_{1}} , x 2 {\displaystyle x_{2}} , E {\displaystyle \ldots \in \mathbb {E} } , jusqu'à ce qu'un test d'arrêt soit satisfait. Il passe de x k {\displaystyle x_{k}} à x k + 1 {\displaystyle x_{k+1}} par les étapes suivantes.

  1. Simulation : calcul de f ( x k ) {\displaystyle \nabla f(x_{k})} au moins.
  2. Test d'arrêt : si f ( x k ) ε {\displaystyle \|\nabla f(x_{k})\|\leqslant \varepsilon } , arrêt.
  3. Direction : calcul d'une direction de descente d k E {\displaystyle d_{k}\in \mathbb {E} } .
  4. Recherche linéaire : déterminer un pas α k > 0 {\displaystyle \alpha _{k}>0} le long de d k {\displaystyle d_{k}} .
  5. Nouvel itéré : x k + 1 = x k + α k d k . {\displaystyle x_{k+1}=x_{k}+\alpha _{k}d_{k}.}

Cet algorithme est extrêmement simple ; ça ne l'empêche pas d'avoir des propriétés de convergence intéressantes, bien au contraire. Cette simplicité permet d'étendre l'algorithme à des contextes variés, aux problèmes d'optimisation avec contraintes en particulier.

À propos du test d'arrêt

En pratique, il faudra prendre ε > 0 {\displaystyle \varepsilon >0} dans le test d'arrêt de l'étape 2 ; la valeur nulle de cette tolérance a été admise uniquement pour simplifier l'expression des résultats de convergence ci-dessous.

Dans les problèmes sans contrainte, il est normal que le test d'arrêt porte sur la petitesse du gradient ( ε {\displaystyle \varepsilon } est généralement pris petit). C'est en effet ce que suggère la condition nécessaire d'optimalité du premier ordre f ( x ) = 0 {\displaystyle \nabla f(x_{*})=0} . Comme x k {\displaystyle x_{k}} n'est jamais exactement égal à x {\displaystyle x_{*}} , ce test ne pourra fonctionner que si f ( x ) {\displaystyle \nabla f(x)} est faible en norme pour x {\displaystyle x} voisin de x {\displaystyle x_{*}} , ce qui revient pratiquement à supposer que f {\displaystyle f} est de classe C 1 {\displaystyle C^{1}} .

Par ailleurs, un tel test d'arrêt suggère qu'un algorithme à directions de descente ne peut pas trouver mieux qu'un point stationnaire de f {\displaystyle f} . C'est en effet souvent le cas, mais ce point faible est rarement rédhibitoire en pratique. On peut noter qu'il existe une version élaborée des méthodes à régions de confiance qui permet de trouver un minimum local, évitant ainsi les points stationnaires qui n'ont pas cette propriété de minimalité locale.

On est parfois tenté d'arrêter l'algorithme si le critère f {\displaystyle f} ne décroît presque plus. Ceci n'est pas sans risque et il vaut mieux ne pas utiliser un tel test d'arrêt, car une faible variation du critère peut se produire loin d'une solution. En effet, au premier ordre, f ( x k + 1 ) f ( x k ) {\displaystyle f(x_{k+1})\simeq f(x_{k})} revient à α k f ( x k ) , d k 0 {\displaystyle \alpha _{k}\langle \nabla f(x_{k}),d_{k}\rangle \simeq 0} , ce qui peut arriver si le pas α k {\displaystyle \alpha _{k}} est petit (c'est en général très suspect) ou si la direction de descente fait avec l'opposé du gradient un angle proche de 90 degrés, une situation qui se rencontre fréquemment (si l'algorithme est bien conçu, cela traduit un mauvais conditionnement du problème).

Même si le test d'arrêt de l'étape 2 est suggéré par la théorie, on peut s'interroger sur sa pertinence, du point de vue suivant : peut-on préciser dans quelle mesure le fait d'avoir un petit gradient implique que l'itéré est proche d'un point stationnaire de f {\displaystyle f}  ? Le cas où f {\displaystyle f} est quadratique strictement convexe est instructif :

f ( x ) = 1 2 x A x b x , avec     A 0. {\displaystyle f(x)={\frac {1}{2}}x^{\top }Ax-b^{\top }x,\qquad {\mbox{avec}}~~A\succ 0.}

Minimiser f {\displaystyle f} revient alors à déterminer l'unique solution x {\displaystyle x_{*}} du système linéaire A x = b {\displaystyle Ax=b} . Par ailleurs, le gradient de f {\displaystyle f} (pour le produit scalaire euclidien) est le résidu du système linéaire : f ( x ) = A x b {\displaystyle \nabla f(x)=Ax-b} . Or on sait bien que, si le conditionnement de A {\displaystyle A} est élevé, on peut très bien avoir A x b 2 {\displaystyle \|Ax-b\|_{2}} petit et une erreur x x 2 {\displaystyle \|x-x_{*}\|_{2}} importante. Le test d'arrêt portant sur la petitesse du gradient doit donc être interprété avec précaution.

Choix d'une direction de descente

Les algorithmes à directions de descente portent en général le nom de leur direction de descente. Ainsi

Ces directions sont décrites dans l'article «Direction de descente».

Règles de recherche linéaire

Plusieurs règles permettant de déterminer la valeur du paramètre α k {\displaystyle \alpha _{k}} existent. Elles consistent, pour la plupart, à trouver la valeur qui minimise la fonction-coût

q ( α ) = f ( x k + α d k ) . {\displaystyle q(\alpha )=f(x_{k}+\alpha d_{k}).}

Considérant que d k {\displaystyle d_{k}} est une direction de descente, on obtient q ( 0 ) = f ( x k ) d k < 0 {\displaystyle q'(0)=\nabla f(x_{k})\cdot d_{k}<0} , ce qui permet de déterminer le comportement de q en fonction des valeurs de α. Il convient toutefois d'être prudent :

  • en choisissant α trop grand, on ne parviendra pas à faire décroître les valeurs de q ou au pire d'obtenir un algorithme oscillant ;
  • en choisissant α trop petit, l'algorithme aura une convergence lente.

Règles exactes

Peu de cas permettent d'établir exactement la valeur optimale du paramètre. Le cas quadratique est de ceux-ci : pour une fonction quadratique

f ( x ) = 1 2 x A x + b x + c {\displaystyle f(x)={\frac {1}{2}}x^{\top }Ax+b^{\top }x+c}

le paramètre optimal à l'étape k est[1]

α k = b d k d k A d k . {\displaystyle \alpha _{k}={\frac {-b^{\top }d_{k}}{d_{k}^{\top }Ad_{k}}}.}

Règle d'Armijo

La règle d'Armijo se base sur le choix d'un paramètre 0 < m < 1 {\displaystyle 0<m<1} et détermine une valeur approchée de α k {\displaystyle \alpha _{k}} par la condition :

q ( α ) q ( 0 ) + m α q ( 0 ) . {\displaystyle q(\alpha )\leqslant q(0)+m\alpha q'(0).}

Le risque de cette méthode est de favoriser les valeurs trop petites, aussi, elle est rarement utilisée seule.

Règle de Goldstein

Goldstein propose en 1967 une méthode basée sur le choix cette fois-ci de deux paramètres 0 < m 1 < m 2 < 1 {\displaystyle 0<m_{1}<m_{2}<1} et détermine les valeurs approchées de α k {\displaystyle \alpha _{k}} par deux conditions :

{ q ( α ) q ( 0 ) + m 1 α q ( 0 ) , q ( α ) q ( 0 ) + m 2 α q ( 0 ) . {\displaystyle {\begin{cases}q(\alpha )&\leqslant q(0)+m_{1}\alpha q'(0),\\q(\alpha )&\geqslant q(0)+m_{2}\alpha q'(0).\end{cases}}}

Règle de Wolfe

Wolfe propose en 1969 une méthode basée sur le choix de deux paramètres 0 < m 1 < m 2 < 1 {\displaystyle 0<m_{1}<m_{2}<1} et détermine les valeurs approchées de α k {\displaystyle \alpha _{k}} par deux conditions :

{ q ( α ) q ( 0 ) + m 1 α q ( 0 ) , q ( α ) m 2 q ( 0 ) . {\displaystyle {\begin{cases}q(\alpha )&\leqslant q(0)+m_{1}\alpha q'(0),\\q'(\alpha )&\geqslant m_{2}q'(0).\end{cases}}}

Deux valeurs usuelles des paramètres sont m 1 = 0 , 1 {\displaystyle m_{1}=0,1} et m 2 = 0 , 7 {\displaystyle m_{2}=0,7} .

Convergence

Cette section est vide, insuffisamment détaillée ou incomplète. Votre aide est la bienvenue ! Comment faire ?

Dans le cas d'un algorithme de descente, la convergence est assurée pour une fonction f {\displaystyle f} convexe, différentiable et de gradient K-lipschitzien.

k N , f ( x k ) f ( x ) x k x 0 2 2 2 α min k   avec   α min = min k α k {\displaystyle \forall k\in \mathbb {N} ,\,f(x_{k})-f(x^{*})\leqslant {\frac {\|x_{k}-x_{0}\|_{2}^{2}}{2\alpha _{\min }k}}\ {\textrm {avec}}\ \alpha _{\min }=\min _{k}\alpha _{k}}

Annexes

Articles connexes

Lien externe

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

Références

  1. (en) P.E. Frandsen, K. Jonasson, H.B. Nielsen et O. Tingleff, Unconstrained optimization, (lire en ligne)

Ouvrages généraux

  • (en) D. P. Bertsekas (1995), Nonlinear Programming. Athena Scientific. (ISBN 978-1-886529-14-4).
  • (en) J. F. Bonnans, J. Ch. Gilbert, C. Lemaréchal, C. Sagastizábal (2006), Numerical Optimization - Theoretical and Numerical Aspects [détail des éditions].
  • (en) J. Nocedal, S. J. Wright (2006), Numerical Optimization, Springer. (ISBN 978-0-387-30303-1).
  • icône décorative Portail des mathématiques