Compte rendu de TP Mat mpte rendu de TP Matlab

publicité
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
Téléchargement