IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

descente de gadient


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Par défaut descente de gadient
    Bonjour

    J'ai une fonction cout de 4 variables indépendantes à minimiser.

    Je dois pour cela utiliser une descente de gradient depuis une solution approchée que j'ai deja pu extraire.

    Quelqu'un pourrez t il me rappeller les grandes lignes (les petites ne me rebuteront pas non plus ) de la descente de grandient, je crains de m'être un peu mélanger les pinceaux...

    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Par défaut
    Si tu as une fonction f(x,y,z,t), l'idée est de partir d'un point arbitraire (x0,y0,z0,t0) dans R4 puis de passer à un nouveau point (x1,y1,z1,t1) puis à (x2,y2,z2,t2), etc. On construit ainsi une suite de points susceptible de converger vers l'optimum de la fonction.

    Dans la méthode du gradient, on passe d'un point à l'autre en calculant le gradient g(x,y,z,t), égal au vecteur
    (df(x,y,z,t)/dx,df(x,y,z,t)/dy,df(x,y,z,t)/dz,df(x,y,z,t)/dt).
    Et on construit
    (x_i+1,y_i+1,z_i+1,t_i+1) = (xi,yi,zi,ti) + lambda_i g(xi,yi,zi,ti)
    lambda_i est un paramètre qui peut être calculé de différentes manières (il y a de meilleures manières de calculer ces valeurs assurant une meilleure convergence de la méthode).

    Dans ton cas, il semble difficile d'évaluer f(x,y,z,t). A priori, cela risque donc d'être encore plus difficile d'évaluer son gradient et cette méthode risque d'être difficile à mettre en oeuvre. N'est-ce pas?

  3. #3
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    (Message Réédité car j'avais pas vu que quelqu'un avait déjà répondu)

    Salut !
    Dans les très grandes lignes (après ça prendrait des pages), la descente de gradient est une méthode de minimisation locale et donc qui dépend du point initial.
    Elle suit itérativement la direction de la plus forte pente négative (indiquée par le gradient) (à chaque itération tu te déplaces d'un certain pas dans cette direction).

    Bon c'est bref mais après c'est vraiment calculatoire, je te conseille de faire une recherche sous google.
    Tiens là rapido comme ça:
    http://lumimath.univ-mrs.fr/~jlm/cou...um/node16.html

    Sinon à priori c'est pas un problème d'être dans R^4, ça marche pour R^n, quelque soit n, juste ça fait plus de calculs...
    A+

  4. #4
    Membre confirmé Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Par défaut
    Bonjour

    Merci pour ce petit rappel (souvenir souvenir... )

    Malheureusement, je ne pense pas que ma solution initiale soit suffisament bonne pour m'eviter tous les minima locaux

    Le facteur temps etant important, je pense néanmoins rester sur une solution basée sur le gradient, en connaissez vous des améliorations sympa? ou seriez vous m'orienter sur d'autre algo d'opti pas trop gourmand?

  5. #5
    Membre chevronné
    Profil pro
    Enseignant
    Inscrit en
    Avril 2004
    Messages
    440
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2004
    Messages : 440
    Par défaut
    C'est tout le problème d'obtenir des minima globaux ! C'est que c'est gourmand !
    Je connais une méthode (mais je suppose qu'il y en a plein d'autres) qui fait un bon compromis : utiliser dans un premier temps un algo génétique, et quand on voit qu'on se rapproche de la solution (c'est à dire qu'on "stagne" entre chaque itération), on commute avec une descente de gradient.
    Le fait d'utiliser un algo génétique avant permet de s'assurer d'être dans un min global (si tant est que l'on paramètre correctement l'algo génétique), et la descente permet d'accélérer le mouvement (car c'est à la fin qu'on perd beaucoup de temps lorsqu'on avance d'une itération à l'autre lentement).

    A+

  6. #6
    Membre chevronné
    Profil pro
    Directeur Scientifique
    Inscrit en
    Avril 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur Scientifique

    Informations forums :
    Inscription : Avril 2005
    Messages : 419
    Par défaut
    Il y a aussi des variantes de la recherche taboue ou du recuit simulé qui permettent d'intégrer une descente par gradient et quelques idées pour éviter les minima locaux. Par rapport aux algorithmes génétiques, ces méthodes n'utilisent qu'une seule solution: elles seront donc mieux adapter s'il est difficile d'avoir une (bonne) solution de départ.

    Sinon (même si ce que je dis ressemble à une tautologie), il est très important d'avoir une bonne heuristique pour construire une bonne solution de départ: cela peut faire gagner beaucoup de temps à la méthode (que ce soit une simple descente par gradient, ou un recuit simulé ou une méthode de recherche taboue).

    L'idéal est de disposer de différentes heuristiques capables de construire des solutions avec des caractéristiques différentes (et qui ont donc moins de chance d'aboutir au même minimum local après une descente par gradient). Il est aussi souvent utile d'introduire un peu d'aléatoire dans ces heuristiques de construction de solutions (on les exécute plusieurs fois et on garde la meilleure solution trouvée).

Discussions similaires

  1. Problème lors de la descente de la base
    Par cedrich dans le forum Administration
    Réponses: 3
    Dernier message: 29/11/2007, 13h11
  2. Optimisation (descente de gradient)/Diagramme de Voronoi
    Par DarkenRahl dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 26/03/2007, 17h18
  3. Perceptron Multi-couche et descente de gradient
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 16/03/2007, 11h41
  4. [ORACLE8i][EXPORT] Descente d'une BDD en fichier
    Par Titouf dans le forum Oracle
    Réponses: 1
    Dernier message: 15/12/2006, 17h25
  5. JScrollPane, descente automatique du curseur
    Par DJuL- dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 25/06/2006, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo