340 likes | 509 Views
Logiky a inferencia. doc. Ing. Kristína Machová, CSc. k ristina. m achova @tuke.sk http://people.tuke.sk/kristina.machova. Osnova:. Úvod Monotónne pravidlá Monotónne pravidlá v XML Nemonotónne pravidlá Nemonotónne pravidlá v XML. Úvod.
E N D
Logiky a inferencia doc. Ing. Kristína Machová, CSc. kristina.machova@tuke.sk http://people.tuke.sk/kristina.machova
Osnova: • Úvod • Monotónne pravidlá • Monotónne pravidlá v XML • Nemonotónne pravidlá • Nemonotónne pravidlá v XML
Úvod • Logika (predikátová logika resp. logika 1.rádu) je základom • reprezentácie znalostí: • Vedomosti vyjadruje transparentným spôsobom. • Má dobre zrozumiteľnú formálnu sémantiku. • Má presnú definíciu logického dôsledku. • Má dokazovací systém, ktorý automaticky derivuje • tvrdenia z množiny predpokladov. • Dokazovací systém je dôkladný (garantuje, že odvodené • tvrdenia vyplývajú významovo z predpokladov). • Je úplný, keďže všetky logické konsekvencie predpokladov • je možné odvodiť týmto dokazovacím systémom. • Výsledky sú jednoduché web stránky. • Logiky vyšších rádov taký dokazovací systém nemajú. • Dokazovací systém umožňuje trasovať dôkazy a tak • vysvetľovať odpovede.
Úvod • Jazyky RDF a OWL sú špecializácie predikátovej Logiky. Jednou • podmnožinou predikátovej logiky je pravidlový systém (Hornova logika). • Existujú dva intuitívne spôsoby čítania atomickej formuly: • Ak platia predpoklady, potom platízáver. Deduktívne pravidlo. • Ak platia predpoklady, potom vykonaj akciu. Reaktívne pravidlo. My budeme používať deduktívny prístup. Deskriptívna logika (OWL) a Hornova logika (pravidlový systém) sú ortogonálne (žiadna nie je podmnožinou druhej). Pravidlový systém nedokáže vložiť informáciu, či je osoba žena alebo muž. V OWL je možné túto informáciu ľahko vyjadriť (disjointunion). Iný problém v OWL sa dá riešiť, v pravidlovom systéme nie: študuje(X,Y), žije(X,Z), lokalita(Y,U),lokalita(Z,U) domáciŠtudent(X). Rozlišujeme monotónne (špeciálny prípad predikátovej logiky) a nemonotónne logiky (spracúvajú informáciu s časovým posuvom).
Monotónne pravidlá Príklad monotónnej logiky – ak platia fakty: matka(X,Y) X je matkou Y otec(X,Y) X je otcom Y muž(X) žena(Y) Potom je možné odvodiť nasledovné vzťahy použitím vhodnej logiky: matka(X,Y) rodič(X,Y) otec(X,Y) rodič(X,Y) muž(X), rodič(P,X), rodič(P,Y), rozdielne(X,Y) brat(X,Y) žena(X), rodič(P,X), rodič(P,Y), rozdielne(X,Y) sestra(X,Y) brat(X,P), rodič(P,Y) strýko(X,Y) matka(X,P), rodič(P,Y) staráMama(X,Y) rodič(X,Y) predok(X,Y) predok(X,P), rodič(P,Y) predok(X,Y)
Monotónne pravidlá Syntax monotónnych pravidiel – príklad: Súčasťou cenovej politiky je pravidlo: kto je lojálny obchodu a má viac ako 60 rokov, dostane zľavu: lojálnyZákazník(X), vek(X) > 60 zľava(X). Pravidlo pozostáva z: premenných (X) konštánt (60) predikátov (lojálnyZákazník, >) funkčných symbolov, ktoré navracajú hodnotu argumentu (vek) Fakty sú atomické formuly: lojálnyZákazník(a123456)
Monotónne pravidlá Syntax monotónnych pravidiel: Pravidlo r má formu: B1, ..., Bn A kde A,B1, ..., Bn sú atomické formuly. A je hlava a B1, ..., Bn sú predpoklady pravidla, ktoré tvoria jeho telo a sú spojené konjunkciou. Pravidlo r je interpretované predikátovou logikou pl(r) ako nasledovná formula: ҰX1 ... ҰXk((B1&…&Bn) A) alebo: ҰX1 ... ҰXk(Av¬B1v…v¬Bn) kde: X1 ... Xk sú premenné vyskytujúce sa v A, B1,…,Bn.
Monotónne pravidlá Logický program P: je konečná množina faktov a pravidiel (ako v znalostnom systéme). Preklad jeho predikátovej logiky pl(P) interpretuje pravidlá a fakty P. Ciele: Cieľ predstavuje otázku Q položenú logickému programu vo forme: B1, ..., Bn V predikátovej logike bude cieľ interpretovaný nasledovne (A vynechané): ҰX1 ... ҰXk(¬B1v…v¬Bn) alebo: ⌐ЭX1... ⌐ЭXk(B1&…&Bn)
Monotónne pravidlá Ciele – príklad: Predpokladajme, že platí: p(a) a my máme cieľ: p(X) Chceme vedieť, či existuje taká hodnota, pre ktorú p platí. Použijeme dôkaz protirečením (v logickom programe dokazujeme, že cieľ môže platiť prostredníctvom negácie cieľa a prostredníctvom dokazovania, že sme dostali protirečenie použitím logického programu). Negovaný cieľ: ⌐ЭX, pre ktoré p(X) je v rozpore s p(a). Teda platí X=a.
Monotónne pravidlá Sémantika predikátovej logiky: Jeden zo spôsobov ako zodpovedať otázku Q je použiť interpretáciu pravidiel, faktov a otázok pomocou predikátovej logiky. Konkrétnejšie: majme logický program P a otázku: B1, ..., Bn S premennými X1, ..., Xk. Odpoveď bude pozitívna ak, a iba ak: pl(P)╞ ЭX1...ЭXk(B1&…&Bn) alebo, ak: pl(P)U{¬ЭX1... ⌐ЭXk(B1&…&Bn)} je nepravdivé, lebo reprezentácia programu P a otázky v predikátovej logike vytvárajú protirečenie. (Symbol╞znamená, že formula vpravo je pravdivá v modeli pl(P).) Ak interpretácia P predikátovou logikou je pravdivá - pl(P), potom aj ЭX1...ЭXk(B1&…&Bn) musí byť pravdivé.
Monotónne pravidlá Sémantika predikátovej logiky - príklad: Predpokladajme, že P je nasledovný program: p(a) p(X) q(X) Uvažujme otázku: q(X) Platí, že q(a) je pravdivé na základe pl(P). A teda ЭXp(X) je taktiež pravdivé na základe pl(P), teda pl(P)U{¬ ЭXp(X)} predstavuje rozpor. Dostávame pozitívnu odpoveď q(a). Avšak, keď položíme otázku q(b) odpoveď bude negatívna, lebo q(b) nie je pravdivé na základe pl(P).
Monotónne pravidlá v XML Termy: f(X,a,g(b,Y)) je možné v XLM kódovať nasledovne: <term> <function>f</function> <term> <var>X</var> </term> <term> <const>a</const> </term> <term> <function>g</function> <term> <const>b</const> </term> <term> <var>Y</var> </term> </term> </term>
Monotónne pravidlá v XML Atomické formuly: p(X,a,f(b,Y)) bude reprezentovaná nasledovnne: <atom> <predicate>p</predicate> <term> <var>X</var> </term> <term> <const>a</const> </term> <term> <function>f</function> <term> <const>b</const> </term> <term> <var>Y</var> </term> </term> </atom>
Monotónne pravidlá v XML Fakty:p(a) bude kódovaný: <fact> <atom> <predicate>p</predicate> <term> <const>a</const> </term> </atom> </fact>
Monotónne pravidlá v XML Pravidlá: Pravidlo pozostáva z hlavy a tela. Hlava je atomická formula. Telo je sekvencia atomických formúl. Napríklad, pravidlo p(X,a),q(Y,b) r(X,Y) je reprezentované: <rule> <head> <atom> <predicate>r</predicate> <term> <var>X</var> </term> <term> <var>Y</var> </term> </atom> </head> <body> ...
Monotónne pravidlá v XML Pravidlá - pokračovanie: ... <body> <atom> <predicate>p</predicate> <term> <var>X</var> </term> <term> <const>a</const> </term> </atom> <atom> <predicate>q</predicate> <term> <var>Y</var> </term> <term> <const>b</const> </term> </atom> </body> </rule>
Monotónne pravidlá v XML Otázky: Otázky sú reprezentované ako telá pravidiel, uzavretých v <query> tagu. DTD: Program pozostáva z pravidiel a faktov: <!ELEMENT program ((rule|fact)*)> Fakty pozostávajú z atomických formúl: <!ELEMENT fact (atom)> Pravidlo pozostáva z hlavy a tela: <!ELEMENT rule (head, body)> Hlava pozostáva z atomickej formuly: <!ELEMENT head (atom)> Telo je zoznamom atomických formúl: <!ELEMENT body (atom*)>
Monotónne pravidlá v XML DTD: Atomická formula pozostáva z predikátu nasledovaného termami: <!ELEMENT atom (predicate, term*)> Term je konštanta, premenná alebo zložený term pozostávajúce z funkčných symbolov, nasledovaných termami: <!ELEMENT term (const|var|(function, term*))> Predikáty, funkčné symboly, konštanty a premenné sú atomického typu: <!ELEMENT predicate (#PCDATA)> <!ELEMENT function (#PCDATA)> <!ELEMENT var (#PCDATA)> <!ELEMENT const (#PCDATA)> Otázka je zoznamom atomických formúl: <!ELEMENT query (atom*)>
Nemonotónne pravidlá Pravidlo nemusí mať platný záver, aj keď sú splnené všetky predpoklady. Uvažujú sa aj závery v protikladných pravidlách. Nemonotónne pravidlá nazývame taktiež „anulovateľné“. Ich závery môžu byť anulované inými pravidlami. Negované atomické formuly sa môžu vyskytnúť v hlave a tele pravidiel: Na odlíšenie anulovateľných pravidiel sa používajú odlišné šípky: ⌐ p(X) ═> q(X) r(X) ═> ⌐q(X) Z faktov: ⌐ p(a) a r(a) je možné odvodiť ajq(a) aj ⌐q(a). To je typický príklad dvoch pravidiel blokujúcich sa navzájom. Preto sa zavádzajú priority medzi pravidlami. Ak je v príklade prvé pravidlo silnejšie ako druhé, potom sa odvodí q(a).
Nemonotónne pravidlá • Priority môžu byť založené na rozličných princípoch: • Zdroj jedného pravidla môže byť dôveryhodnejší (federálny zákon je • nadradený) alebo môže mať vyššiu autoritu („top“ manažment). • Novšie pravidlo môže byť preferované pred starším. • Špecifickejšie pravidlo môže byť preferované pred všeobecnejším. • (napr. všeobecné pravidlo s výnimkami - výnimky sú preferované). • Je potrebné rozšíriť syntax pravidla nasledovne: • r1: ⌐ p(X) ═> q(X) • r2: r(X) ═> ⌐q(X) • a špecifikovať, že r1 je silnejšie ako r2 nasledovne: r1> r2. • Nevyžaduje sa úplné usporiadanie pravidiel. Vyžaduje sa iba, aby • relácia priority bola acyklická. Nepripúšťa sa: • r1> r2> … > rn> r1 • Priority majú riešiť konflikty medzi súťažiacimi pravidlami. • V aplikáciách sa často stáva, že keď sa začne odvádzať jeden predikát, • iný predikát je vylúčený z platnosti.
Nemonotónne pravidlá Definícia syntaxe Anulovateľné, nemonotonické pravidlá majú formu: r: L1, ... , Ln ═> L kde r je označenie (návestie), L1, ... , Ln je telo (predpoklady) a L je hlava pravidla. L, L1, ... , Ln sú pozitívne alebo negatívne literály. Literál je atomická formula p(t1, ... ,tn) alebo jej negácia ⌐p(t1, ... ,tn). V pravidle sa nemôže vyskytnúť žiadny funkčný symbol. Anulovateľný logický program je trojica (F, R, >) pozostávajúca z množiny F faktov, konečnej množiny R anulovateľných pravidiel a acyklickej binárnej relácie > nad R (konkrétne množiny dvojíc r>r’ kde r a r’ sú návestia pravidiel v R).
Nemonotónne pravidlá Popis problému: Prenajatie apartmánu – aktivita, ktorá je časovo náročná a únavná. Karol hľadá apartmán, majúci aspoň 45 m2 s dvoma spálňami. Ak sa nachádza na treťom poschodí alebo vyššie, dom musí mať výťah. Taktiež domáce zvieratká musia byť dovolené. Karol je ochotný zaplatiť 300$ za apartmán v centre s rozlohou 45 m2 alebo 250$ za podobný byt na predmestí. Je ochotný zaplatiť 5$ za každý m2 na viac a 2$ za každý m2 záhrady. Nemôže zaplatiť viac ako 400$. Ak by bola taká voľba, uvítal by lacnejší variant. Najvyššou prioritou je priestor na viac. Druhoradou prioritou je záhrada.
Nemonotónne pravidlá Formalizácia požiadaviek: rozloha(x,y)y je veľkosť apartmánu x v m2 spálne(x,y)x má y spální cena(x,y)y je cena x poschodie(x,y)x je na poschodí y záhrada(x,y)x má záhradu veľkosti y výťah(x) v dome bytu x je výťah zvieratá(x) v x sú dovolené domáce zvieratá centrum(x)x je v centre Môžeme použiť nasledovné predikáty: akceptovateľný(x) apartmán x vyhovuje požiadavkám Karola ponuka(x,y) Karol je ochotný zaplatiť y$ za byt x
Nemonotónne pravidlá Formalizácia požiadaviek: A priori vyhovuje každý apartmán: r1: ═> akceptovateľný(X) Ale neakceptuje sa riešenie, ktoré nevyhovuje hoci jedinej požiadavke: r2: spálne(X,Y), Y<2 ═> ¬akceptovateľný(X) r3: rozloha(X,Y), Y<45 ═> ¬akceptovateľný(X) r4: ¬zvieratá(X) ═> ¬akceptovateľný(X) r5: poschodie(X,Y), Y>2, ¬výťah(X) ═> ¬akceptovateľný(X) r6: cena(X,Y), Y>400 ═> ¬akceptovateľný(X) Pravidlá r2 – r6 sú výnimkami pravidla r1, preto platí: r2>r1, r3>r1, r4>r1, r5>r1, r6>r1
Nemonotónne pravidlá Formalizácia požiadaviek - výpočet ceny: r7: rozloha(X,Y), Y>=45, záhrada(X,Z), centrum(X) ═> ponuka(X, 300+2Z+5*( Y-45)) r8: rozloha(X,Y), Y>=45, záhrada(X,Z), ¬centrum(X) ═> ponuka(X, 250+2Z+5*( Y-45)) Apartmán je vyhovujúci iba ak Karolova maximálna ponuka je väčšia ako cena špecifikovaná domácim pánom: r9: ponuka(X,Y), cena(X,Z), Y < Z ═> ¬akceptovateľný(X) r9>r1
Nemonotónne pravidlá Reprezentácia dostupných apartmánov: Apartmán a1 je možné popísať napríklad takto: spálne(a1, 1) rozloha(a1, 50) centrum(a1) poschodie(a1, 1) ¬výťah(a1) zvieratá(a1) záhrada(a1,0) cena(a1, 300)
Nemonotónne pravidlá Reprezentácia dostupných apartmánov: Ponuky bytov môžu byť skladované v relačnej databáze. Zisťujeme, a1 nevyhovuje, lebo má iba 1 spálňu; a4 a a6 nepovoľujú domáce zvieratá; a2 má privysokú cenu ale a3, a5, a7 vyhovujú.
Nemonotónne pravidlá Výber apartmánu: Selekcia sa sústreďuje na relevantné byty. Redukcia sa môže uskutočniť ešte pred samou selekciou A to uvažovaním preferencií: r10: lacnejší(X) ═> rent(X) r11: lacnejší(X), záhrada(X) ═> rent(X) r12: lacnejší(X), väčší(X) ═> rent(X) r12 > r10 r12 > r11 r11> r10
Nemonotónne pravidlá Výber apartmánu: Prerekvizity môžu byť odvodené použitím predchádzajúcich pravidiel: lacnejší(a3) lacnejší(a5) väčší(a3) väčší(a7) záhrada naviac(a5) Teraz je možné odvodiť rozhodnutie prenajať a3:
Nemonotónne pravidlá v XML • V porovnaní s monotónnymi pravidlami majú nemonotónne • anulovateľné pravidlá odlišnú syntax: • Neobsahujú žiadne funkčné symboly. • Negované atómy sa môžu vyskytnúť v hlave aj v tele pravidla. • Každé pravidlo má návestie. • Okrem pravidiel a faktov, program obsahuje údaj o prioritách pravidiel
Nemonotónne pravidlá v XML Uvažujme anulovateľný program: r1: p(X) ═> s(X) r2: r(X) ═> ⌐s(X) p(a) r(a) a r1>r2 Použijeme <stronger> tag na reprezentáciu priorít: <rule id = “r1“> <head> <atom> <predicate>s</predicate> <term> <var>X</var> </term> </atom> </head> <body> <atom> <predicate>p</predicate> <term> <var>X</var> </term> </atom> </body> </rule>
Nemonotónne pravidlá v XML Fakt p(a) je reprezentovaný nasledovne: <fact> <atom> <predicate>p</predicate> <term> <const>a</const> </term> </atom> </fact> Reprezentácia priority r1>r2 bude: <stronger superior =“r1“ inferior =“r2“/>
Nemonotónne pravidlá v XML DTD Program pozostáva pravidiel, faktov a relácií definujúcich priority: <!ELEMENT program ((rule|fact|stronger)*)> Fakt pozostáva z atomických formúl alebo ich negácií: <!ELEMENT fact (atom|neg)> <!ELEMENT fact (atom)> Pravidlo pozostáva z elementu hlavy, tela a atribútu id: <!ELEMENT rule (head|body)> <!ATTLIST rule id ID #IMPLIED> Hlava a telo sú definované ako monotónne pravidlá, môžu obsahovať negované atómy: <!ELEMENT head (atom|neg)> <!ELEMENT body ((atom|neg)*)> Atomická formula pozostáva z predikátu nasledovaného množinou premenných a konštánt: <!ELEMENT atom (predicate, (var|const)*)>
Nemonotónne pravidlá v XML DTD Element definujúci reláciu priority používa dva atribúty odpovedajúce nadradenému a podradenému pravidlu: <!ELEMENT stronger EMPTY)> <!ELEMENT stronger superior IDREF #REQUIRED> inferior IDREF #REQUIRED> Predikáty, konštanty a premenné sú atomického typu: <!ELEMENT predicate (#PCDATA)> <!ELEMENT var (#PCDATA)> <!ELEMENT const (#PCDATA)> Otázka je zoznamom atomických formúl: <!ELEMENT query (atom*)>