Compte rendu de TP Matlab Apprentissage de Matlab via l’implémentation de méthodes d’optimisation Par Henri-François François Chadeisson, Manuel Rolland et Mickaël Mounier. 05/05/08 Compte rendu de TP Matlab Compte rendu de TP Matlab Apprentissage de Matlab via l’implémentation de méthodes d’optimisation Sommaire 1. DESCENTE DE GRADIENT ..................................................................3 a. b. c. 2. Principe ..................................................................................... 3 Résultats .................................................................................... 3 Conclusions ................................................................................. 5 METHODE DE NEWTON ....................................................................6 a. b. c. 3. Principe ..................................................................................... 6 Résultats .................................................................................... 6 Conclusions ................................................................................. 7 BFGS ....................................................................................7 a. b. c. 4. Principe ..................................................................................... 7 Résultats .................................................................................... 8 Conclusions ................................................................................. 8 ESSAIM DE PARTICULES ....................................................................9 a. b. c. Page 2 Principe ..................................................................................... 9 Résultats .................................................................................... 9 Conclusions ................................................................................ 13 Compte rendu de TP Matlab 1. Descente de gradient a. Principe La descente de gradient est une méthode d’optimisation très simple où l’on utilise la dérivée (ou le gradient, en dimension > 1) d’une fonction afin de trouver un extremum local. La méthode repose sur la formule itérative : On arrête l’itération lorsque le vecteur « ne varie plus ». Soit donc quand | | . Physiquement, dans le cas de la recherche de minima d’une fonction de R2 dans R, en imaginant que le point soit une bille, cette méthode revient à trouver la zone où l’accélération est minimale en se laissant guider par la pente de la surface. Comment choisir ? Grossièrement, détermine la vitesse de descente de la pente, si on le choisi trop gros on risque de sauter par-dessus l’extrema. Mais si on le choisit trop petit la convergence est lente. Une solution intéressante est donc de le décrémenter à chaque itération. Cette méthode n’est pas satisfaisante car on fini par ne plus avancer du tout au bout de plusieurs itérations (alors que l’on est peut être encore loin de l’extrema). Une solution plus appropriée qui marche bien dans la pratique est de l’incrémenter si ou de le décrémenter sinon. b. Résultats Avec la fonction f(x) = x² (fichier « gradient.m ») : Page 3 Compte rendu de TP Matlab La méthode fonctionne bien car la pente est grande et la courbe simple. Avec la fonction de Rosenbrock (fichier « gradient2.m ») : Page 4 Compte rendu de TP Matlab Il faut choisir un compromis entre et . C'est-à-dire qu’il faut faire un compromis entre vitesse de convergence et précision (comme souvent). Un des meilleurs résultats que l’on a pu obtenir (cf. capture d’écran) est un extrema à [0.9995 ; 0.9990] au bout de 7900 itérations. Généralement l’on s’arrête avant et le résultat devient faux. Certains points ont des positions étonnantes à cause de l’augmentation d’ à certaines itérations. c. Conclusions Cet algorithme naïf fonctionne mais il converge excessivement lentement. De plus, il est très dépendant des réglages que l’on peut faire : , et la façon dont ce dernier varie. Dans les implémentations que nous avons faites ces réglages sont bien choisis. En revanche, si on les Page 5 Compte rendu de TP Matlab change il a de très fortes chances que le minima trouvé ne soit pas satisfaisant voir totalement faux. Tout cela fait que dans la pratique cet algorithme est complètement inutilisable. 2. Méthode de Newton a. Principe L’algorithme est le suivant (avec matrice Hessienne de la fonction) : 1 . b. Résultats Voir le fichier « newton.m ». Page 6 Compte rendu de TP Matlab Cette méthode donne de très bons résultats car au bout de 6 itérations on arrive au point [1;1] qui est le minima. c. Conclusions La méthode de Newton est infiniment plus efficace que la descente de gradient mais elle nécessite le calcul de la matrice Hessienne (qui est de taille n², ce qui peut devenir vite un problème). 3. BFGS a. Principe Page 7 Compte rendu de TP Matlab Le principe de base est le même que celui de la méthode de Newton à part que l’on approxime la matrice Hessienne pour ne pas avoir à la calculer. b. Résultats Voir le fichier « bfgs.m ». Le résultat avec le BFGS est étonnant, il lui faut 103 itérations pour arriver au minima. La différence avec Newton est conséquente. c. Conclusions Page 8 Compte rendu de TP Matlab Les résultats nous paraissent surprenants car la méthode converge bizarrement. Cela doit être du à l’approximation de la dérivée seconde (ici on n’a pas à calculer la matrice Hessienne, contrairement à la méthode de Newton). La méthode BFGS converge donc bien plus lentement que la méthode de Newton mais elle s’avère intéressante quand le calcul de la matrice Hessienne est compliqué ou long (dans des espaces de grande dimension par exemple) ou voir impossible (fonction dérivable qu’une seule fois, cas pathologique). 4. Essaim de particules a. Principe On prend un ensemble de n-particules que l’on réparti de manière aléatoire et qui se déplacent de manière aléatoire sur la surface. Chaque particule est constamment attirée par son meilleur record et aussi par le record de la meilleure particule. Le principe est tel que les particules balayent grossièrement la surface et trouvent un ensemble d’extrema locaux. Elles bourdonnent autour pour essayer des les affiner. Au bout de plusieurs itérations elles vont rejoindre le record de la meilleure particule afin d’affiner l’extrema supposé global. b. Résultats Voir le fichier « essaim.m ». Page 9 Compte rendu de TP Matlab Page 10 Compte rendu de TP Matlab Page 11 Compte rendu de TP Matlab Page 12 Compte rendu de TP Matlab c. Conclusions Parmi toutes les méthodes d’optimisation vues, c’est la seule qui est capable de trouver un extremum global (de manière rapide de surplus). Néanmoins, la convergence est ici metaheuristique, elle ne dépend pas d’une propriété mathématique ce qui ne la rend pas infaillible. Dans notre implémentation, la convergence manque de précision car les particules se déplacent trop vite par-dessus le minimum global. Il reste donc encore un peu de peaufinage à faire. Page 13