1 Syst¨mes Experts impl©mentation en Prolog. 2 D©finition Application capable d'effectuer dans un domaine des raisonnements logiques comparables   ceux

  • View
    103

  • Download
    0

Embed Size (px)

Text of 1 Syst¨mes Experts impl©mentation en Prolog. 2 D©finition Application capable...

  • Page 1
  • 1 Systmes Experts implmentation en Prolog
  • Page 2
  • 2 Dfinition 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 donnes de faits et de connaissances, ainsi que sur un moteur dinfrences, permettant de raliser des dductions logiques C'est avant tout un systme d'aide la dcision
  • Page 3
  • 3 Composants de base Base de connaissance Les connaissances sont propres au domaine dexpertise Rgles de production si prmisse alors conclusion Moteur dinfrences Le mcanisme dexploitation est indpendant du domaine
  • Page 4
  • 4 Moteur dinfrences Cycle de base Caractristiques dun moteur dinfrences Mode dinvocation des rgles Rgime Interactivit Capacits dexplications
  • Page 5
  • 5 Le cycle de base Phase de restriction Eliminer les connaissances trivialement inutilisables Phase de filtrage Dterminer lensemble de rsolution de conflits (i.e les connaissances potentiellement utilisables) Phase de rsolution de conflit Slectionner la ou les connaissances qui seront effectivement exploites lors de la phase dexcution Par exemple, toutes les connaissances, la premire, choix alatoire, cot, intrt, Excution (infrer)
  • Page 6
  • 6 Caractristiques dun moteur dinfrences Mode dinvocation des rgles Rgime Interactivit Capacits dexplications
  • Page 7
  • 7 Caractristiques : Mode dinvocation des rgles Le chanage consistent enchaner des dductions logiques pour aller en direction d'une cause ou de ses effets Chanage avant slection dune rgle selon ses prmisses Chanage arrire slection dune rgle selon ses conclusions Chanage mixte
  • Page 8
  • 8 Mode dinvocation des rgles Chanage avant Phase de restriction les faits tablis Phase de filtrage les rgles dont les prmisses sont vrifies Cest une recherche indpendante de lobjectif
  • Page 9
  • 9 Mode dinvocation des rgles Chanage arrire Phase de restriction les faits tablir Phase de filtrage les rgles dont la conclusion contient des faits tablir Cest une recherche dirige par le but
  • Page 10
  • 10 Caractristiques : Rgime Irrvocable Les choix raliss en phase de rsolution de conflit ne sont jamais remis en cause Par tentatives On peut considrer plusieurs lments dans lensemble de conflit Permet de remettre en cause l'application d'une rgle si ce choix conduit un chec
  • Page 11
  • 11 Caractristiques : Moteur dinfrences interactif Interroger lutilisateur / lexpert Obtenir des connaissances immdiatement exploitables par le moteur
  • Page 12
  • 12 Caractristiques : Capacits dexplications Objectif renforcer la crdibilit du systme Expliquer : pourquoi le moteur pose telle question comment le moteur a pu obtenir telle rponse
  • Page 13
  • 13 Prolog : un moteur dinfrences ! Mode dinvocation des rgles : ? Rgime : ? Interactif : ? Capacits dexplications : ?
  • Page 14
  • 14 Exemple Une base de connaissance symbolique Base des faits initiaux a, c, d, e, g, h, k Base de rgles 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 On demande dtablir le fait q les rgles 2, 4 et 8 forment lensemble de conflit On choisira par exemple la premire (rgle 2) cela aura pour effet de substituer q dans la liste des faits tablir les faits i, w et j
  • Page 15
  • 15 Implmentation de la base de connaissance en Prolog Base des faits a. c. d. e. g. h. k. Base de rgles 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.
  • Page 16
  • 16 Utilisation directe de Prolog comme moteur dinfrences ?- q. yes ?- i no ?- q,a,i. no ?- q,a,h. yes Base des faits a. c. d. e. g. h. k. Base de rgles 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.
  • Page 17
  • 17 Comment amliorer linterface de Prolog ? Dfinir la procdure effacer/1 de telle faon que le comportement globale de Prolog ne soit pas modifi effacer([]). effacer([But|AutresButs]) :- ?.
  • Page 18
  • 18 Comment amliorer linterface de Prolog ? Dfinir la procdure effacer/1 de telle faon que le comportement global de Prolog ne soit pas modifi effacer([]). effacer([But|AutresButs]) :- But, effacer(AutresButs).
  • Page 19
  • 19 Comment amliorer linterface de Prolog ? Dfinir une procdure frontale expertiser/1 expertiser(L) :- si(effacer(L), ecrire_succes(L), ecrire_echec(L) ).
  • Page 20
  • 20 Utilisation du nouveau moteur dinfrences ?- 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
  • Page 21
  • 21 Quelques prdicats 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), si(Etat=succes, write(' est etablie'),write(' n''est pas etablie')), nl.
  • Page 22
  • 22 Quelques prdicats 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.
  • Page 23
  • 23 Redfinir un moteur dinfrences au-dessus de Prolog Implmenter des capacits dexplications Proposer une interaction avec lutilisateur Augmenter le pouvoir dexpression des rgles
  • Page 24
  • 24 Comment redfinir prolog au-dessus de Prolog ? Utiliser le prdicat rule/2 en mode (in,out) Ce prdicat met en relation la tte et le corps dune rgle ?- rule(q, Corps). Corps = [i, w, j] ; Corps = [a, b] ; Corps = [w, n, o, p] ; no
  • Page 25
  • 25 Comment redfinir un Prolog au dessus de Prolog ? ReDfinir la procdure effacer/1 de telle faon 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).
  • Page 26
  • 26 clause(T,CorpsTerme) ?- clause(q,T). T = i, w, j ; T = a, b ; T = w, n, o, p ;
  • Page 27
  • 27 rule(T,CorpsListe) ?- rule(q, L). L = [i, w, j] ; L = [a, b] ; L = [w, n, o, p] ;
  • Page 28
  • 28 termeToListe(T,L) ?- termeToListe((a,b,c),L). L = [a, b, c] ;
  • Page 29
  • 29 Quelques prdicats 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).
  • Page 30
  • 30 Des capacits dexplications ?- 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 le moteur devra justifier ses rponses en fournissant une explication de son raisonnement Plus prcisment, suite un succs, le moteur devra fournir la trace des infrences Cest dire rpondre au comment
  • Page 31
  • 31 La Trace des infrences 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]]]]
  • Page 32
  • 32 La Trace des infrences est une liste Si on efface un fait f, la trace est [f] Si on efface une rgle tete :- b1,b2,,bn la trace est la liste [tete,trace_b1,trace_b2,, trace_bn] o trace_bi est la trace des infrences relatives leffacement du but bi Si on efface une conjonction de buts, la trace est la liste des traces relatives leffacement de chaque but
  • Page 33
  • 33 La Trace des infrences est une liste Par exemple : la trace rsultant de leffacement de a est [[a]] la trace rsultant de leffacement de q est [[q, [a], [b, [f, [g]], [h]]]] la trace rsultant de leffacement de q,a est [[q, [a], [b, [f, [g]], [h]]], [a]]
  • Page 34
  • 34 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).