7.1 Konsep dasar FOL (First Order Logic)
Beberapa konsep dasar pada First Order Logic (FOL) yaitu se- bagai berikut:
- Declarative: menyatakan fakta-fakta terpisah dari mekanisme/prosedur inference.
- Memungkinkan pernyataan informasi yang partial / disjunctive / negated.
- Compositional: “arti” P ∧ Q tergantung arti P dan arti Q.
- Context-independent: arti tidak tergantung konteks.
- Unambiguous: terhadap suatu model, arti sebuah sentence jelas.
Tetapi, kurang expressive. Mis.: “Kalau ada jebakan, di kamar sebelah ada hembusan angin” harus dinyatakan dengan n × n buah sentence propositional logic (PL). Dalam propositional logic (PL), dunia hanya mengandung fakta-fakta. Dalam first order logic (FOL), dunia bisa mengandung:
- Object: di dalam dunia ada orang, bangunan, buku, UB, ITS, UI, SBY, bilangan, warna, hari,...
- Relations: tentang object dalam dunia, ada relasi merah, bulat, cantik, positif, abang dari, lebih besar dari, di atas, terjadi sebelum,...
- Functions: fungsi yang menghasilkan object lain seperti ayah dari, babak final dari, satu lebih dari, kaki kiri dari,...
Hal ini disebut ontological commitment dari sebuah logic yaitu apa saja “isi” dunia yang dijelaskan? Ada juga epistemological commit- ment: “kebenaran” apa yang dapat dinyatakan tentang sebuah sen- tence? Contoh beberapa jenis logic lain:
Tabel 7.1 Contoh Jenis Logic
Language Ontological (isi) Epistemological
(kebenaran)
Propositional Logic facts true/false/unknown
First-order logic facts, objects, relations true/false/unknown Temporal logic facts, objects, relations,
times
true/false/unknown Probability theory facts
Fuzzy logic degree of truth ∈ [0,1] know interval value
Magig logic ? ? ?
7.2 Sintak dan Semantic FOL
7.2.1 Syntax FOL
Beberapa elemen-elemen dasar pada First Order Logic (FOL) yaitu sebagai berikut:
- Constants (objects): KingJohn, 2, UB, ITS, UI, Malang, De- pok.
- Predicates (relations): Brother, Loves, Membenci , Menga- jar ,.
- Functions (functional relations): Sqrt, LeftLegOf , Ayah,...
- Variables: x , y , a, b,...
- Connectives: ∧ ∨ ¬ ⇒ ⇔ - Equality: =
- Quantifiers: ∀ ∃
Definisi dari kalimat Atomic pada FOL adalah sebagai predi- cate (term1,... , termn) atau term1 = term2. Sedangkan untuk definisi term adalah sebagai Function (term1,... , termn) atau constant atau variable dan contoh sebagai berikut:
- Brother (KingJohn, RichardTheLionheart)
- >(Length (LeftLegOf (Richard)), Length(LeftLegOf (KingJohn)))
Sedangkan untuk Kalimat Kompleks pada FOL adalah kalimat kompleks / complex sentence terdiri dari sentence yang digabung- kan dengan connective. Definisi complex sentence yaitu ¬S, S1∧ S2, S∨ S , S ⇒ S , S ⇔ S Contohnya sebagai berikut:
- Sibling (KingJohn, Richard) ⇒ Sibling(Richard , KingJohn) - >(1, 2) ∨ ≤(1, 2)
- >(1, 2) ∧ ¬>(1, 2)
- Belajar (x , SC) ⇒ Mengerti(x , AI)
7.2.2 Semantics FOL
Sama halnya dengan Proposisi Logic (PL), sebuah kalimat FOL bisa juga dikatakan true terhadap sebuah model. Namun, sebuah ka- limat bisa diinterpretasikan banyak cara dalam sebuah model.
Model berisi objects dan relations. Objects adalah elemen-elemen di dalam dunia (domain elements). Sedangkan relations adalah hub- ungan antara elemen-elemen tersebut. Sebuah interpretasi mendefinisikan referent (“yang dipetakan”).
- Constant symbols → objects - Predicate symbols → relations
- Function symbols → functional relations
Arti dari sebuah kalimat FOL yaitu kalimat atomik predi- cate(term1,... , termn) dikatakan bernilai true dalam model m di bawah interpretasi i iff object yang di-refer (term1,... , termn) (di bawah i) terhubung oleh relation yang di-refer oleh predicate (di bawah i) dalam m.
Gambar 7.1 Contoh Sebuah Model
Gambar 7.2 Contoh Sebuah Model (lebih rinci)
7.3 Konteks Penggunaan FOL
Entailment, validity, satisfiability, dll. Didefinisikan untuk semua kemungkinan interpretasi dari semua kemungkinan model! Kalau mau dijabarkan semua kemungkinannya:
For each number of domain elements n from 1 to ∞ For each k-ary predicate Pk in the vocabulary For each possible k-ary relation on n objects For each constant symbol C in the vocabulary For each choice of referent for C from n objects...
Menentukan entailment berdasarkan truth-tableitu adalah hal yang mustahil. Biasanya ada satu interpretasi yang “dimaksudkan”
→ intended interpretation.
• Universal Quantification - Syntax:
Jika S kalimat, ∀ variables S adalah kalimat - Contoh:
“Semua mahasiswa FILKOM UB adalah Genius”
∀ x mahasiswa(x , FILKOM UB) ⇒ Genius (x) - Semantics:
∀ x S bernilai true dalam model m di bawah interpretasi iff S bernilai true untuk semua kemungkinan referent dari x
(setiap object di dalam m).
Dengan kata lain, ∀ x S ≡ conjunction dari semua instanti-
ation S:
(mahasiswa (Ani , FILKOM UB) ⇒ Genius (Ani ))∧
(mahasiswa (Anto, FILKOM UB) ⇒ Genius (Anto))∧
.
(mahasiswa (Zaenal, FILKOM UB) ⇒ Genius (Zaenal))∧
(mahasiswa (Zakky, FILKOM UB) ⇒ Genius (Zakky)) Biasanya, ⇒ adalah operator /connective yang digunakan dengan ∀. Masalah yang sering terjadi yaitu menggunakan ∧ sebagai connective untuk ∀: ∀ x mahasiswa(x , FILKOM UB) ∧ Genius (x) Ka- limat ini berarti “Semua orang adalah mahasiswa FILKOM UB dan Genius”.
• Existential Quantification - Syntax:
Jika S kalimat, ∃ variable S adalah kalimat - Contoh:
“Ada mahasiswa Gunadarma yang pintar”
∃ x mahasiswa(x , Gundarma ) ∧ pintar (x) - Semantics:
∃ x S bernilai true dalam model m di bawah interpretasi iff S bernilai true untuk setidaknya 1 kemungkinan referent dari x (sebuah object di dalam m). Dengan kata lain, ∃ x S
≡ disjunction dari semua instantiation S:
(mahasiswa(Ani , Gundar) ∧ pintar (Ani))∨
(mahasiswa(Anto, Gundar) ∧ pintar (Anto))∨
.
.
(mahasiswa(Zaenal , Gundar) ∧ pintar (Zaenal))∨
(mahasiswa(Zakky , Gundar) ∧ pintar (Zakky))
Biasanya, ∧ adalah operator /connective yang digunakan dengan ∃. Masalah yang sering terjadi yaitu menggunakan ⇒ sebagai connective untuk ∃: ∃ x mahasiswa(x , Gundar ) ⇒ pintar (x ). Kalimat ini true jika ada setidaknya 1 orang (object) yang tidak kuliah di Gunadarma.
7.4 Rekayasa Pengetahuan dengan FOL
Beberapa sifat ∀ (For All) dan ∃ (There Exist):
- ∀ x ∀ y S sama dengan ∀ y ∀ x S, biasa ditulis ∀ x , y S - ∃ x ∃ y S sama dengan ∃ y ∃ x S, biasa ditulis ∃ x , y S - ∃ x ∀ y S TIDAK sama dengan ∀ y ∃ x S!
- ∃ x ∀ y Mencintai (x , y )
“Ada (sekurang-kurangnya) seseorang yang mencintai semua orang di dunia.”
- ∀ y ∃ x Mencintai (y , x )
“Semua orang di dunia mencintai sekurang-kurangnya satu orang”.
Quantifier bisa dinyatakan dengan yang lain:
∀ x Doyan(x , Bakso) sama dengan ¬∃ x ¬Doyan(x , Bakso)
∃ x Doyan(x , Cilok) sama dengan ¬∀ x ¬Doyan(x , Cilok). Berikut ada- lah contoh kalimat dari Convert to FOL:
- “Ayah adalah orangtua”
∀ x , y Ayah(x , y) ⇒ Orangtua(x , y) - “Hubungan saudara berlaku simetris”
∀ x , y Saudara(x , y) ⇔ Saudara(y , x)
- “Ibu adalah orangtua berjenis kelamin perempuan”
∀ x , y Ibu(x , y) ⇔ Orangtua(x , y) ∧ Perempuan(x) - “Sepupu adalah anak dari saudara orangtua”
∀ x , y Sepupu(x , y) ⇔ ∃ ox , oy Orangtua(ox , x) ∧ Saudara(ox , oy) ∧ Orangtua(oy , y)
Kalimat term1 = term2 bernilai true di bawah sebuah interpretasi iff term1 and term2 me-refer ke object yang sama. Contoh sebagai berikut:
- Ayah(Anto) = Abdul adalah satisfiable - Anto = Abdul juga satisfiable!
- Anto = Anto adalah valid.
Bisa digunakan dengan negasi untuk membedakan dua term:
∃ x , y Mencintai (Anto, x ) ∧ Mencintai(Anto, y ) ∧¬(x = y )
- ∀ x , y Sibling(x , y ) ⇔ (¬(x = y ) ∧ ∃ m, f ¬(m = f ) ∧ Parent (m, x ) ∧ Parent (f , x ) ∧ Parent (m, y ) ∧ Parent (f , y )) Kita bisa menggunakan FOL sebagai KRL (Knowledge Representation Language) sebuah KBA. Pertama-tama, kita berikan informasi ke KB (TELL). Kalimat FOL yang ditambahkan ke KB disebut assertion. Contohnya:
- TELL(KB,King(John))
- TELL(KB,∀ x King(x ) ⇒ Person(x ))
Lalu, kita bisa memberikan query, atau bertanya, kepada KB (ASK). Contohnya:
- ASK(KB,King(John)) jawabannya adalah true.
- ASK(KB,Person(John)) jawabannya adalah true.
- ASK(KB,∃ x Person(x )) jawabannya adalah {x /John}
Sebuah query dengan existential variable bertanya kepada KB:
“Apakah ada x sedemikian sehingga... ?” Bisa saja jawabannya “ya”
atau “tidak”, tetapi akan lebih baik jika jawabannya adalah nilai (ref- erent) x di mana query bernilai true. Bentuk jawaban demikian dise- but substitution, atau binding list: himpunan pasangan varia- ble/term. Untuk kalimat S dan substitution σ, Sσ adalah hasil “pen- gisian” S dengan σ:
- S = LebihPintar (x , y ) - σ = {x /Ani , y /Anto}
- Sσ = LebihPintar (Ani , Anto)
ASK(KB,S) mengembalikan (satu? semua?) σ sedemikian sehingga KB
|= Sσ.
• FOL sbg KRL utk KBA LATM dlm WW
Representasi hasil percept dari sensor:
Percept ([bau, angin, kilau], waktu) (perhatikan penggunaan list agar rapi):
- TELL(KB,Percept ([None, None, None], 1)) - TELL(KB,Percept ([Smell , None, None], 2)) - TELL(KB,Percept ([None, Breeze, Glitter ], 3))
Untuk menentukan tindakan yang diambil:
ASK(KB,∃ t TindakanTerbaik (t , 3)). Data “mentah” dari sensor perlu diolah:
- ∀ a, k , w Percept ([Smell , a, k ], w) ⇒ MenciumBau(w) - ∀ b, k , w Percept ([b, Breeze, k ], w) ⇒ MerasaHembus(w) - ∀ b, a, w Percept ([b, a, Glitter ], w) ⇒ MelihatKilauan(w) Tindakan “rational reflex” bisa dinyatakan dalam kalimat, mis:
∀ w MelihatKilauan(w) ⇒ TindakanTerbaik (Grab, w).
• Menyatakan Aturan Main Wumpus World - Tambah assertion mengenai kamar:
o ∀ k , w Di(Agent , k , w) ∧ MenciumBau(w) ⇒ KmrBusuk (k) o ∀ k , w Di(Agent , k , w) ∧ MerasaHembus(t) ⇒
KmrAngin(k)
o ∀ k , w Di(Agent , k , w) ∧ MelihatKilauan(t) ⇒ KmrEmas(k) - “Di kamar sebelah lubang jebakan ada hembusan angin”
o Diagnostic rule: simpulkan sebab dari akibat:
∀ y KmrAngin(y) ⇒ ∃ x Jebakan(x) ∧ Sebelahan(x , y)
∀ y ¬KmrAngin(y) ⇒ ¬∃ x Jebakan(x) ∧ Sebelahan(x , y) o Causal rule: simpulkan akibat dari sebab:
∀ x Jebakan(x) ⇒ (∀ y Sebelahan(x , y) ⇒ KmrAngin(y ))
∀ x (∀ y Sebelahan(x , y) ⇒ ¬Jebakan(y)) ⇒ ¬KmrAngin(x) - Definisi predikat KmrAngin: ∀ y KmrAngin(y) ⇔ [∃ x Jebakan(x)
∧ Sebelahan(x , y)]
Diagnostic vs. Causal (model-based) reasoning penting, mis: di- agnosa medis secara AI (dulu diagnostic, sekarang model-based).
Proses merancang kalimat-kalimat KRL yang dengan tepat “merep- resentasikan” sifat dunia/masalah disebut knowledge engineering.
“Memrogram” secara deklaratif yaitu pengkodean fakta dan aturan domain-specific. Jargon yang biasanya digunakan adalah Agent pro- grammer = knowledge engineer. Mekanisme/proses penjawaban query → inference rule yang domain-independent.
7.5 Latihan Individu
1. Ubahlah “Kalimat” dibawah ini menjadi bentuk “FOL”!
a. “Ayah adalah orangtua berjenis kelamin laki-laki”.
b. “Paman adalah saudara orangtua”.
c. ∀ x,y Paman(x,y) => oy OrangTua(oy,y) ^ Saudara(oy,x) ^ Laki(x)
d. “Tidak ada jamur merah yang beracun”.
2. Ubahlah “FOL” dibawah ini menjadi bentuk “Kalimat” ! a. ∀ x mahasiswa(x , FILKOM UB) ⇒ Genius (x) b. x (jamur(x) ^ merah(x)) ⇒ beracun(x)
7.6 Tugas Kelompok
1. Jelaskan perbedaan antara FOL dan PL? (Optional) 2. Ubahlah “Kalimat” dibawah ini menjadi bentuk “FOL”!
a. “Cucu adalah anak dari anak saya”.
b. “Paman dan Bibi adalah saudara”.
c. “Ada dua jamur merah”. (Optional) d. “Pohon kelapa itu tinggi”. (Optional)
3. Ubahlah “FOL” dibawah ini menjadi bentuk “Kalimat”! (Op- tional)
a. x t (person(x) ^ time(t)) ⇒ can-fool(x,t)
b. ( x)( y) above(x,y) ⇔ (on(x,y) v ( z) (on(x,z) ^ above(z,y)))
4. Buatlah kalimat yang menyatakan catatan berita terkini yang terdiri minimal 4 kalimat, kemudian ubah dalam bentuk “FOL”.