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

Intelligence artificielle Discussion :

Comment implémenter l'apprentissage en PROLOG ?


Sujet :

Intelligence artificielle

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2007
    Messages : 36
    Points : 31
    Points
    31
    Par défaut Comment implémenter l'apprentissage en PROLOG ?
    Bonjour,

    Dans notre application,l'utilisateur a la possibilité d'enrichir la base de connaissance(Arbre Généalogique,fichier ci-joint) pas des informations de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    X est le pere de Y
    on veut implémenter quelque chose qui nous permet d'enrichir notre base de connaissances pas des informations déduites par d'autres informations et l'information ajoutée, autrement dit, une sorte d'apprentissage.

    Merci d'avance !
    Fichiers attachés Fichiers attachés
    • Type de fichier : pl BC1.pl (4,5 Ko, 116 affichages)

  2. #2
    Membre à l'essai
    Étudiant
    Inscrit en
    Février 2009
    Messages
    20
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2009
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    effectivement, vous pouvez alimenter votre application ( qui est normalement un moteur d'inférence) par des connaissances obtenues par apprentissage, mais cela fait appel à des techniques de l'intelligence artificielle, telle que les arbres de décision ou autres.

    vous devez soit implémenter ces techniques, et alimenter votre moteur d'inférence avec les connaissances qu'elles génèrent ( les arbres de décision génèrent des connaissances sous forme de règles de production), ou de profiter des logiciels open source qui existent déjà ( WEKA par exemple)

    selon mes connaissances, PROLOG ne fait pas l'apprentissage! à confirmer !

    j'espère que j'ai bien compris votre question

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 108
    Points
    108
    Par défaut
    Citation Envoyé par padmasana Voir le message
    Bonjour,

    effectivement, vous pouvez alimenter votre application ( qui est normalement un moteur d'inférence) par des connaissances obtenues par apprentissage, mais cela fait appel à des techniques de l'intelligence artificielle, telle que les arbres de décision ou autres.

    vous devez soit implémenter ces techniques, et alimenter votre moteur d'inférence avec les connaissances qu'elles génèrent ( les arbres de décision génèrent des connaissances sous forme de règles de production), ou de profiter des logiciels open source qui existent déjà ( WEKA par exemple)

    selon mes connaissances, PROLOG ne fait pas l'apprentissage! à confirmer !

    j'espère que j'ai bien compris votre question
    Bonjour,

    Je m'inscris respectueusement en faux contre l'assertion précédente.
    PROLOG mémorise tout ce qu'on lui exprime: ça lui est d'ailleurs indispensable pour fonctionner.
    Il est capable de retrouver tout fait ou déduction.

    Votre exemple est écrit en PROLOG.

    Pour retrouver l'information entre deux sessions, je vous propose de... la mémoriser (dans un fichier de texte, ou dans une base de données).

    ---

    Sans être un expert en PROLOG, je me permets de compléter cette réponse.
    Vous trouverez plus de détails sur http://fr.wikipedia.org/wiki/Prolog.

    PROLOG (PROgrammation LOGique) utilise une forme de représentation des connaissances: les clauses de Horn, qui exprime les relations entre données.

    Cette représentation est très simple: <Fait> SI <condition>;
    Le SI est souvent représenté par la flèche <-.
    Quand il y a une condition, il s'agit d'une règle.

    Quand la condition est vide, il s'agit de l'énonciation d'un fait.
    Par exemple je peux écrire que SOCRATE est un homme
    "HOMME (SOCRATE) <- ;"

    Dans les règles, faits et conditions admettent des variables.
    Une variable X s'écrira _X.
    Ainsi je peux écrire:
    "MORTEL (_X) SI HOMME (_X);"
    qui dit que tous les hommes sont mortels.
    J'ai inséré ici une règle de production en logique des prédicats.

    Alors à la question
    "MORTEL (_INDIVIDU) ;"

    L'algorithme de résolution de PROLOG répondra :
    "_INDIVIDU = SOCRATE; "

    Attention: les conditions sont des conjonctions. C'est à dire que le langage ne connaît que la clause ET.
    Par exemple:
    FILLE (Suzanne, Jeannine) <- ;
    FILLE (Jeannine, Sylvie) <- ;
    FILLE (Jeannine, Michèle) <- ;
    FILLE (Sylvie, Tiphaine) <- ;
    FILLE (Sylvie, Lorraine) <- ;
    FILLE (Sylvie, Marianne) <- ;
    FILLE (Michèle, Juliette) <- ;
    et
    GRAND_MERE (_X, _Z) <- FILLE (_Z, _Y), FILLE (_Y, _X) ;
    (on traduira "_Z est la grand mère de _X s'il existe une fille _Y de _Z telle que _X est la fille de _Y")

    A la question:
    GRAND_MERE (_petite_fille, _grand_mere) ;

    Prolog répondra:
    _petite_fille=Sylvie, _grand_mere=Suzanne;
    _petite_fille=Michèle, _grand_mere=Suzanne;
    _petite_fille=Tiphaine, _grand_mere=Jeannine;
    _petite_fille=Lorraine, _grand_mere=Jeannine;
    _petite_fille=Marianne, _grand_mere=Jeannine;
    _petite_fille=Juliette, _grand_mere=Jeannine;

    ( Je vous laisse écrire "ARRIERE_GRAND_MERE(...)..." )

    Pour la clause OU, il faut répéter l'expression des relations.
    Par exemple:
    ENFANT (_Z, _XX) <- FILLE (_Z, _XX);
    ENFANT (_Z, _XY) <- FILS (_Z, _XY);
    dira que la relation ENFANT existe s'il existe une relation FILLE ou s'il existe une relation FILS. PROLOG n'exploitera pas spécialement le nom des variables, qui n'aura de sens (s'il en a) que pour nous.

    De même, PROLOG ne "comprend" rien, et en particulier rien au nom des relations. La relation "FILS" aurait pu s'appeler "TRUC", PROLOG aurait fonctionné tout pareil.

    Je passe sur les détails: d'excellents livres ont été écrits sur PROLOG.

    Je conclus sur son intérêt.

    1) La syntaxe de PROLOG est très simple et accessible à tous.

    2) Son algorithme explore (en principe) toutes les possibilités de résolution logique. Il a notamment permis de démontrer divers théorèmes, et c'est pour cela qu'il a été initialement créé.
    L'utilisateur n'a qu'à exprimer ses connaissances. Si, à partir des connaissances qui lui sont accessibles, il y a une méthode de démonstration de la question que se pose l'utilisateur, PROLOG la trouvera.

    3) Il est possible de décrire une base de données relationnelles comme une suite de clauses PROLOG. C'est à dire que toute base de données relationnelle est exploitable en tant que source de données d'un système d'inférences écrit en PROLOG. (Voir en particulier le bouquin de Gardarin: "Bases de données relationnelles, déductives, objets"). De même, la relation qui existe entre une propriété d'un objet, et l'objet lui même, est, à une traduction près, naturellement exploitable par PROLOG.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 108
    Points
    108
    Par défaut Il manque une entrée "logique" dans la FAQ
    Je me rends d'ailleurs compte qu'il manque une entrée "logique et systèmes déductifs" dans la section IA de la FAQ.

    Dans mon esprit, cette section traiterait :
    - de la logique du premier ordre à la logique des prédicats,
    - des systèmes formels, systèmes de réécriture, et des morphismes entre systèmes (notamment équivalences entre logique, calcul symbolique, et calcul numérique),
    - de la théorie de la preuve (ou de la démonstration: notion de démontrabilité, calculs par récurrence sur la longueur des démonstrations, indémontrables, théorème de Gödel),
    - de l'algorithmique dans la théorie de la démonstration: tautologies, indémontrables, problèmes np-difficiles,
    - de l'optimisation du calcul sur les expressions logiques : automates, tables de transition et parcours d'arbres, graphes de déduction et arbres de décision, formes normales (conjonctive, disjonctive), des diagrammes de Carnaugh jusqu'aux "compilateurs de silicium", réseaux de Pétri et leur optimisation (en logique des propositions, et à prédicats),
    - de la représentation des connaissances, des bases de connaissances et blackboards, de la cohérence des bases de connaissances, et des systèmes de maintien de la vérité (SMV)
    - de l'élaboration de plans de résolution: chaînage avant (et coupures, alphabéta, min/max), arrière, mixte, planner;
    - des formalismes objet, acteur, agent, et des systèmes multi agents (SMA);
    - des implémentations de référence et systèmes existants (libres et commerciaux);

Discussions similaires

  1. Comment implémenter lemonldap?
    Par Aldo dans le forum Apache
    Réponses: 7
    Dernier message: 25/01/2007, 21h32
  2. [VB.Net]Comment implémenter un Simulateur de combats?
    Par stargatejojo dans le forum Windows Forms
    Réponses: 19
    Dernier message: 20/04/2006, 16h04
  3. Réponses: 4
    Dernier message: 07/04/2006, 18h08
  4. Réponses: 2
    Dernier message: 02/12/2005, 17h22
  5. Comment implémenter un Datawarehouse ?
    Par raslain dans le forum Alimentation
    Réponses: 2
    Dernier message: 20/10/2005, 11h09

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