1 / 34

Systèmes Experts implémentation en Prolog

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

lilika
Download Presentation

Systèmes Experts implémentation en Prolog

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Systèmes Expertsimplémentation en Prolog

  2. 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

  3. Composants de base Base de connaissance • 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

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

  5. 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) Le cycle de base

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

  7. Le chaînage consistent à enchaîner des déductions logiques pour aller en direction d'une cause ou de ses effets Chaînageavant 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 Caractéristiques :Mode d’invocation des règles

  8. 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 avant

  9. 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 Mode d’invocation des règles Chaînage arrière

  10. 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 :Régime

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

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

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

  14. Base des faits initiaux a, c, d, e, g, h, k Exemple Une base de connaissance symbolique 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. sik et w et malorsi • 2.sii et w et jalorsq • 3.sif et halorsb • 4.sia et balorsq • 5.sic et halorsr • 6.sir et j et malorss • 7.sigalorsf • 8.siw et n et o et palorsq

  15. Base des faits a. c. d. e. g. h. k. 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.

  16. 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. no ?- q,a,h. yes Base des faits a. c. d. e. g. h. k.

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

  18. Définir la procédure effacer/1de 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 ?

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

  20. 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

  21. 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), si(Etat=succes, write(' est etablie'),write(' n''est pas etablie')), nl.

  22. 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.

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

  24. Utiliser le prédicatrule/2en 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 prolog« au-dessus » de Prolog ?

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

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

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

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

  29. 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).

  30. ?- 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 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 » Des capacités d’explications

  31. 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]]]]

  32. 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

  33. 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]]

  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).

More Related