Systèmes Experts implémentation en Prolog

Slides:



Advertisements
Présentations similaires
LES NOMBRES PREMIERS ET COMPOSÉS
Advertisements

[number 1-100].
Le moteur
1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
1. 2 Évaluer des cours en ligne cest évaluer lensemble du processus denseignement et dapprentissage. La qualité des savoirs.
Le vaccin antigrippal disponible en France :
Qui a le nombre qui vient après 8 ?
Proposition de recherches sur ABI (Pro Quest) Lise Herzhaft (Urfist de Lyon) et MH Prévoteau (Bibliothèque Université Paris 2) Mise en forme par Nolwenn.
Classe : …………… Nom : …………………………………… Date : ………………..
Est Ouest Sud 11 1 Nord 1 Laval Du Breuil, Adstock, Québec I-17-17ACBLScore S0417 Allez à 1 Est Allez à 4 Sud Allez à 3 Est Allez à 2 Ouest RndNE
Est Ouest Sud 11 1 Nord 1 RondeNE SO
Sud Ouest Est Nord Individuel 36 joueurs
Les Prepositions.
Définition des termes spécifiques
Les 3 dimensio ns de la morale et de léthique (activité)
Systèmes à base de connaissances
Fonctionnement du moteur Prolog
La diapo suivante pour faire des algorithmes (colorier les ampoules …à varier pour éviter le « copiage ») et dénombrer (Entoure dans la bande numérique.
Construction des 3 hauteurs
Les systèmes experts L3 MI.
Journée détude régionale du 23 mai Lévaluation interne des établissements et services sociaux et médico-sociaux : Où en sommes-nous ? 1 Résultats.
Analyse de la variance à un facteur
07/24/09 1.
C’est décidé, demain, j’ose changer !
5 Verbes au passé composé 1.Jai eu avoir 2. Jai du devoir.
1 Théorie des Graphes Cycle Eulérien. 2 Rappels de définitions On dit qu'une chaîne est un chemin passant par toutes les arêtes du graphe. On dit qu'un.
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Formation au module Structure de ZENTO
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
le profil UML en temps réel MARTE
Les verbes auxiliaires Avoir ou être ?? Choisissez! Cest un verbe Dr Mrs Vandertrampp? Cest un verbe réfléchi?
Vuibert Systèmes dinformation et management des organisations 6 e édition R. Reix – B. Fallery – M. Kalika – F. Rowe Chapitre 1 : La notion de système.
Rappel au Code de sécurité des travaux 1 Code de sécurité des travaux Rappel du personnel initié Chapitre Lignes de Transport (Aériennes)
1 SERVICE PUBLIC DE LEMPLOI REGION ILE DE France Tableau de bord Juillet- Août 2007.
GRAM 1 CE2 Je sais transformer une phrase affirmative en phrase négative.
1.2 COMPOSANTES DES VECTEURS
SUJET D’ENTRAINEMENT n°2
La voyage de Jean Pierre
1 Conduite du changement LA CONDUITE DU CHANGEMENT.
Académie de Créteil - B.C Quest-ce quune Inscription 1)1 action + 1 stagiaire + 1 client 2)Parcours individuel (avec son Prix de Vente) 3)Un financement.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
@SSR – Installation des applications eduscol.education.fr/securite - février 2007 © Ministère de l'Éducation nationale, de l'Enseignement supérieur et.
La Saint-Valentin Par Matt Maxwell.
2 TP avec l ’aide d ’un modeleur 3D :
Journées de Rencontre Jeune Chercheurs
Représentation des systèmes dynamiques dans l’espace d’état
Notre calendrier français MARS 2014
3ème partie: les filtres
C'est pour bientôt.....
Veuillez trouver ci-joint
Programmation logique Le Langage PROLOG
SUJET D’ENTRAINEMENT n°4
Voici 36 bonnes raisons de preferer la biere à une femme blonde...
LUNDI – MARDI – MERCREDI – JEUDI – VENDREDI – SAMEDI – DIMANCHE
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
ECOLE DES HAUTES ETUDES COMMERCIALES MARKETING FONDAMENTAL
* Source : Étude sur la consommation de la Commission européenne, indicateur de GfK Anticipations.
Architecture d’un système expert
Création et présentation d’un tableau avec Word 2007
CALENDRIER-PLAYBOY 2020.
Présenté par : Attia Hamza Merzouk Abdelkrim 2003/2004
1. Présentation générale du système
Quel est l’intérêt d’utiliser le diagramme de Gantt dans la démarche de projet A partir d’un exemple concret, nous allons pouvoir exploiter plusieurs parties.
Les Chiffres Prêts?
Médiathèque de Chauffailles du 3 au 28 mars 2009.
Transcription de la présentation:

Systèmes Experts implémentation en Prolog

Définition Application capable d'effectuer dans un domaine des raisonnements logiques comparables à ceux que feraient des experts humains de ce domaine Il s'appuie sur des bases de données de faits et de connaissances, ainsi que sur un moteur d’inférences, permettant de réaliser des déductions logiques C'est avant tout un système d'aide à la décision

Composants de base Base de connaissance Moteur d’inférences Les connaissances sont propres au domaine d’expertise Règles de production si prémisse alors conclusion Moteur d’inférences Le mécanisme d’exploitation est indépendant du domaine

Moteur d’inférences Cycle de base Caractéristiques d’un moteur d’inférences Mode d’invocation des règles Régime Interactivité Capacités d’explications

Le cycle de base Phase de restriction Eliminer les connaissances trivialement inutilisables Phase de filtrage Déterminer l’ensemble de résolution de conflits (i.e les connaissances potentiellement utilisables) Phase de résolution de conflit Sélectionner la ou les connaissances qui seront effectivement exploitées lors de la phase d’exécution Par exemple, toutes les connaissances, la première, choix aléatoire, coût, intérêt, … Exécution (inférer)

Caractéristiques d’un moteur d’inférences Mode d’invocation des règles Régime Interactivité Capacités d’explications

Caractéristiques : Mode d’invocation des règles Le chaînage consistent à enchaîner des déductions logiques pour aller en direction d'une cause ou de ses effets Chaînage avant sélection d’une règle selon ses prémisses Chaînage arrière sélection d’une règle selon ses conclusions Chaînage mixte

Mode d’invocation des règles Chaînage avant Phase de restriction les faits établis Phase de filtrage les règles dont les prémisses sont vérifiées C’est une recherche indépendante de l’objectif

Mode d’invocation des règles Chaînage arrière Phase de restriction les faits à établir Phase de filtrage les règles dont la conclusion contient des faits à établir C’est une recherche dirigée par le but

Caractéristiques : Régime Irrévocable Les choix réalisés en phase de résolution de conflit ne sont jamais remis en cause Par tentatives On peut considérer plusieurs éléments dans l’ensemble de conflit Permet de remettre en cause l'application d'une règle si ce choix conduit à un échec

Caractéristiques : Moteur d’inférences interactif Interroger l’utilisateur / l’expert Obtenir des connaissances immédiatement exploitables par le moteur

Caractéristiques : Capacités d’explications Objectif renforcer la crédibilité du système Expliquer : pourquoi le moteur pose telle question comment le moteur a pu obtenir telle réponse

Prolog : un moteur d’inférences ! Mode d’invocation des règles : ? Régime : ? Interactif : ? Capacités d’explications : ?

Exemple Une base de connaissance symbolique Base des faits initiaux a, c, d, e, g, h, k On demande d’établir le fait q les règles 2, 4 et 8 forment l’ensemble de conflit On choisira par exemple la première (règle 2) cela aura pour effet de substituer à q dans la liste des faits à établir les faits i, w et j Base de règles 1. si k et w et m alors i 2. si i et w et j alors q 3. si f et h alors b 4. si a et b alors q 5. si c et h alors r 6. si r et j et m alors s 7. si g alors f 8. si w et n et o et p alors q

Implémentation de la base de connaissance en Prolog Base de règles i :- k,w,m. q :- i,w,j. q :- a,b. q :- w,n,o,p. b :- f,h. r :- c,h. s :- r,j,m. f :- g. Base des faits a. c. d. e. g. h. k.

Utilisation directe de Prolog comme moteur d’inférences Base de règles i :- k,w,m. q :- i,w,j. q :- a,b. q :- w,n,o,p. b :- f,h. r :- c,h. s :- r,j,m. f :- g. ?- q. yes ?- i no ?- q,a,i. ?- q,a,h. Base des faits a. c. d. e. g. h. k.

Comment améliorer l’interface de Prolog ? Définir la procédure effacer/1 de telle façon que le comportement globale de Prolog ne soit pas modifié effacer([]). effacer([But|AutresButs]) :- ? .

Comment améliorer l’interface de Prolog ? Définir la procédure effacer/1 de telle façon que le comportement global de Prolog ne soit pas modifié effacer([]). effacer([But|AutresButs]) :- But, effacer(AutresButs).

Comment améliorer l’interface de Prolog ? Définir une procédure frontale expertiser/1 expertiser(L) :- si(effacer(L), ecrire_succes(L), ecrire_echec(L) ).

Utilisation du « nouveau » moteur d’inférences ?- expertiser([q]). le fait q est etabli ?- expertiser([i]). le fait i n'est pas etabli ?- expertiser([q,a,i]). la conjonction de faits q et a et i n'est pas etablie ?- expertiser([q,a,h]). la conjonction de faits q et a et h est etablie

Quelques prédicats « utilitaires » ecrire_succes(L) :- print_conjonction(L,succes). ecrire_echec(L) :- print_conjonction(L,echec). print_conjonction([T],Etat) :- ! , write('le fait '), write(T), si(Etat=succes, write(' est etabli'), write(' n''est pas etabli')), nl. print_conjonction(L,Etat) :- write('la conjonction de faits '), print_conjonction(L), write(' est etablie'),write(' n''est pas etablie')), nl.

Quelques prédicats « utilitaires » print_conjonction([]). print_conjonction([T]) :- !,write(T). print_conjonction([T|Q]):- write(T), write(' et '), print_conjonction(Q). si(C,A,_):- C,!,A. si(_,_,S) :- S.

Redéfinir un moteur d’inférences « au-dessus » de Prolog Implémenter des capacités d’explications Proposer une interaction avec l’utilisateur Augmenter le pouvoir d’expression des règles

Comment redéfinir prolog « au-dessus » de Prolog ? Utiliser le prédicat rule/2 en mode (in,out) Ce prédicat met en relation la tête et le corps d’une règle ?- rule(q, Corps). Corps = [i , w , j] ; Corps = [a , b] ; Corps = [w , n , o , p] ; no

Comment redéfinir un Prolog « au dessus » de Prolog ? ReDéfinir la procédure effacer/1 de telle façon que le comportement global de Prolog ne soit pas modifié effacer([]). effacer([But|AutresButs]):- But, effacer(AutresButs). effacer([]). effacer([But|AutresButs]) :- rule(But,SousButs), effacer(SousButs), effacer(AutresButs).

clause(T,CorpsTerme) ?- clause(q,T). T = i, w, j ; T = a, b ; T = w, n, o, p ;

rule(T,CorpsListe) ?- rule(q, L). L = [i, w, j] ; L = [a, b] ; L = [w, n, o, p] ;

termeToListe(T,L) ?- termeToListe((a,b,c),L). L = [a, b, c] ;

Quelques prédicats « utilitaires » rule(T,CorpsListe) :- clause(T,CorpsTerme), termeToListe(CorpsTerme,CorpsListe). termeToListe(true,[]) :- !. termeToListe(Terme,[Terme]) :- atom(Terme),!. termeToListe(Terme,[T|Q]):- arg(1,Terme,T), arg(2,Terme,TT), termeToListe(TT,Q).

Des capacités d’explications le moteur devra justifier ses réponses en fournissant une « explication » de son raisonnement Plus précisément, suite à un succès, le moteur devra fournir la trace des inférences C’est à dire répondre au « comment » ?- expertiser([q]). Le fait q est etabli q ? a est un fait etabli b ? f ? g est un fait etabli h est un fait etabli

La Trace des inférences est une liste … ?- expertiser([q]). Le fait q est etabli q ? a est un fait etabli b ? f ? g est un fait etabli h est un fait etabli [[q, [a], [b, [f, [g]], [h]]]]

La Trace des inférences est une liste Si on efface un fait f, la trace est [f] Si on efface une règle tete :- b1,b2,…,bn la trace est la liste [tete,trace_b1,trace_b2,…, trace_bn] où trace_bi est la trace des inférences relatives à l’effacement du but bi Si on efface une conjonction de buts, la trace est la liste des traces relatives à l’effacement de chaque but  

La Trace des inférences est une liste Par exemple : ·la trace résultant de l’effacement de a est [[a]] ·la trace résultant de l’effacement de q est [[q, [a], [b, [f, [g]], [h]]]] ·la trace résultant de l’effacement de q,a est [[q, [a], [b, [f, [g]], [h]]], [a]]

afficher_trace/1 afficher_trace(T) :- afficher_trace(T,0). %--------------------- afficher_trace([],_) :- !. afficher_trace([C],Ident) :- atom(C),!, tab(Ident), write(C),write(' est un fait etabli'),nl. afficher_trace([C,X|Y],Ident) :- atom(C),!, tab(Ident), write(C), write(' ?'), nl, NewIdent is Ident+4, afficher_trace(X, NewIdent), afficher_trace(Y, NewIdent). afficher_trace([X|Y], Ident) :- afficher_trace(X, Ident), afficher_trace(Y, Ident).