Commit 4456923b authored by nanored's avatar nanored

A little more

parent 6aa11759
......@@ -6,4 +6,73 @@
Dans la suite on considère des problèmes sans contraintes. C'est à dire qu'on a simplement :
$$ \min_x f(x) $$
On supposera $f$ convexe, deux fois différentiable (et donc $\dom f$ ouvert). Enfin on supposera que $p^*$ est atteint et est fini. On construira des suites $(x^{(k)})_{k \geqslant 0}$ à valeurs dans $\dom f$ dont l'image par $f$ converge vers $p^*$.
\ No newline at end of file
On supposera $f$ convexe, deux fois différentiable (et donc $\dom f$ ouvert). Enfin on supposera que $p^*$ est atteint et est fini. On construira des suites $(x^{(k)})_{k \geqslant 0}$ à valeurs dans $\dom f$ dont l'image par $f$ converge vers $p^*$. De plus on supposera toujours que l'ensemble $S$ est fermé, où S est défini par :
$$ S = \left\{ x \mid f(x) \leqslant f \left( x^{(0)} \right) \right\} $$
\subs{Méthode de descente générale}
Voici un algorithme de descente dans un cadre très générale
\begin{algorithm}[h]
\caption{Méthode de descente générale}
\KwIn{Un point de départ $x \in \dom f$}
\Repeat{Un critère d'arrêt est vérifié}{
Déterminer une direction de descente $\Delta x$ \\
Choisir une longueur d'étape $t > 0$ \\
Mettre à jour $x$ via : $x \gets x + t \Delta x$
}
\end{algorithm}
Comme on veut $f \left( x^{(k+1)} \right) < f \left( x^{(k)} \right)$ il faut que la direction $\Delta x$ soit dans le demi-espace :
$$ \nabla f(x)^\trans \Delta x < 0 $$
\paragraph{Critère d'arrêt}
Si $f$ est strictement convexe et que l'on connaît un $m > 0$ tel que :
$$ \forall x \in S, \; \nabla^2 f(x) \succeq m I $$
Alors on a en utilisant la convexité :
$$ f(y) \geqslant f(x) + \nabla f(x)^\trans (y - x) + \dfrac{m}{2} \| y - x \|_2^2 $$
En sachant que $f$ est minorée par $p^*$, cette équation se réécrit :
$$ f(x) - p^* \leqslant - \nabla f(x)^\trans (y - x) - \dfrac{m}{2} \| y - x \|_2^2 $$
On cherche un majorant du côté droit de l'inégalité. Pour cela on écrit l'équation d'annulation du gradient en $y$ et on obtient :
$$ y = x + \dfrac{1}{m} \nabla f(x) $$
Ce qui donne finalement :
\begin{equation}
\label{stopcont}
f(x) - p^* \leqslant \dfrac{1}{2 m} \left\| \nabla f(x) \right\|_2^2
\end{equation}
Si on est capable de calculer le gradient on peut donc connaître une borne supérieur sur la distance avec la valeur optimale.
\paragraph{Recherche de ligne par \textit{backtracking}}
Idéalement on veut $t = \argmin_{t > 0} f(x + t \Delta x)$. La technique présenté dans ce paragraphe consiste à considérer $t$ de plus en plus petit jusqu'à ce qu'il vérifie une condition. Prenons alors deux paramètres $\alpha \in ]0, 1/2 [$ et $\beta \in ]0, 1[$. Voici alors l'algo :
\begin{algorithm}[h]
\caption{Recherche de ligne par \textit{backtracking}}
$t \gets 1$ \\
\Repeat{$f(x + t \Delta x) < f(x) + \alpha t \nabla f(x)^\trans \Delta x$}{
$t \gets \beta t$
}
\end{algorithm}
\begin{center}
\begin{tikzpicture}
\draw[->] (0, 0) -- (6, 0) node[right] {$t$};
\draw[->] (0, 0) -- (0, 3);
\draw[red, thick, domain=0:5.5, smooth, variable=\x] plot ({\x}, {2.3 + 0.25*\x*(\x - 5.2)}) node[right] {$f(x + t \Delta x)$};
\draw[dashed] (-0.1, 2.43) -- node[above right, pos=0.9] {\small $f(x) + t \nabla f(x)^\trans \Delta x$} (2, -0.3) ;
\draw[dashed, blue, thick] (-0.1, 2.33) -- (6, 0.5) node[right] {$f(x) + \alpha t \nabla f(x)^\trans \Delta x$};
\node[blue] at (4, 0) {\small $|$};
\node[blue, below] at (4, 0) {$t_0$};
\end{tikzpicture}
\end{center}
\paragraph{Direction}
Une direction classique à prendre est $\Delta x = - \nabla f(x)$.
\subs{Méthode de Newton}
On cherche à minimiser l'approximation du second ordre suivante :
$$ f(x + v) \approx \hat{f}(x + v) = f(x) + \nabla f(x)^\trans v + \dfrac{1}{2} v^\trans \nabla^2 f(x) v $$
On annule alors le gradient en $v$ pour obtenir :
$$ \Delta x_{nt} = - \nabla^2 f(x)^{-1} \nabla f(x) $$
Si on veut un critère d'arrêt, on peut remplacer l'optimal $p^*$ dans \eqref{stopcont} par une approximation avec le minimum de $\hat{f}$, c'est à dire :
$$ f(x) - \inf_y \hat{f}(y) = f(x) - \hat{f} \left( \Delta x_{nt} \right) = \dfrac{1}{2} \nabla f(x)^\trans \nabla^2 f(x)^{-1} \nabla f(x) $$
Cela donne alors le critère d'arrêt :
$$ \nabla f(x)^\trans \Delta x_{nt} \leqslant \epsilon $$
\ No newline at end of file
......@@ -55,7 +55,7 @@
\end{center}
\paragraph{2.}
We first compute the dual function (we replace the objective function by its opposite because the problem is formulated with a maximum instead of a minimum):
We first compute the dual function. We replace the objective function by its opposite because the problem is formulated with a maximum instead of a minimum. We need to keep in mind that the equivalent problem in which we replace the maximum by the minimum of the opposite function has an optimal value that is the opposite of the original problem.
$$ g_D(\lambda) = \inf_y \left( - b^\trans y + \lambda^\trans \left( A^\trans y - c \right) \right) = \inf_y \left( \left( -b + A \lambda \right)^\trans y - \lambda^\trans c \right) $$
If the vector by which we multiply $y$ is not null then $g$ is unbounded. We then obtain:
$$ g_D(\lambda) = \syst{ll}{
......@@ -68,7 +68,7 @@
\text{s.t.} & A \lambda = b \\
& \lambda \succeq 0
\end{array} $$
Finally we can replace the maximum by the minimum of the opposite objective function and we retrieve the problem (P).
Finally we can replace the maximum by the opposite of the minimum of the opposite objective function. Because we computed the dual of an equivalent problem that have an optimal value opposed to the original one, we retrieve the problem (P).
\begin{center}
\fbox{The dual problem of (D) is (P).}
\end{center}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment