34
1 Systèmes Experts implémentation en Prolog

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

Embed Size (px)

Citation preview

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

1

Systèmes Expertsimplémentation en Prolog

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

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

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

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

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

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

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

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)

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

6

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

– Mode d’invocation des règles

– Régime

– Interactivité

– Capacités d’explications

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

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

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

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

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

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

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

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

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

11

Caractéristiques :Moteur d’inférences interactif

• Interroger l’utilisateur / l’expert

• Obtenir des connaissances immédiatement exploitables par le moteur

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

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

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

13

Prolog : un moteur d’inférences !

• Mode d’invocation des règles : ?

• Régime : ?

• Interactif : ?

• Capacités d’explications : ?

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

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

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

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.

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

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.

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

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

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

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

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

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)

).

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

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

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

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.

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

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.

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

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

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

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

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

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

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

26

clause(T,CorpsTerme)

?- clause(q,T).

T = i, w, j ;

T = a, b ;

T = w, n, o, p ;

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

27

rule(T,CorpsListe)

?- rule(q, L).

L = [i, w, j] ;

L = [a, b] ;

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

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

28

termeToListe(T,L)

?- termeToListe((a,b,c),L).

L = [a, b, c] ;

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

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

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

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 »

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

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

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

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

 

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

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

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

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