diff --git a/03_optimisation.md b/03_optimisation.md index 9fce76ffb6c6a1137f7a515dd71de0017c3532ce..f19a34c9b473a6b94b1917d44ac815fe34a20783 100644 --- a/03_optimisation.md +++ b/03_optimisation.md @@ -717,7 +717,7 @@ Avec ce qui précède, voyez-vous une façon de trouver le minimum de la fonctio --- -<!-- Une méthode pour trouver le minimum de $f(x,y)$ est la méthode de la *descente de gradient*. Cette méthode +Une méthode pour trouver le minimum de $f(x,y)$ est la méthode de la *descente de gradient*. Cette méthode correspond intuitivement à la méthode que suivrait un skieur pour arriver le plus vite possible en bas d'une montagne. Pour ce faire, il suivrait toujours la pente la plus raide possible. @@ -726,8 +726,8 @@ itérative. Soient donnés un point de départ $\vec x_0$, et une fonction objectif $f(\vec x)$, on va approximer le zéro itérativement avec une suite $\vec x_1$, $\vec x_2$, ... telle que \begin{align} -\vec x_1&=x_0-\lambda\cdot f(\vec x_0),\\ -\vec x_2&=x_1-\lambda\cdot f(\vec x_1),\\ +\vec x_1&=x_0-\lambda\cdot \nabla f(\vec x_0),\\ +\vec x_2&=x_1-\lambda\cdot \nabla f(\vec x_1),\\ \cdots \vec x_{n+1}&=x_n-\lambda\cdot f(\vec x_n), \end{align} @@ -738,6 +738,31 @@ peut se voir dans la @fig:gradient. {#fig:gradient width=70%} +--- + +#### Exemple (quelques itérations) {-} + +Prenons la fonction objectif $f(x,y)$ suivante +$$ +f(x,y)=x^2+y^2, +$$ +et son gradient +$$ +\nabla f(x,y)=2x+2y. +$$ +Si on prend comme point de départ $\vec x_0=(1,0.5)$ et $\lambda=0.25$, on a +\begin{align} +\vec x_1=\vec x_0-\lambda\cdot \nabla f(\vec x_0)=(1,0.5)-0.25\cdot (2\cdot 1, 2\cdot 0.5)=(0.5, 0.25),\\ +\vec x_2=\vec x_1-\lambda\cdot \nabla f(\vec x_1)=(0.5,0.25)-0.25\cdot (2\cdot 0.5, 2\cdot 0.25)=(0.25, 0.125),\\ +\cdots +\end{align} +En changeant $\lambda=0.5$, on voit qu'on arrive sur le zéro de la fonction en une itération +\begin{align} +\vec x_1=\vec x_0-\lambda\cdot \nabla f(\vec x_0)=(1,0.5)-0.5\cdot (2\cdot 1, 2\cdot 0.5)=(0, 0). +\end{align} + +--- + Comme pour les fonction à une seule variable, il est nécessaire de spécifier une condition d'arrêt pour la descente de gradient. En général, on choisit une tolérance, $\varepsilon>0$, et la condition d'arrêt s'écrit $$ @@ -749,5 +774,6 @@ Dépendant de la valeur de $\lambda$ la *convergence* de la méthode peut varier il faut une énorme quantité d'itérations pour atteindre le minimum. A l'inverse, en choisissant un $\lambda$ trop grand, nous ne somme pas sûrs que nous convergerons un jour. En effet, on pourrait s'éloigner de plus en plus du minimum plutôt que de sen approcher. En général, on choisit $\lambda\in[0,1)$ mais il n'y a pas de méthode générale pour en choisir une valeur "optimale". -Cela signifie que pour une fonction quelconque, $\lambda$ est choisi de façon empirique. --> +Cela signifie que pour une fonction quelconque, $\lambda$ est choisi de façon empirique. +