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

Méthodes prédictives Discussion :

[IA] Implémentation d'un apprentissage par renforcement


Sujet :

Méthodes prédictives

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 10
    Points : 5
    Points
    5
    Par défaut [IA] Implémentation d'un apprentissage par renforcement
    Bonjour à tous,
    je suis un novice en Prolog et en intelligence artificielle, et je voudrais savoir comment faire pour implémenter en Prolog un apprentissage par renforcement, avec parcours de tous les états possibles, détermination d'une stratégie, calcul de la plus grande récompense à long terme.
    Je galère sur ce problème depuis 2 semaines, et je trouve pas d'info utile par google. Donc si quelqu'un peut m'expliquer, ça serait sympa.
    Merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    As-tu une situation particulière à nous décrire, car là, j'avoue que c'est un peu vague pour moi et que je ne peux vraiment pas t'aider.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    En fait, je dois résoudre un problème classique, mais qui a été corsé.
    C'est un singe qui doit attraper des bananes qui sont au plafond d'une salle. Il y a 3 pièces, au départ le singe est dans la première, une caisse sur laquelle il peut monter est dans la deuxième. Et les bananes sont dans la troisième.
    Chacune des pièces communique avec les deux autres par une porte.
    Les actions possibles pour le singe sont se déplacer n'importe où dans les pièces, passer les portes, pousser la caisse, monter et descendre de la caisse, et prendre les bananes.
    On m'a dit d'utiliser l'apprentissage par renforcement pour résoudre ça. Le problème, c'est que je suis novice en Prolog et je ne sais pas comment l'implémenter.

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    As-tu déjà une idée de la mise en oeuvre de cet algo en langage naturel ?
    Peux-tu expliquer ce que tu cherches à traduire en Prolog ?
    Il te faut une base de faits et une base de règles qui décriront la navigation dans cette base de faits.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Oui, après plusieurs heures d'essais de programme, j'ai déjà trouvé une solution mais ce n'est pas avec de l'apprentissage par renforcement.
    J'ai décrit toutes les actions et les états possibles, je choisis aléatoirement les actions à effectuer. Je déclare 2 listes, une contenant les états dans lesquels j'ai déjà été, et une deuxième avec les actions que je peux effectuer en étant à l'état dans lequel je me trouve.
    Si à partir de l'état présent, j'effectue une action qui me ramène à un état déjà vu, je supprime l'action de ma liste d'action et j'en essai une autre. Si j'arrive à un état pas encore vu, je prends cet état et je recommence en remettant à jour ma liste d'actions possibles. Je fais ça jusqu'à ce que le singe attrape les bananes.
    Le problème maintenant c'est qu'il faut donner une récompense quand je fais une action qui fonctionne, que j'enlève une partie du butin quand je fais une action qui sert à rien ou qui me ramène à un état déjà vu. Au final, le singe fait les actions qui lui rapportent le plus.
    Je vais essayer de rajouter une variable de récompense qui s'incrémente quand une action réussi à aller à un état jamais vu et qui se décrémente dans le cas contraire. Mais je ne sais pas si c'est vraiment de l'apprentissage par renforcement ou tout simplement du bricolage.

  6. #6
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut Déplacement de discussion vers le forum Algo
    Comme c'est plutôt un problème d'algo que de Prolog pour le moment, je déplace vers le forum approprié : "Algorithme".
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  7. #7
    Membre averti

    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 499
    Points : 422
    Points
    422
    Par défaut
    c'est comme ça que je traduirais le problème en prolog (sans l'action monter, descendre de la caisse, que tu fais si le singe la caisse et les bananes sont dans la même pièce: est_en(X,X,X) )

    prédicat est_en: 1 er argument où est le singe, 2ième où est la caisse, 3ième où sont les bananes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    /* si le singe la caisse et les bananes sont dans la même pièce, on a réussi */
     
    est_en(X,X,X).  
     
    /* si le singe est en X, la caisse en Y et les bananes en Z
    alors soit on va en A (s'il y a une porte entre X et A) 
    et on voit ce qui se passe, 
    soit on met la caisse en B (s'il y a une porte entre X et B) 
    et on voit ce qui se passe */
     
    est_en(X,Y,Z):- ( porte(X,A), est_en(A,Y,Z) );
                           ( porte(Y,B), est_en(X,B,Z) ).
     
     
     
    /* définition des portes et des pièces */
     
    porte(piece_1, piece_2).
    porte(piece_2, piece_4).
    porte(piece_3, piece_4).
    porte(X,Y):- porte(Y,X).

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par shinigami Voir le message
    Oui, après plusieurs heures d'essais de programme, j'ai déjà trouvé une solution mais ce n'est pas avec de l'apprentissage par renforcement.
    (...)
    Je vais essayer de rajouter une variable de récompense qui s'incrémente quand une action réussi à aller à un état jamais vu et qui se décrémente dans le cas contraire. Mais je ne sais pas si c'est vraiment de l'apprentissage par renforcement ou tout simplement du bricolage.
    Ce que tu veut faire s'appelle du TD-Learning. Il y a beaucoup de litterature surce sujet sur internet (par exemple cela). La "variable de récompense" c'est la fonction valeur de l'algorithme du TD-Learning. Ce n'est donc pas du bricolage.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre averti

    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 499
    Points : 422
    Points
    422
    Par défaut
    le problème avec les récompenses c'est que ce n'est plus du prolog: tu parcours ton arbre de possibilité dans un ordre préétabli (l'ordre de tes actions dans ta liste) comme dans un langage impératif

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut aide sur le TD-Learning
    Citation Envoyé par pseudocode Voir le message
    Ce que tu veut faire s'appelle du TD-Learning. Il y a beaucoup de litterature surce sujet sur internet (par exemple cela). La "variable de récompense" c'est la fonction valeur de l'algorithme du TD-Learning. Ce n'est donc pas du bricolage.
    Bonjour,
    j'aimerai bien que vous m'aidiez sur la documentation sur le TD-learning. je dois faire un sujet sur cet algorithme et les papiers parlant de cela me seront d'une grande utilité.
    Merci
    Cordialement

Discussions similaires

  1. Création d'un reseau récurrent avec apprentissage par renforcement
    Par raphchar dans le forum Méthodes prédictives
    Réponses: 2
    Dernier message: 19/07/2012, 15h35
  2. Apprentissage par renforcement et reconnaissance
    Par SKone dans le forum Méthodes prédictives
    Réponses: 6
    Dernier message: 18/01/2011, 11h30
  3. [java] Apprentissage par renforcement et Tic-Tac-Toe
    Par Champialex dans le forum Contribuez
    Réponses: 0
    Dernier message: 16/06/2010, 01h30
  4. [Algo] Apprentissage par renforcement
    Par adretto dans le forum Méthodes prédictives
    Réponses: 1
    Dernier message: 24/05/2007, 19h25
  5. Apprentissage par Renforcement
    Par Le Furet dans le forum Méthodes prédictives
    Réponses: 4
    Dernier message: 11/08/2005, 17h22

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