Artificial Intelligence University Politehnica of Bucharest 2008 2009
Artificial Intelligence University Politehnica of Bucharest 2008 -2009 Adina Magda Florea http: //turing. cs. pub. ro/aifils_08 1
Lecture No. 6 Prolog Language Rule-based Systems n n Knowledge representation using rules RBS structure Inference cycle of a RBS Control strategy 2 2
1. Prolog R. Kowalski, A. Colmerauer - '70 Prolog control structure n A goal S is true in a Prolog program (can be satisfied or is a logical consequence of the program) iff: 1. There is a clause C in the program; 2. There is an instance I of the clause C such that: n 2. 1. the head of I is the same with the head of S; 2. 2 all the goals in I’s body has true (can be satisfied) n 3 3
Prolog 4
Prolog % parinte(Individ. X, Individ. Y) % stramos(Individ. X, Individ. Z) parinte(vali, gelu). parinte(ada, mia). parinte(gelu, lina). parinte(gelu, misu). parinte(misu, roco). str 1(X, Z) : - parinte(X, Z). str 1(X, Z) : - parinte(X, Y), str 1(Y, Z). 5 5
Prolog % Change the order of the rules: str 2(X, Z) : - parinte(X, Y), str 2(Y, Z). str 2(X, Z) : - parinte(X, Z). % Change the order of goals: str 3(X, Z) : - parinte(X, Z). str 3(X, Z) : - str 3(X, Y), parinte(Y, Z). % Change both the order of rules and the order of goals: str 4(X, Z) : - str 4(X, Y), parinte(Y, Z). str 4(X, Z) : - parinte(X, Z). 6 6
Prolog ? - str 1(ada, misu). yes ? - str 2(ada, misu). yes ? - str 3(ada, misu). yes 7 7
Prolog ? - str 4(ada, misu). ? - str 3(mia, roco). 8 8
2. Knowledge representation using rules n Declarative representation / procedural representation R 1: if the patient has fever and the type of the organism is gram-pozitiv and the patient has a stiff neck then the identity of the organism is streptococcus R 2: if the car does not start and the lights do not turn on the battery is faulty sau there is no contact of the battery R 3: if the temperature > 95 o C then open the protection valve 9
Knowledge representation using rules 10
3. Structure of an RBS 11
4. Inference cycle of an RBS n n n Match Selection Execution 12
Inference cycle of an RBS - cont Algorithm: Functioning of an RBS 1. WM Case data 2. repeat 2. 1. Identify WM and KB and create the conflict set (CS) 2. 2. Select a rule from the CS to apply 2. 3. Apply selected rule until there are no more applicable rules or WM satisfies goal or a predefined effort has been exhausted end. 13
5. Control strategy n n Selection criteria from the CS Direction of rule application 14 14
5. 1 Selection criteria from the CS n n Select the first applicable rule Select a rule from the CS n Preferences based on rule identity Specificity n n - the set of premises of R 1 includes the set of premises of R 2; - the set of conditions of R 1 are similar to that of R 2, but the premises of R 1 refer to constants while the premises of R 2 refer to variables. Time of last use n Preferences based on matched objects 15 15
16
Selection criteria from the CS - cont n Use of meta-rules if { then { n a rule has conditions A and B and the rule refers {does not refer} X not at all/ only in the LHS/ only in the RHS } the rule will be certainly useful probably useful/ probably useless/ certainly useless } Application of all rules in the CS 17 17
5. 2 Direction of rule application Forward chaining Backward chaining 18 18
(a) Forward chaining 19 19
(b) Backward chaining 20 20
Algorithm: Find a value using forward chaining (a) Find. Value. D(A) 1. if A has value then return SUCCESS 2. Build CS 3. return Find(A, CS) end. Find(A, CS) 1. if CS = {} then return FAIL 2. Choose a rule R CS according to a selection criterion (criteria) 3. for each premise Ij of R execute 3. 1. Find the truth of Ij 4. if all Ij , j=1, N are satisfied then 4. 1. if A has value then return SUCCESS 4. 2. Add the fact(s) refered in the RHS of R to WM 5. CS - R 6. return Find(A, CS) end. 21
Algoritm: Find a value using backward chaining (b) Detvalue(A) 1. Build the set if rules which refer A in RHS, CS 2. if CS = {} then 2. 1. Ask the user the value of A 2. 2. if the user answers A then stare this value in WM else return FAIL 3. else 3. 1. Choose a rule according to a selection criterion (criteria) 3. 2. for each premise Ij, j=1, N, in LHS of R execute 3. 2. 1. Be Aj refered by the premise Ij 3. 2. 2. if Aj has value then evaluate the truth of Ij 3. 2. 3. else i. if Detvalue(Aj) = SUCCESS then evaluate the truth of Ij ii. else consider Ij unsatisfied 22
4. 5. 3. 3. if all premises Ij, j=1, N are satisfied then store the value A obtained from the RHS of R in WM if A has value (in WM) then return SUCCESS else 5. 1 CS – R 5. 2 repeat from 2 end. 1'. if A is primary data then 1'. 1. Ask the user the value of A 1'. 2. if the user knows the value of A then - store this value in WM - return SUCCESS 1’. 3. else return FAIL 23
Example of RBS with forward chaining (a) R 11: if Etapa is Verifica-Decor and exists o statuie and does not exist soclu then Add soclu la Obiecte-Neimpachetate R 17: if Etapa is Verifica-Decor then finish Etapa Verifica-Decor and start Etapa Obiecte-Mari …. . 24
Example of RBS with forward chaining - cont R 21: if Etapa is Obiecte-Mari and exists un obiect mare de ambalat and exists un obiect greu de ambalat and exists o cutie cu mai putin de trei obiecte mari then pune obiectul greu in cutie R 22: if Etapa is Obiecte-Mari and exists un obiect mare de ambalat and exists o cutie cu mai putin de trei obiecte mari then pune obiectul mare in cutie R 28: if Etapa is Obiecte-Mari and exists un obiect mare de pus then foloseste o cutie noua R 29: if Etapa is Obiecte-Mari then finish Etapa Obiecte-Mari and start Etapa Obiecte-Medii …. . 25 25
Example OPS 5 WME (literalize student (literalize room name placed_in sex_stud) number capacity free sex_room occupants) (vector-attribute occupants) room 111 4 2 F (Maria Elena) time tag (make room ^number 112 ^capacity 4 ^free 4 ^sex_cam nil ^occupants nil) (make student ^name Mihai ^placed_in nil ^sex-stud M) 26 26
(p atrib_stud_free_room (<Unplaced_student> (student ^name < stud_name> ^plased_in nil ^sex_stud <gender>)) (<Free_room> (room ^number <room_no> ^capacity <capacity_max> ^free <capacity_max>)) --> (modify < Unplaced_student > ^ plased_in < room_no >) (modify < Free_room > ^ occupants < stud_name > ^sex_room < gender > ^ free (compute < capacity_max >-1)). 27 27
Example Jess (deftemplate person (slot firstname) (slot age (type INTEGER)) ) (defrule adult (person (firstname ? p_first) (age ? p_age)) (test (>= ? p_age 18))) => (assert (adult (firstname ? p_first))) ) 28
(deftemplate room (slot number) (slot capacity (type INTEGER)(default 4)) (slot sexes_are) (slot vacancies (type INTEGER)) (multislot occupants)) Stud/room in Jess (deftemplate student (slot name) (slot sex) (slot placed_in) (slot special_considerations (default no)) (defrule assign-student-empty-room ? unplaced_student (student (name ? stud_name) (placed_in nil) (sex ? gender)) ? empty_room (room (number ? room_no) (capacity ? room_cap) (vacancies ? max_size)) (test (= ? room_cap ? max_size)) => (modify ? unplaced_student (placed_in ? room_no)) (modify ? empty_room (occupants ? stud_name) (sexes_are ? gender) (vacancies (-- ? max_size)) ) 29
5. RBS strategies in OPS 5 family n Recognize-act cycle: n n WME = working memory element n n Match Select Act Identified by a "time tag" Instantiation: set of WME which satisfy a rule Conflict set Conflict resolution 30 30
Recognize-act cycle Match n Application of rule – condition - WMEs of WM satisfy LHS n 2 aspects: n n match intra-element match inter-element (defrule teenager (person (first. Name ? name) (age ? age)) => (printout t ? name " is " ? age " years old. " crlf)) 31
Recognize-act cycle n match inter-element Instantiations (WM) (defrule assign-private-room 41 9 (student (name ? stud_name) assign-private-room 41 17 assign-private-room 52 9 (placed_in nil) assign-private-room 52 17 (special_consideration yes)) (room (number ? room_no) (capacity 1) (vacancies 1) WMEs 41 (student name Mary sex F placed_in nil => … special_consideration yes) 52 (student name Peter sex M placed_in nil special_consideration yes) 9 (room number 221 capacity 1 vacancies 1) 12 (room number 346 capacity 2 vacancies 1) 17 (room number 761 capacity 1 vacancies 321)
Conflict resolution n Strategies n n n Refraction = o aceeasi instantiere nu este executata de mai multe ori (2 instantieri sunt la fel daca au acelasi nume de regula si aceleasi time tags, in aceeasi ordine) Time of use = Se prefera instantierile care au identificat cu WMEs cu cele mai recente time tags (sau invers) Specificity = Au prioritate instantierile cu LHS specifice = nr de valori testate in LHS n teste asupra: nume clasa, predicat cu 1 arg constanta, predicat cu un operator variabila legata 33
Conflict resolution n Strategia LEX n n n Elimina din MC instantierile care au fost deja executate Ordoneaza instantierile pe baza momentului utilizarii Daca mai multe instantieri au aceleasi time tags, utilizeaza specificitate Daca mai multe instantieri au aceeasi specificitate alege arbitrar Strategia MEA – aceeasi dar utilizeaza primul time tag 34
Efficiency n n n Match – cam 80% din timpul ciclului recunoastere-actiune Fiecare WME este comparat cu fiecare conditie din fiecare regula P n O(R*F ), R – nr de reguli, F – nr WME, P nr mediu de conditii in LHS regula RETE match algorithm (1982 Forgy) n Salveaza starea de match intre 2 cicluri recunoastereactiune n La crearea unui WME, acesta este comparat cu toate elementele conditie din program si este memorat impreuna cu fiecare element conditie cu care a identificat => n Numai schimbarile incrementale din WM sunt identificate in fiecare ciclu n O(R*F*P) aprox 35
Rule compilation n n Se compileaza conditiile regulilor intr-o retea de noduri de test Un test este un predicat cu o constanta sau variabila legata sau o disjunctie Procesul de match are loc numai la adaugarea sau la eliminarea unui WME (modify este retract urmat de assert) (gate (type or) (value true)) (gate (type or) (value false)) Node sharing 1 = gate type = or value = true value = false 36
Rule compilation n n n Un pointer la noul WME este trecut prin retea, incepand de la nodul radacina Fiecare nod actioneaza ca un switch Cand un nod primeste un pointer la un WME, testeaza WME asociat. Daca testul reuseste, nodul se deschide si WME trece mai departe Altfel nu se intampla nimic Daca un WME va trece prin retea, va fi combinat cu alte WME care trec pentru a forma o instantiere in MC Pointerii la WME sunt trimisi prin reteaua RETE ca tokens = pointer + stare (assert sau retract) 37
Types of node in RETE network Nod cu 1 intrare = test intra-element n realizat de noduri cu 1 intrare n fiecare nod efectueaza un test corespunzator unei conditii n testarea aceleiasi variabile – tot noduri cu 1 intrare 1 = gate type = or value = true value = false 38
RBS n n n n Foarte multe Cele mai influente OPS 5 ART CLIPS Jess Familia Web Rule languages n n In special Rule. ML si SWRL Interoperabilitatea regulilor 39
Rule. ML n n n Rule. ML Initiative - August 2000 Pacific Rim International Conference on Artificial Intelligence. Rule. ML Initiative dezvolta limbaje bazate pe reguli deschise XML/RDF Aceasta permite schimbul de reguli intre diferite sisteme, inclusiv componete software distribuite pe Web si sisteme client-server eterogene Limbajul Rule. ML – sintaxa XML pentru reprezentarea cunostintelor sub forma de reguli Integrarea cu ontologii: sistemul de reguli trebuie sa deriveze/utilizeze cunostinte din ontologie 40
Rule. ML n n Rule. ML – se bazeaza pe Datalog = limbaj de interogare si reguli pentru baze de date deductive Subset al Prolog cu restrictii: n argumente ne-functionale (constante sau variabile) n limitari in nivelul de apeluri recursive n variabilele din concluzie trebuie sa apara in predicate ne -negate din ipoteza Hornlog – Datalog extins cu variabile functionale (termeni generali) 41
Rule. ML n n Reguli reactive = Observa/verifica anumite evenimente/conditii si executa o actiune – numai forward Regui reactive Constangeri de integritate Constrangeri de integritate = reguli speciale care semnaleaza inconistente cand se indeplinesc anumite conditii – numai forward Reguli de inferenta (derivare) = reguli reactive speciale cu actiuni care adauga o concluzie daca conditiile (premisele sunt adevarate) - Se pot aplica atat forward cat si backward Reguli de derivare Fapte = reguli de inferenta particulare 42
Rule. ML n Reguli reactive <rule> <_body> <and> prem 1. . . prem. N </and> </_body> <_head> action </_head> </rule> n Constrangeri de integritate <ic> <_head> inconsistency </_head> <_body> <and> prem 1. . . prem. N </and> </_body> </ic> implementate ca <rule> <_body> <and> prem 1. . . prem. N </and> </_body> <_head> <signal> inconsistency </signal> </_head> </rule> 43
Rule. ML n Reguli de inferenta/derivare <imp> <_head> conc </_head> <_body> <and> prem 1. . . prem. N </and> </_body> </imp > implementate prin <rule> <_body> <and> prem 1. . . prem. N </and> </_body> <_head> <assert> conc </assert> </_head> </rule> n Fapte <atom> <_head> conc </_head> </atom> implementate prin <imp> <_head> conc </_head> <_body> <and> </_body> </imp> 44
Rule. ML Fapte <atom> <rel>spending</rel> <ind>Peter Miller</ind> <ind>min 5000 euro</ind> <ind>previous year</ind> </atom> spending(petter. Miller, min 5000 euro, previous. Year). 45
Reguli de inferenta/derivare <imp> <head> <atom> <rel>discount</rel> <var>customer</var> <var>product</var> <ind>7. 5 percent</ind> </atom> </head> <body> <and> <atom> <rel>premium</rel> <var>customer</var> </atom> <rel>luxury</rel> <var>product</var> </atom> </and> </body> discount(Customer, Product, 7. 5_percent): </imp> premium(Customer), luxury(Product). 46
Example of RBS with backward chaining (b) R 1: if X has par then X is mamal R 2: if X feeds puii with milk then X is mamal R 3: if X is mamal and X has pointed teeth and X has falci then X is carnivor R 4: if X is carnivor and X is brown and X has pete then X is cheetah R 5: if X is carnivor and X is brown and X has strips then X is tiger What is X? 47 47
- Slides: 47