Académique Documents
Professionnel Documents
Culture Documents
Formation continue
MEMOIRE DE MATHEMATIQUES
Libell du projet :
Comparaison de deux mthodes de recherche de minimum local : Mthode du gradient - Mthode du gradient conjugu
Nombre de pages : 13
Notes du destinataire :
Mickal SAUVAGE
Mmoire de mathmatiques
Page 1 sur 13
Sommaire
INTRODUCTION ................................................................................................................................................. 3 1. LA METHODE DU GRADIENT .................................................................................................................... 4 2. LA METHODE DU GRADIENT CONJUGUE ............................................................................................. 5 3. COMPARAISON DES DEUX METHODES AVEC MATLAB................................................................... 6 3.1. DESCRIPTION DE LA FONCTION UTILISEE ....................................................................................................... 6 3.2. LE PROGRAMME POUR LA METHODE DU GRADIENT ....................................................................................... 8 3.3. LE PROGRAMME POUR LA METHODE DU GRADIENT CONJUGUE.................................................................... 10 CONCLUSIONS ................................................................................................................................................. 13
Mickal SAUVAGE
Mmoire de mathmatiques
Page 2 sur 13
Introduction
La recherche d'un minimum local sur une fonction est trs utiliss pour trouver des solutions permettant de minimiser une erreur. La phase d'apprentissage supervis d'un rseau de neurones est un cas concret d'application ncessitant de faire des recherches sur le minimum d'une fonction. Dans le cas du rseau de neurone, il faut effectuer des calculs pour optimiser la valeur de chacun des points des entres de chaque neurone et la masse de calcul ncessaire peut devenir trs rapidement importante. Il est donc ncessaire d'avoir des outils de calcul qui soient les plus rapides possible. Je vais comparer deux mthodes de recherche de minimum local d'une fonction : la premire mthode va utiliser l'algorithme du gradient et la seconde, l'algorithme du gradient conjugu. Ces deux mthodes sont des mthodes itratives et nous allons comparer la vitesse avec laquelle ces mthodes convergent et le nombre d'itrations ncessaires pour trouver la solution avec une erreur dtermine.
Mickal SAUVAGE
Mmoire de mathmatiques
Page 3 sur 13
1. La mthode du gradient
Cette mthode est la plus simple mettre en uvre pour trouver un minimum local sur une fonction. Comme son nom l'indique, on utilise le gradient en un point donn de courbe pour donner la direction de la descente. La distance entre le point x k et le point xk+1 est calcul en fonction de la valeur du gradient gk et d'un pas dtermin l'avance .
xk
1
xk
.g k
Le pas a une influence trs importante sur la vitesse de convergence de la mthode du gradient. Plus est grand, plus la mthode convergera rapidement. Cependant, si est trop grand il y a un risque de divergence de la suite.
Mickal SAUVAGE
Mmoire de mathmatiques
Page 4 sur 13
Une mthode pour trouver la valeur minimale de f(xk+1) est de calculer l'ensemble des points dcrit par l'quation ci dessus pour k [0 ; 1] avec un pas dtermin. On calcul ensuite l'ensemble des f(xk+1). On conserve finale xk+1 permettant d'obtenir le minimum de f(xk+1). La direction suivante est dtermine en fonction de la direction prcdente (conjugu de l'une par rapport l'autre). La mthode la plus courante consiste combiner la direction prcdente avec le calcul du gradient au point xk+1 pour calculer la nouvelle direction :
dk gk p k .d k
1
Il existe plusieurs versions de la mthode du gradient conjugu, elles se distinguent par la manire dont la constante pk est calcule. Voici la mthode de calcul de Fletcher-Reeves :
Pk
T g k .g k T g k 1 .g k 1
Pk reprsente alors le rapport entre la norme au carr du gradient actuel et la norme au carr du gradient prcdent. Voici la mthode de calcul de Polak-Ribire :
T g k 1 .g k T g k 1 .g k 1
Pk
Mickal SAUVAGE
Mmoire de mathmatiques
Page 5 sur 13
Mickal SAUVAGE
Mmoire de mathmatiques
Page 6 sur 13
Le minimum de la fonction f(x,y) = (x-2)4 + (x-2.y)2 correspond au point de coordonne (2,1). Le gradient de cette fonction ce calcul de la manire suivante :
df ( x, y) dx
4.(x 2) 3
2.(x 2. y)
df ( x, y ) dy
4.( x 2. y )
Mickal SAUVAGE
Mmoire de mathmatiques
Page 7 sur 13
3.2. Le programme pour la mthode du gradient J'ai baptis le programme utilisant la mthode du gradient Mick1_grad.m
clear all close all [x,y] = meshgrid(-2:0.1:2); hold on z = (x-2).^4 + (x-2*y).^2; % plot3(x,y,z); % affichage de la courbe mesh(x,y,z); pas = 0.01; n = 1; % On demande les coordonnes d'un point de dpart [xx(n),yy(n)]=ginput(1); zz(n) = (xx(n)-2).^4 + (xx(n)-2*yy(n)).^2; plot3(xx(n),yy(n),zz(n),'+r'); dx(n) = 4*(xx(n)-2).^3 + 2*(xx(n)-2*yy(n)); dy(n) = -4*(xx(n)-2*yy(n)); % On affiche le point de dpart % calcul de la drive par rapport x % calcul de la drive par rapport y
while sqrt(dx(n)^2 + dy(n)^2) > 0.001 % calcul du point suivant xx(n+1) = xx(n) - pas*dx(n); yy(n+1) = yy(n) - pas*dy(n); n = n + 1; zz(n) = (xx(n)-2).^4 + (xx(n)-2*yy(n)).^2; plot3(xx(n),yy(n),zz(n),'+r'); dx(n) = 4*(xx(n)-2).^3 + 2*(xx(n)-2*yy(n)); dy(n) = -4*(xx(n)-2*yy(n)); end n xx(n) yy(n) % nombre d'itrations % position du dernier point x % position du dernier point y
% On affiche le point de dpart % calcul de la drive par rapport x % calcul de la drive par rapport y
Mickal SAUVAGE
Mmoire de mathmatiques
Page 8 sur 13
Voici les paramtres de simulation : Pas rgl 0.01 Arrt de l'algorithme quand la norme du gradient est infrieur 0.001 Point de dpart = (-1,5 ; -1,5) La simulation donne les rsultats suivants : Solution trouve au point (1.9346 ; 0.9673) Nombre d'itrations = 3686 On remarque que le nombre d'itrations est important. Celui ci aurait pu tre rduit en choisissant un pas suprieur mais avec un risque de divergence de la solution trouve.
Mickal SAUVAGE
Mmoire de mathmatiques
Page 9 sur 13
3.3. Le programme pour la mthode du gradient conjugu J'ai baptis le programme utilisant la mthode du gradient conjugu Mick2_grad.m. Voici le listing du programme Mick2_grad.m :
clear all close all % Constrtuction de la reprsentation de la fonction [x,y] = meshgrid(-2:0.1:2); z = (x-2).^4 + (x-2*y).^2; figure(1) surf(x,y,z) shading interp title('f(x,y) = (x-2)^4 + (x-2y)^2 en trois dimensions') figure(2) contour(x,y,z,50) title('Courbes isovaleur de la fonction f(x,y) = (x-2)^4 + (x-2y)^2') hold on clear x; % Choix du point de dpart de la mthode [x(1),x(2)]=ginput(1); % x(1) = x0 et x(2) = y0 plot(x(1),x(2),'+r') x=x'; % transformation en vecteur xinit=x go = [1,1]'; % initialisation du vecteur du gradient avec une matrice vide i = 1; while sqrt(go(1)^2 + go(2)^2) > 0.001 % Norme du gradient > 0.001 % Evaluation de la fonction et de son gradient par le biais de fonctions ddies f=(x(1)-2).^4 + (x(1)-2*x(2)).^2; g(1)= 4*(x(1)-2).^3 + 2*(x(1)-2*x(2)); % drive par rapport x g(2)= -4*(x(1)-2*x(2)); % drive par rapport y
Mickal SAUVAGE
Mmoire de mathmatiques
Page 10 sur 13
if i == 1 % si premier passage g=g'; p = 1; d = 0*g; else p = g'*g/(go'*go); % Critre de descente de Fletcher-Reeves % On met la valeur du gradient sous forme d'un vecteur
% Dtermination du rel s tel que x+s*d minimise la fonction f selon la direction choisie lambda = 0:0.001:1; for j=1:length(lambda) % on gnre un tableau fn correspondant aux valeurs de la courbes suivant la direction donne xn = x + lambda(j)*d; % calcul des points qui vont suivre la direction fn(j)=(xn(1)-2).^4 + (xn(1)-2*xn(2)).^2; % valeur de la fonction sur ces points end % Rcupration de la valeur minimale ainsi que de l'indice correspondant [aa ind]=min(fn); % aa = valeur minimum, ind = indice pour laquel la valeur est minimale
% On rajuste x selon la valeur de lambda trouve x = x + lambda(ind)*d; % On attribue go la valeur courante de g avant rvaluation de ce dernier go = g; plot(x(1),x(2),'+r') hold on i = i +1; end x i plot(x(1),x(2),'o') hold off % On affiche la solution % On affiche le nombre d'itrations % On incrmente le compteur d'itration
Mickal SAUVAGE
Mmoire de mathmatiques
Page 11 sur 13
Les paramtres de simulation taient identique par rapport ceux utiliss avec l'algorithme du gradient soit : Arrt de l'algorithme quand la norme du gradient est infrieur 0.001 Point de dpart = (-1,5 ; -1,5) La simulation donne les rsultats suivants : Solution trouve au point (1.9634 ; 0.9816) Nombre d'itrations = 40 On remarque immdiatement la rapidit de convergence de l'algorithme du gradient conjugu par rapport l'algorithme du gradient simple. Le nombre d'itrations est beaucoup plus faible.
Mickal SAUVAGE
Mmoire de mathmatiques
Page 12 sur 13
Conclusions
Nous venons de voir la supriorit de l'algorithme du gradient conjugu par rapport l'algorithme du gradient simple au niveau de la rapidit de convergence et du nombre d'itrations ncessaires pour trouver la solution. De plus, l'algorithme du gradient conjugu n'est pas beaucoup plus compliqu et ne ncessite donc pas beaucoup plus de ressource machine que l'algorithme du gradient simple et les temps de calcul sont du coup fortement rduits. Dans le programme j'ai intgr deux critres de descente : le critre de FletcherReeves et celui de Polak-Ribire. Ces deux critres donnent des rsultats a peu prs similaires.
Mickal SAUVAGE
Mmoire de mathmatiques
Page 13 sur 13