You are on page 1of 36

Systmes base de rgles

Ingnierie des connaissances (Master 2 ISC)

Ingnierie des connaissances (Master 2 ISC)

1/100

Introduction
Mthode classique de reprsentation de connaissances (1943, rgles de production). Souvent utilis en IA et dans les systmes experts (semblable aux raisonnements humains ?) Forme des rgles : SI ANTECEDENTS ALORS CONSEQUENTS ANTECEDENTS reprsente les prmisses, souvent une conjonction de conditions, parfois des ngations ou des disjonctions. CONSEQUENTS reprsentent des actions envisager. Souvent lajout de nouveaux faits. Toujours sous forme de conjonction. La prsence de rgles de production nimplique pas un raisonnement dductif.

Ingnierie des connaissances (Master 2 ISC)

2/100

Type de systmes de rgle


1. systme dordre 0 : valeurs vrais ou faux (logique propositionnelle). SI il y a douleur ET patient a plus de 40 ans ET ... 2. systme dordre 0+ : valeurs discrtes et continues. SI symptme = douleur ET age >= 40 ET ... 3. systme dordre 1 : instantiation de variables (logique du premier ordre). SI x a une douleur ET x a lge n ET n > 40 ET ... On peut augmenter lexpressivit des rgles avec ngations, quanticateurs, etc. en prenant en compte le fait que cela a un cot.

Ingnierie des connaissances (Master 2 ISC)

3/100

Cycle du moteur dinfrence

volution
Restriction - sous-ensemble des rgles - sous-ensemble des faits Filtrage dtermination de lensemble de conits Rsolution des conits choix de la (ou des rgles)

Excution
Excutions des actions des rgles

Base de faits et base de rgles modies

Actions vers lenvironnement

Ingnierie des connaissances (Master 2 ISC)

4/100

Grammaire classique pour des faits


Trois ensembles : 1. ensemble N dobjets (objet physique ou proprit ou but) ; 2. emsemble P de noms de proprits sur ces objets ; 3. ensemble V de valeurs possibles sur ces proprits (valeurs numriques, symboles, objets). Un proprit est un triplet (o, , v). Souvent, on combine les proprits sur un mme objet : (o, 1 , v1 , 2 , v2 , . . .). Cette approche se rattache trs bien aux langages orients objets.

Ingnierie des connaissances (Master 2 ISC)

5/100

Evaluation : phase de restriction


Slection dun sous-ensemble de la base de faits et de la base de rgles : bas sur la mta-connaissances ; choix dun domaine (sur certains faits) ; mise en valeur de certaines rgles : anciennet, complexit, valeur,... structuration des faits et rgles, mta-rgles.

Ingnierie des connaissances (Master 2 ISC)

6/100

Evaluation : phase de ltrage


Pattern-matching.

Dtermination des rgles dclencher compatibles avec les faits slectionns. Lensemble de conit est lensemble des instantiations (correspondance entre les prmisses de rgles et les faits associs). Trs coteux en temps de calcul (90 % du temps de calcul).

Ingnierie des connaissances (Master 2 ISC)

7/100

Evaluation : rsolution de conits


Slection parmi les rgles compatibles (si il y en a) des rgles qui doivent tre dclenches. Stratgies principales : limination des rgles utilises sur une mme donne (voire de toutes les rgles qui ont t dclenches rcemment) viter les boucles ; utilisation des donnes ajoutes le plus rcemment (exploration en profondeur ) ; utilisation des rgles les plus spciques : celles qui possdent le plus de conditions sont prfres aux rgles gnrales ; rgles avec les plus de conclusions ; dtermination de lintrt des conclusions. Stratgies utilisant des mta-rgles, ou un algorithme du moteur dinfrence.

Ingnierie des connaissances (Master 2 ISC)

8/100

Excution
2 modes possibles : 1. Rgime de contrle irrvocable ; 2. Rgime de contrle par tentative : retour arrire possible remplacement de rgles par dautres.

Ingnierie des connaissances (Master 2 ISC)

9/100

Chanage avant
DEBUT phase de selection phase de ltrage TANTQUE ensemble des rgles applicables non vide ET problme non rsolu FAIRE rsolution de conits modication des faits et rgles applicables FINTANTQUE FIN

Ingnierie des connaissances (Master 2 ISC)

10/100

Chanage avant
Inconvnients : 1. dclenche toutes les rgles ; 2. demande beaucoup de faits initiaux (manque dinteractivit) ; 3. explosion combinatoire possible (en largeur).

Ingnierie des connaissances (Master 2 ISC)

11/100

Exemple
Fait initiaux : {B,C}, but : H. Rgles : Si B et D et E alors F. Si G et D alors A. Si C et F alors A. Si B alors X. Si D alors E. Si X et A alors H. Si C alors D. Si X et C alors A. Si X et B alors D.

Ingnierie des connaissances (Master 2 ISC)

12/100

Chanage arrire
DEBUT Phase de selection ; phase de ltrage SI ensemble de rgles applicable vide ALORS questionner utilisateur SINON TANTQUE but non rsolu ET il reste des rgles slectionnes FAIRE Rsolution de conits Ajouter les sous-buts Rsoudre les sous-buts si possible FINTANTQUE FIN

Ingnierie des connaissances (Master 2 ISC)

13/100

Chanage arrire
Algorithme plus compliqu (construction dun arbre ET/OU). Systme interactif la demande (distinguer faits demandables et non demandables). Arbre de recherche plus petit. Risque de bouclage.

Ingnierie des connaissances (Master 2 ISC)

14/100

Langages avec systmes de rgles


Langages chanage arrire : drivs Prolog... Langages chanage avant : par exemple CLIPS, Jess, drools... Selon les cas, on parle dexpert system shells ou de business rules management systems (BRMS), ou de production rule systems...

Ingnierie des connaissances (Master 2 ISC)

15/100

Drools Drools ou JBoss Rules.


en Java ; gratuit, code source ouvert ; intgrable dans Eclipse. Fond sur la spcication JSR-94 qui dcrit lAPI entre Java et les systmes de rgles.

Ingnierie des connaissances (Master 2 ISC)

16/100

Bases de Drools
1. Des chiers java : dnition des classes ; analyse et compilation des chiers drools ; cration, initialisation de la base de faits ; lancement des rgles. 2. Un chier Drools (.drl) (un format XML existe aussi) : description des rgles.

Ingnierie des connaissances (Master 2 ISC)

17/100

Drools : faits
Objets (beans) ajouts dans la base de faits . public static class Etudiant { private string name; public Etudiant () { } public string getName () { return this.name; } public void setName (string name) { this.name = name; } } ... session.insert (new Etudiant ()); ...
Ingnierie des connaissances (Master 2 ISC)
18/100

Ajouter des faits

Ajouter un fait : dans du code Java : interface WorkingMemoryEntryPoint : insert(Object) (retourne un FactHandle). dans du code Drools (partie droite des rgles) : rule "Ajouter un etudiant" when then insert (new Etudiant ()); // macro vers linterface KnowledgeHelpe end Note : on ne peut pas insrer deux fois un mme objet (mais selon la conguration gnrale, on peut insrer ou non deux objets gaux ).

Ingnierie des connaissances (Master 2 ISC)

19/100

Retirer un fait

Retirer un fait : dans du code Java : retract(FactHandle). dans du code Drools : rule "Retirer un etudiant" when $e : Etudiant ( ) // prfixer les dclarations par $ est optionnel then retract ($e); // encore un fois, macro

Ingnierie des connaissances (Master 2 ISC)

20/100

Modier un fait
dans du code Java : aprs modication de lobjet, update(FactHandle,Object) (interface WorkingMemoryEntryPoint dans du code Drools : rule "Modifier le nom" when $e : Etudiant ( ) then $e.setName ("Raoul"); update ( e ); // macro end Lappel update est ncessaire pour assurer la modication des rgles activables.

Ingnierie des connaissances (Master 2 ISC)

21/100

Rgles
Syntaxe : rule <nom> <attributs>* when <premisses>* (LHS) then <actions>* (RHS) end Exemple : rule "Jai vu un etudiant" when e : Etudiant ( ) then System.out.println ("Jai vu " + e.getName() + " aujourdhui."); end
Ingnierie des connaissances (Master 2 ISC)
22/100

LHS : contraintes
Contraintes : when $e : Etudiant ( name == "machin" ) then ... end Lutilisation de name est subordonne lexistence du getter getName. On peut utiliser aussi des accesseurs (mthodes sans paramtres), sans mettre les parenthses (eg calculeAge ()). Plusieurs contraintes : when $e : Etudiant ( name == "machin" then ...
Ingnierie des connaissances (Master 2 ISC)

|| calculeAge > 25 )

23/100

LHS : dclaration de variables dans les faits


when $e1 : Etudiant ( $age : calculeAge > 20 ) $e2 : Etudiant ( calculeAge > $age ) then

Ingnierie des connaissances (Master 2 ISC)

24/100

LHS : autres dans les contraintes (non exhaustif)


Connecteurs logiques : &&, ||. Oprateurs : <, <=, >, >=, ==, !=, contains, not contains, memberof, not memberof, matches, not matches, soundslike. Type des valeurs pour les restrictions litrales : numrique, date, chane, boolen, enum. On peut mettre des expressions entre parenthses : Person( girlAge : age, sex == "F" ) Person( age == ( girlAge + 2) ), sex == "M" ) cf la doc en ligne de Drools : (http://downloads.jboss.com/drools/docs/5.0.1.26597. FINAL/drools-expert/html/index.html).

Ingnierie des connaissances (Master 2 ISC)

25/100

LHS : autres lments conditionnels


Quelques exemples : eval( isValid(p1, p2) )

// evaluation de code Java (peu optimal car variab

not Etudiant( ) // ngation dune contrainte Personne () or Etudiant () // disjonction, produit deux sous-rgles

exists Etudiant () // rgle active _une_ fois si on a un ou plusieurs tudi On trouve aussi forall (teste si une condition implique les autres), from (pour chercher au-del de la base de fait), collect (crer/utiliser des collections de faits), accumulate (itration sur une collection de faits). Cf la doc en ligne de Drools.

Ingnierie des connaissances (Master 2 ISC)

26/100

RHS
Liste dactions excuter (en Java). Inadapt pour mettre des structures de contrle (hors squence) : les actions doivent rester lmentaires. Quelques macros supplmentaires grer la base de faits : insert, retract, update, insertLogical (voir plus loin).

Ingnierie des connaissances (Master 2 ISC)

27/100

Algorithme de Rete
Principe : calcul de lensemble de conit plus vite, en prenant plus de mmoire. Deux ides principales : 1. Les prmisses de nombreuses rgles sont communs, on peut donc mettre des tests communs (ressemblance structurelle). 2. La base de travail ne change pas beaucoup entre deux cycles du moteur (redondance temporelle).

Ingnierie des connaissances (Master 2 ISC)

28/100

RETE : vue de haut niveau


Cration et mise jour dun rseau , graphe orient acyclique avec une racine. chaque nud est un pattern on garde pour chaque nud les informations pour satisfaire le pattern (faits, relations entre variables et valeurs) chaque chemin depuis la racine reprsente dabord un prmisse de rgles, puis la conjonction de ces prmisses pour arriver une rgles.

Ingnierie des connaissances (Master 2 ISC)

29/100

Exemple
Avec la syntaxe de drools : rule "regle1" when Animal (type == Type.CAT, $c : color, size == Siz.SMA, $h : hair) Animal (type == Type.DOG, color == $c, $q : size, hair == Hair.MED) Animal (type == Type.DOG, color != $c, size == $q , hair == $h) then ... end rule "regle2" when Animal (type == Type.CAT, $c : color, size == Siz.SMA, $h : hair) Animal (type == Type.CAT, color == $c, size == Siz.LAR, hair != $h) then ... end
Ingnierie des connaissances (Master 2 ISC)
30/100

Rseau
dbut

Animal type = CAT type = DOG

size = LAR

size = SMA

hair = MED

C1 Join (color = color) Join (color != color, size = size, hair = hair) Regle 1

Join (color = color hair != hair) Regle 2

Ingnierie des connaissances (Master 2 ISC)

31/100

Exemple avec base de faits


s.insert s.insert s.insert s.insert s.insert s.insert s.insert s.insert s.insert (new (new (new (new (new (new (new (new (new Animal Animal Animal Animal Animal Animal Animal Animal Animal (Type.CAT,Col.BRO,Siz.LAR,Hair.SHO)); (Type.CAT,Col.WHI,Siz.LAR,Hair.SHO)); (Type.CAT,Col.WHI,Siz.SMA,Hair.SHO)); (Type.DOG,Col.BRO,Siz.MED,Hair.MED)); (Type.CAT,Col.BRO,Siz.SMA,Hair.MED)); (Type.DOG,Col.BRO,Siz.SMA,Hair.SHO)); (Type.DOG,Col.WHI,Siz.MED,Hair.MED)); (Type.DOG,Col.BRO,Siz.LAR,Hair.MED)); (Type.DOG,Col.WHI,Siz.LAR,Hair.MED)); // // // // // // // // // a1 a2 a3 a4 a5 a6 a7 a8 a9

Ingnierie des connaissances (Master 2 ISC)

32/100

Rseau
dbut

{a1,...,a9} {a1,a2,a3,a5} type = CAT

Animal type = DOG {a4,a6,a7,a8,a9}

size = LAR {a1,a2}

size = SMA {a3,a5}

hair = MED {a4,a7,a8,a9}

{a3,a5}

C1 Join (color = color) { (a3,a7) (a3,a9) (a5,a4) (a5,a8) } Join (color != color, size = size, hair = hair) { (a5,a4,a7) (a5,a8,a9) }

{ (a1,a5) }

Join (color = color hair != hair) Regle 2

Regle 1

Ingnierie des connaissances (Master 2 ISC)

33/100

Salience : priorit des rgles


Un attribut important pour les rgles, la salience : rule "les oiseaux volent" when $o : Oiseau ( ) then System.out.println ($o.getName() + " peut voler."); retract ( $o ); end rule "les manchots ne volent pas" salience 10 when $o : Oiseau ( type = "Manchot" ) then System.out.println ($o.getName() + " ne peut pas voler."); retract ( $o ); end
Ingnierie des connaissances (Master 2 ISC)
34/100

Salience (bis)
La salience est un moyen de hirarchiser les rgles prioritaires. Ne pas abuser, par exemple 4 niveaux : 1. rgles de rduction des hypothses ; 2. connaissance du domaine (infrences) ; 3. interrogation de lutilisateur ; 4. transitions de phase (dtapes du programme). Dautres mthodes (partition de lagenda, ot de rgles) sont possibles.

Ingnierie des connaissances (Master 2 ISC)

35/100

Stratgies de Drools
Pour des rgles de mme salience : Stratgies en profondeur (rgles actives le plus rcemment, stratgie par dfaut en Drools), en largeur (rgles actives le plus anciennement). Stratgies de simplicit ou complexit. Stratgie alatoire. et dautres...

Ingnierie des connaissances (Master 2 ISC)

36/100

You might also like