Upload
others
View
16
Download
0
Embed Size (px)
Citation preview
Logiky a inferencia
doc. Ing. Kristína Machová, CSc.
http://people.tuke.sk/kristina.machova
Osnova:
1. Úvod
2. Monotónne pravidlá
3. Monotónne pravidlá v XML
4. Nemonotónne pravidlá
5. 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ť. 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).
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)}
A to je nepravdivé (Lebo reprezentácia programu P a otázky v predikátovej logike
Vytvárajú protirečenie. Symbol╞ ... 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ť aj q(a) aj ⌐q(a).
Dve pravidlá blokujúce 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 ═> Lkde 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 bytu - aktivita, ktorá je časovo náročná a únavná.
Karol hľadá byt, 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ť 300Eur za byt v centre s rozlohou 45 m2
alebo 250Eur za podobný byt na predmestí.
Je ochotný zaplatiť 5Eur za každý m2 na viac
a 2Eur za každý m2 záhrady.
Nemôže zaplatiť viac ako 400Eur.
Uvíta 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ť bytu 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) byt x vyhovuje požiadavkám Karola
ponuka(x,y) Karol je ochotný zaplatiť yEur za byt x
Nemonotónne pravidlá
Formalizácia požiadaviek:
A priori vyhovuje každý byt:
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))
Byt 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 bytov:
Napríklad byt a1 je možné popísať nasledovne:
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 bytov:
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ú.
Byt Spálne Rozloha Centrum Poschodie Výťah Zvieratá Záhrada Cena
a1 1 50 yes 1 no yes 0 300
a2 2 45 yes 0 no yes 0 335
a3 2 65 no 2 yes yes 0 350
a4 2 55 no 1 yes no 15 330
a5 3 55 yes 0 no yes 15 350
a6 2 60 yes 3 no no 0 370
a7 3 65 yes 1 no yes 15 375
Nemonotónne pravidlá
Výber bytu na prenájom:
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 bytu:
Použitím predchádzajúcich pravidiel odvodíme:
lacnejší(a3)
lacnejší(a5)
väčší(a3)
väčší(a7)
záhrada naviac(a5)
Výsledné rozhodnutie je 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
údaje 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*)>