{ "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" } }, "nbformat": 4, "nbformat_minor": 4, "cells": [ { "cell_type": "markdown", "metadata": { "lang": "fr" }, "source": [ "Cette leçon a 3 effets positifs :\n", "\n", "* manipuler des bases de sous-espaces\n", "* mélanger les dérivées partielles et les vecteurs\n", "* trouver un algorithme plus performant que la méthode du gradiant pour résoudre \n", " $A \\, {\\bf x} = {\\bf b}$" ] }, { "cell_type": "markdown", "metadata": { "lang": "fr" }, "source": [ "# Méthode du gradient conjugué\n", "\n", "On a vu que dans la méthode du gradiant on peut calculer le µ optimal pour\n", "aller directement au minimum de la fonctionnelle $J$ dans le long de la ligne\n", "${\\bf x}^k \\; + µ \\, \\nabla J({\\bf x}^k)$ avec µ qui varie de $- \\infty$\n", "à $+ \\infty$ (cf ma33).\n", "\n", "On a aussi vu que si on a le µ optimal, alors la plus forte pente suivante, \n", "$\\nabla J ({\\bf x}^{k+1})$, sera orthogonale à la pente qui définie la droite sur laquelle on cherche µ. On a donc\n", "\n", "$$\\nabla J ({\\bf x}^{k+1})^T \\, . \\, \\nabla J ({\\bf x}^k) = 0$$\n", "\n", "C'est bien car cela veut dire que le minimum suivant, ${\\bf x}^{k+2}$, sera le minimum de l'espace généré par $\\nabla J ({\\bf x}^{k+1})$ et $\\nabla J ({\\bf x}^k)$\n", "(ce qui est mieux que d'être seulement le minimum le long d'une ligne). \n", "\n", "Malheureusement rien me dit que ${\\bf x}^{k+3}$ ne sera pas calulé le long de notre\n", "première direction, $\\nabla J({\\bf x}^k)$. On a vu dans le cas\n", "du gradiant sans recherche du µ optimal qu'on peut osciller entre 2 valeurs. Cela\n", "n'est pas possible avec le µ optimal mais on peut tourner en rond sur quelques valeurs.\n", "\n", "Même si on ne tourne pas en rond et qu'on converge est il probable qu'on cherche\n", "à nouveau un minimum dans une partie de l'espace $ℝ^n$ qu'on a déjà explorée.\n", "\n", "Une recherche optimal du minimum d'une fonction convexe dans un espace $ℝ^n$ ne\n", "devrait pas prendre plus de $n$ itération si on est toujours capable de caluler\n", "le µ optimal dans la direction choisie. Pour s'en convaincre il suffit de choisir\n", "comme directions les vecteurs de la base de notre espace $ℝ^n$. Une fois qu'on\n", "a trouvé le minimum dans toutes les directions de la base, on a le minimum global.\n", "Il n'y a plus aucune direction possible de recherche qui ne serait pas la combinaison linéaire des vecteurs\n", "déjà utilisés." ] }, { "cell_type": "markdown", "metadata": { "lang": "fr" }, "source": [ "#### Cas 2D\n", "
| \n", " \n", "Si on cherche le point ${\\bf x} = (x_1, x_2)$ qui minimise $J({\\bf x})$ (convexe)\n", "et qu'on sait calculer le µ optimal de notre méthode de gradient,\n", "alors on trouve le minimum globale en 2 itérations au maximum.\n", "\n", "Mais on \n", "prend un µ trop grand qui nous fasse passer au dessus du minimum\n", "global, alors à la prochaine itération la plus grande pente sera exactement\n", "l'opposée de celle qu'on vient d'utiliser et on oscillera.\n", "\n", "Sur le dessin on voit bien qu'on trouve le minimum global en 2 itérations\n", "mais on se dit que c'est un coup de chance et d'ailleurs est-ce vraiment\n", "en 2 itérations puisqu'il est écrit ${\\bf x}^k$ ? C'est toute la limite\n", "d'un dessin qui veut expliquer ce qui se passe dans $ℝ^n$ à des humains\n", "habitués à $ℝ^3$ (cf cette vidéo sur la 4e dimension en dehors\n", "du cours).\n", "\n", " | \n",
" \n",
" |
|---|