En analyse numérique et plus précisément en optimisation mathématique, l'algorithme proximal (ou algorithme du point proximal) est un algorithme itératif de calcul d'un minimum d'une fonction convexe semi-continue inférieurement propre. Si la fonction n'est pas quadratique, chaque itération requiert la minimisation d'une fonction non linéaire fortement convexe. L'algorithme peut être vu comme une méthode de gradient implicite.
Certains algorithmes peuvent être interprétés comme des algorithmes proximaux. Il en est ainsi de la méthode des multiplicateurs (ou algorithme du lagrangien augmenté). Cette lecture permet alors d'en établir des propriétés de convergence, déduites de celles de l'algorithme proximal.
Soient H {\displaystyle \mathbb {H} } un espace de Hilbert, dont le produit scalaire est noté ⟨ ⋅ , ⋅ ⟩ {\displaystyle \langle \cdot ,\cdot \rangle } et la norme associée est notée ‖ ⋅ ‖ {\displaystyle \|\cdot \|} , et f : H → R ∪ { + ∞ } {\displaystyle f:\mathbb {H} \to \mathbb {R} \cup \{+\infty \}} une fonction convexe semi-continue inférieurement propre. On s'intéresse au problème de trouver un minimum de f {\displaystyle f} , c'est-à-dire un point x ∈ H {\displaystyle x\in \mathbb {H} } tel que
∀ x ′ ∈ H , f ( x ) ⩽ f ( x ′ ) . {\displaystyle \forall \,x'\in \mathbb {H} ,\qquad f(x)\leqslant f(x').}
Le problème revient à trouver une solution x {\displaystyle x} de l'inclusion
∂ f ( x ) ∋ 0 , {\displaystyle \partial f(x)\ni 0,}
où ∂ f ( x ) {\displaystyle \partial f(x)} est le sous-différentiel de f {\displaystyle f} en x {\displaystyle x} , parce que cette inclusion est une condition nécessaire et suffisante d'optimalité du problème de minimisation. On montre que, sous les propriétés énoncées de f {\displaystyle f} , x ⊸ ∂ f ( x ) {\displaystyle x\multimap \partial f(x)} est un opérateur monotone maximal[1], ce qui permet de voir le problème comme un cas particulier de recherche de zéro d'opérateur monotone maximal et de voir l'algorithme proximal en optimisation comme un cas particulier de l'algorithme proximal pour la recherche de zéro de tels opérateurs.
L'algorithme est en partie fondé sur le fait que, lorsque f {\displaystyle f} est convexe fermée propre et r > 0 {\displaystyle r>0} , la fonction
y ∈ H ↦ f x , r ( y ) := f ( y ) + 1 2 r ‖ y − x ‖ 2 ∈ R ∪ { + ∞ } {\displaystyle y\in \mathbb {H} \mapsto f_{x,r}(y):=f(y)+{\frac {1}{2r}}\|y-x\|^{2}\in \mathbb {R} \cup \{+\infty \}}
est fortement convexe, de module r − 1 {\displaystyle r^{-1}} , fermée propre et a donc un minimiseur unique. Dans la description de l'algorithme ci-dessous, on note
f k := f x k , r k . {\displaystyle f_{k}:=f_{x_{k},r_{k}}.}
Algorithme proximal — On se donne un itéré initial x 0 ∈ H {\displaystyle x_{0}\in \mathbb {H} } . L'algorithme proximal définit une suite d'itérés x 1 , x 2 , … ∈ H {\displaystyle x_{1},x_{2},\ldots \in \mathbb {H} } , en calculant x k + 1 {\displaystyle x_{k+1}} à partir de x k {\displaystyle x_{k}} par
x k + 1 = a r g m i n x ∈ H f k ( x ) , {\displaystyle x_{k+1}=\operatorname {arg\,min} _{x\in \mathbb {H} }\,f_{k}(x),}
où r k > 0 {\displaystyle r_{k}>0} est un nombre réel pouvant être modifié à chaque itération.
Exprimé autrement, le calcul du nouvel itéré consiste à trouver l'unique solution x k + 1 {\displaystyle x_{k+1}} de l'inclusion
0 ∈ ∂ f k ( x k + 1 ) ≡ ∂ f ( x k + 1 ) + 1 r k ( x k + 1 − x k ) , {\displaystyle 0\in \partial f_{k}(x_{k+1})\equiv \partial f(x_{k+1})+{\frac {1}{r_{k}}}(x_{k+1}-x_{k}),}
ce qui s'écrit aussi
x k + 1 = x k − r k g k + 1 , avec g k + 1 ∈ ∂ f ( x k + 1 ) . {\displaystyle x_{k+1}=x_{k}-r_{k}g_{k+1},\quad {\mbox{avec}}\quad g_{k+1}\in \partial f(x_{k+1}).}
L'algorithme peut donc être vu comme une méthode de sous-gradient implicite (dans le sens où le sous-gradient est évalué au nouveau point x k + 1 {\displaystyle x_{k+1}} – inconnu – et non pas en l'itéré courant x k {\displaystyle x_{k}} ) avec pas r k {\displaystyle r_{k}} . On voit aussi que chaque itération requiert la résolution d'un problème d'optimisation non linéaire (à moins que f {\displaystyle f} ne soit quadratique).
Pour expliquer le principe contre-intuitif de l'algorithme, puisque pour minimiser f {\displaystyle f} , il faut qu'à chaque itération, l'algorithme proximal minimise la fonction f k {\displaystyle f_{k}} qui semble bien être aussi compliquée que f {\displaystyle f} , on peut remarquer les points suivants.
Le calcul de l'itéré suivant par x k + 1 = a r g m i n x ∈ H f k ( x ) {\displaystyle x_{k+1}=\operatorname {arg\,min} _{x\in \mathbb {H} }\,f_{k}(x)} est souvent coûteux en temps de calcul. Dès lors, l'on se contente souvent d'un calcul approché conservant toutefois les propriétés de convergence de l'algorithme idéal. On peut aussi arguer que ce calcul ne peut être réalisé exactement en arithmétique flottante. Différents critères ont donc été proposés pour déterminer ce qu'est une résolution approchée acceptable.
Rockafellar (1976a) propose de se contenter d'un x k + 1 {\displaystyle x_{k+1}} vérifiant
(R1) dist ( r k ∂ f k ( x k + 1 ) , 0 ) ⩽ ε k , avec ∑ k ⩾ 0 ε k < ∞ . {\displaystyle {\mbox{(R1)}}\qquad \operatorname {dist} {\Bigl (}r_{k}\partial f_{k}(x_{k+1}),0{\Bigr )}\leqslant \varepsilon _{k},\qquad {\mbox{avec}}~~\sum _{k\geqslant 0}\varepsilon _{k}<\infty .}
Ce critère requiert la connaissance complète du sous-différentiel ∂ f ( x k + 1 ) {\displaystyle \partial f(x_{k+1})} , ce qui est rarement aisé. Cependant, si l'on connait un élément g k + 1 ∈ ∂ f ( x k + 1 ) {\displaystyle g_{k+1}\in \partial f(x_{k+1})} , le critère pourra être renforcé en y remplaçant dist ( r k ∂ f k ( x k + 1 ) , 0 ) {\displaystyle \operatorname {dist} (r_{k}\partial f_{k}(x_{k+1}),0)} par ‖ x k + 1 + r k g k + 1 − x k ‖ {\displaystyle \|x_{k+1}+r_{k}g_{k+1}-x_{k}\|} puisque x k + 1 + r k g k + 1 − x k ∈ r k ∂ f k ( x k + 1 ) {\displaystyle x_{k+1}+r_{k}g_{k+1}-x_{k}\in r_{k}\partial f_{k}(x_{k+1})} .
On a le résultat de convergence faible suivant[2].
Convergence faible — On suppose que f {\displaystyle f} est propre convexe fermée. On considère l'algorithme proximal avec le critère d'arrêt (R1) et r k {\displaystyle r_{k}} uniformément positif. On note { x k } {\displaystyle \{x_{k}\}} la suite générée par l'algorithme. Alors
f ( x k ) − f ( x ¯ ) ≤ ( ε k + ‖ x k + 1 − x k ‖ r k ) ‖ x k + 1 − x ¯ ‖ → 0. {\displaystyle f(x_{k})-f({\bar {x}})\leq \left({\frac {\varepsilon _{k}+\|x_{k+1}-x_{k}\|}{r_{k}}}\right)\|x_{k+1}-{\bar {x}}\|\to 0.}
Rockafellar (1976a) propose aussi un critère plus exigeant, celui dans lequel on requiert le calcul d'un x k + 1 {\displaystyle x_{k+1}} vérifiant
(R2) dist ( r k ∂ f k ( x k + 1 ) , 0 ) ⩽ ε k ‖ x k + 1 − x k ‖ , avec ∑ k ⩾ 0 ε k < ∞ . {\displaystyle {\mbox{(R2)}}\qquad \operatorname {dist} {\Bigl (}r_{k}\partial f_{k}(x_{k+1}),0{\Bigr )}\leqslant \varepsilon _{k}\|x_{k+1}-x_{k}\|,\qquad {\mbox{avec}}~~\sum _{k\geqslant 0}\varepsilon _{k}<\infty .}
On peut faire pour ce critère, la même remarque que celle faite pour le critère (R1), concernant le calcul du sous-différentiel ∂ f ( x k + 1 ) {\displaystyle \partial f(x_{k+1})} .
On a alors le résultat de convergence forte suivant[3]. On y impose que ( ∂ f ) − 1 {\displaystyle (\partial f)^{-1}} soit localement radialement lipschitzienne de module L {\displaystyle L} en zéro, ce qui signifie que
{ f a un unique minimiseur x ¯ , ∃ δ > 0 : s ∈ ∂ f ( x ) , ‖ s ‖ ⩽ δ ⟹ ‖ x − x ¯ ‖ ⩽ L ‖ s ‖ . {\displaystyle \left\{{\begin{array}{l}f~{\mbox{a un unique minimiseur}}~{\bar {x}},\\\exists \,\delta >0:~~s\in \partial f(x),~~\|s\|\leqslant \delta \quad \Longrightarrow \quad \|x-{\bar {x}}\|\leqslant L\|s\|.\end{array}}\right.}
D'autres expressions de cette propriété sont données dans le résultat, en termes de f {\displaystyle f} et de sa conjuguée f ∗ {\displaystyle f^{*}} .
Convergence forte — On suppose que f {\displaystyle f} est propre convexe fermée, qu'elle a un unique minimiseur x ¯ {\displaystyle {\bar {x}}} et que, pour une constante L > 0 {\displaystyle L>0} , elle vérifie l'une des propriétés équivalentes suivantes :
On considère l'algorithme proximal avec le critère d'arrêt (R2) et des paramètres r k {\displaystyle r_{k}} uniformément positifs. On suppose que la suite générée { x k } {\displaystyle \{x_{k}\}} est bornée. Alors { x k } {\displaystyle \{x_{k}\}} converge fortement et linéairement vers x ¯ {\displaystyle {\bar {x}}} :
∃ k ¯ , ∀ k ⩾ k ¯ : ‖ x k + 1 − x ¯ ‖ ⩽ θ k ‖ x k − x ¯ ‖ , {\displaystyle \exists \,{\bar {k}},\quad \forall \,k\geqslant {\bar {k}}:\qquad \|x_{k+1}-{\bar {x}}\|\leqslant \theta _{k}\|x_{k}-{\bar {x}}\|,}
où θ k := ( μ k + ε k ) / ( 1 − ε k ) ⩽ θ ¯ < 1 {\displaystyle \theta _{k}:=(\mu _{k}+\varepsilon _{k})/(1-\varepsilon _{k})\leqslant {\bar {\theta }}<1} avec μ k := L / ( L 2 + r k 2 ) 1 / 2 ⩽ μ ¯ < 1 {\displaystyle \mu _{k}:=L/(L^{2}+r_{k}^{2})^{1/2}\leqslant {\bar {\mu }}<1} .
On note que si r k ↑ ∞ {\displaystyle r_{k}\uparrow \infty } , alors μ k → 0 {\displaystyle \mu _{k}\to 0} et θ k → 0 {\displaystyle \theta _{k}\to 0} , ce qui implique qu'alors la suite { x k } {\displaystyle \{x_{k}\}} converge superlinéairement vers x ¯ {\displaystyle {\bar {x}}} .