La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "1 Systèmes Experts implémentation en Prolog. 2 Définition Application capable d'effectuer dans un domaine des raisonnements logiques comparables à ceux."— Transcription de la présentation:

1 1 Systèmes Experts implémentation en Prolog

2 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 dinférences, permettant de réaliser des déductions logiques C'est avant tout un système d'aide à la décision

3 3 Composants de base Base de connaissance –Les connaissances sont propres au domaine dexpertise –Règles de production si prémisse alors conclusion Moteur dinférences –Le mécanisme dexploitation est indépendant du domaine

4 4 Moteur dinférences Cycle de base Caractéristiques dun moteur dinférences –Mode dinvocation des règles –Régime –Interactivité –Capacités dexplications

5 5 Le cycle de base Phase de restriction Eliminer les connaissances trivialement inutilisables Phase de filtrage Déterminer lensemble 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 dexécution Par exemple, toutes les connaissances, la première, choix aléatoire, coût, intérêt, … Exécution (inférer)

6 6 Caractéristiques dun moteur dinférences –Mode dinvocation des règles –Régime –Interactivité –Capacités dexplications

7 7 Caractéristiques : Mode dinvocation 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 dune règle selon ses prémisses Chaînage arrière sélection dune règle selon ses conclusions Chaînage mixte

8 8 Mode dinvocation 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 Cest une recherche indépendante de lobjectif

9 9 Mode dinvocation 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 Cest une recherche dirigée par le but

10 10 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 lensemble de conflit Permet de remettre en cause l'application d'une règle si ce choix conduit à un échec

11 11 Caractéristiques : Moteur dinférences interactif Interroger lutilisateur / lexpert Obtenir des connaissances immédiatement exploitables par le moteur

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

13 13 Prolog : un moteur dinférences ! Mode dinvocation des règles : ? Régime : ? Interactif : ? Capacités dexplications : ?

14 14 Exemple Une base de connaissance symbolique Base des faits initiaux a, c, d, e, g, h, k 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 On demande détablir le fait q les règles 2, 4 et 8 forment lensemble 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

15 15 Implémentation de la base de connaissance en Prolog Base des faits a. c. d. e. g. h. k. 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 16 Utilisation directe de Prolog comme moteur dinférences ?- q. yes ?- i no ?- q,a,i. no ?- q,a,h. yes Base des faits a. c. d. e. g. h. k. 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.

17 17 Comment améliorer linterface 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]) :- ?.

18 18 Comment améliorer linterface 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).

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

20 20 Utilisation du « nouveau » moteur dinfé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 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 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 23 Redéfinir un moteur dinférences « au-dessus » de Prolog Implémenter des capacités dexplications Proposer une interaction avec lutilisateur Augmenter le pouvoir dexpression des règles

24 24 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 dune règle ?- rule(q, Corps). Corps = [i, w, j] ; Corps = [a, b] ; Corps = [w, n, o, p] ; no

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

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

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

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

29 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 30 Des capacités 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 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 Cest à dire répondre au « comment »

31 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 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 à leffacement du but bi Si on efface une conjonction de buts, la trace est la liste des traces relatives à leffacement de chaque but

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

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


Télécharger ppt "1 Systèmes Experts implémentation en Prolog. 2 Définition Application capable d'effectuer dans un domaine des raisonnements logiques comparables à ceux."

Présentations similaires


Annonces Google