Systèmes Experts implémentation en Prolog

Preview:

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

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

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

5

Le cycle de base

Phase de restrictionEliminer les connaissances trivialement inutilisables

Phase de filtrageDé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)

6

Caractéristiques d’un moteur d’inférences

– Mode d’invocation des règles

– Régime

– Interactivité

– Capacités d’explications

7

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 effetsChaînage avant

sélection d’une règle selon ses prémisses

Chaînage arrièresélection d’une règle selon ses conclusions

Chaînage mixte

8

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

9

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

10

Caractéristiques :Régime

IrrévocableLes choix réalisés en phase de résolution de conflit ne sont jamais remis en cause

Par tentativesOn 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

11

Caractéristiques :Moteur d’inférences interactif

• Interroger l’utilisateur / l’expert

• Obtenir des connaissances immédiatement exploitables par le moteur

12

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

13

Prolog : un moteur d’inférences !

• Mode d’invocation des règles : ?

• Régime : ?

• Interactif : ?

• Capacités d’explications : ?

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

15

Implémentation de la base de connaissance en Prolog

Base des faitsa. 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

Utilisation directe de Prolog comme moteur d’inférences

?- q.yes

?- ino

?- q,a,i.no

?- q,a,h.yes

Base des faitsa. 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

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]) :- ? .

18

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

19

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)

).

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

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

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 d’une règle

?- rule(q, Corps).

Corps = [i , w , j] ;

Corps = [a , b] ;

Corps = [w , n , o , p] ;

no

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

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

Des capacités d’explications

?- 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 »

31

La Trace des inférences est une liste …

?- expertiser([q]).Le fait q est etabliq ?a est un fait etablib ?

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,…,bnla 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).

Recommended