Mata Kuliah: Kecerdasan Artifisial (AI401) | 3 SKS
Setelah pertemuan ini, mahasiswa mampu:
Pada Pertemuan 9, kita mempelajari:
β οΈ Tapi... logika proposisional punya keterbatasan besar!
Masalah: "Semua tentara harus berani"
Pβ β Qβ (Adi berani)
Pβ β Qβ (Budi berani)
Pβ β Qβ (Citra berani)
... β proposisi!
βx [Tentara(x) β Berani(x)]
Satu kalimat untuk semua!
| Keterbatasan | Penjelasan | Solusi FOL |
|---|---|---|
| Tidak ada objek | Tidak bisa merujuk pada "Drone Alpha-7" | Konstanta, variabel |
| Tidak ada relasi | Tidak bisa menyatakan "X lebih cepat dari Y" | Predikat n-ary |
| Tidak ada kuantifikasi | Tidak bisa menyatakan "semua" atau "ada" | Kuantor β, β |
Disebut juga:
Gambar 2.1: Elemen-elemen sintaks First-Order Logic
Merujuk pada objek spesifik
Adi, BudiDroneAlpha7JakartaSkuadron11Placeholder untuk objek belum ditentukan
x, y, z| Jenis | Contoh | Arti |
|---|---|---|
| Unary (1 argumen) | Pilot(Adi) |
Adi adalah pilot |
| Binary (2 argumen) | LebihCepat(x, y) |
x lebih cepat dari y |
| Ternary (3 argumen) | Dikirim(x, y, z) |
x dikirim dari y ke z |
| Fungsi | Contoh | Hasil |
|---|---|---|
komandanDari(x) |
komandanDari(Adi) |
objek (orang) |
markasSkuadron(s) |
markasSkuadron(Skuadron11) |
objek (lokasi) |
β οΈ Predikat vs Fungsi: Predikat β nilai kebenaran (true/false). Fungsi β objek.
Definisi rekursif:
AdixkomandanDari(Adi)markasSkuadron(komandanDari(x))Pilot(Adi)Menembak(DroneA, TargetB)komandanDari(Adi) = BudiPilot(Adi) β§ Berani(Adi)Β¬Musuh(X, Y)Pilot(x) β Terlatih(x)π‘ Konnektif (Β¬, β§, β¨, β, β) sama seperti logika proposisional!
Contoh:
βx [Tentara(x) β Berani(x)]βx [Drone(x) β PunyaSensor(x)]π Pola umum: βx [Kategori(x) β Properti(x)]
Gunakan implikasi (β), bukan konjungsi (β§)!
βx [Tentara(x) β Berani(x)]
"Jika x tentara, maka x berani"
βx [Tentara(x) β§ Berani(x)]
"Semua objek di dunia adalah tentara DAN berani" β termasuk meja, kucing, dll!
Contoh:
βx [KapalSelam(x) β§ DiPerairan(x, Natuna)]π Pola umum: βx [Kategori(x) β§ Properti(x)]
Gunakan konjungsi (β§), bukan implikasi (β)!
βx [KapalSelam(x) β§ DiNatuna(x)]
"Ada objek yang kapal selam DAN di Natuna"
βx [KapalSelam(x) β DiNatuna(x)]
Terpenuhi oleh apapun yang bukan kapal selam!
Urutan kuantor sangat penting!
| FOL | Arti |
|---|---|
βx βy Suka(x,y) |
Setiap orang menyukai setidaknya satu orang |
βx βy Suka(x,y) |
Ada satu orang yang menyukai semua orang |
βx βy Suka(x,y) |
Semua orang menyukai semua orang |
βx βy Suka(x,y) |
Ada seseorang yang menyukai seseorang |
β οΈ βx βy β βy βx β pada βx βy, y bisa berbeda untuk setiap x!
Kuantor saling terhubung melalui negasi:
βx P(x) β‘ Β¬βx Β¬P(x)
βx P(x) β‘ Β¬βx Β¬P(x)
| Kalimat | Ekuivalen |
|---|---|
| Β¬βx Lulus(x) | βx Β¬Lulus(x) β "Ada yang tidak lulus" |
| Β¬βx Sempurna(x) | βx Β¬Sempurna(x) β "Semua tidak sempurna" |
| Kalimat Natural | Pola FOL |
|---|---|
| Semua X adalah Y | βx [X(x) β Y(x)] |
| Ada X yang Y | βx [X(x) β§ Y(x)] |
| Tidak ada X yang Y | βx [X(x) β Β¬Y(x)] |
| Hanya X yang Y | βx [Y(x) β X(x)] |
π‘ "Hanya X yang Y" β implikasi dibalik: Y β X
Knowledge Base:
1. Pilot(Adi)
2. Perwira(Adi)
3. Pangkat(Adi, Kapten)
4. DiSkuadron(Adi, Skuadron11)
5. βx [Pilot(x) β Terlatih(x)]
6. βx [Perwira(x) β βy [Memimpin(x, y)]]
Dengan KB ini, kita bisa menyimpulkan: Terlatih(Adi) β
Substitusi ΞΈ: pemetaan variabel ke term
ΞΈ = {x/Adi} berarti "ganti x dengan Adi"
| Ekspresi 1 | Ekspresi 2 | Hasil |
|---|---|---|
Pilot(x) |
Pilot(Adi) |
ΞΈ = {x/Adi} β |
Suka(x, y) |
Suka(Adi, Budi) |
ΞΈ = {x/Adi, y/Budi} β |
Pilot(Adi) |
Pilot(Budi) |
GAGAL β |
| Kondisi | Hasil | Contoh |
|---|---|---|
| Variabel + term | Berhasil | Unify(x, Adi) = {x/Adi} |
| Konstanta = konstanta | Berhasil | Unify(Adi, Adi) = {} |
| Konstanta β konstanta | Gagal | Unify(Adi, Budi) = FAIL |
| Fungsi sama, arg cocok | Berhasil | Unify(f(x), f(Adi)) = {x/Adi} |
| Occur check gagal | Gagal | Unify(x, f(x)) = FAIL |
Contoh: Unifikasi Suka(x, y) dengan Suka(Adi, z)
Temukan MGU atau tentukan GAGAL:
| # | Ekspresi 1 | Ekspresi 2 | MGU |
|---|---|---|---|
| 1 | P(x, f(y)) |
P(g(z), f(z)) |
{x/g(z), y/z} β |
| 2 | Q(x, x) |
Q(Adi, Budi) |
GAGAL β |
| 3 | R(x, f(x)) |
R(y, y) |
GAGAL (occur check) β |
Gambar 7.1: Proses forward chaining dari fakta ke kesimpulan
KB: Pilot(Adi), Perwira(Adi), Berpengalaman(Adi)
Aturan:
R4: βx [Pilot(x) β Terlatih(x)]
R5: βx [(Perwira(x) β§ Terlatih(x)) β BolehMemimpin(x)]
R6: βx [(BolehMemimpin(x) β§ Berpengalaman(x)) β KandidatKomandan(x)]
Query: KandidatKomandan(Adi)?
| Langkah | Aturan | Fakta Baru |
|---|---|---|
| 1 | R4 {x/Adi} | Terlatih(Adi) |
| 2 | R5 {x/Adi} | BolehMemimpin(Adi) |
| 3 | R6 {x/Adi} | KandidatKomandan(Adi) β |
Gambar 8.1: Proses backward chaining dari goal ke fakta
Goal: KandidatKomandan(Adi)?
KandidatKomandan(Adi) β Goal
βββ R6: BolehMemimpin(Adi)? β Sub-goal 1
β βββ R5: Perwira(Adi)? β
Fakta di KB
β βββ R5: Terlatih(Adi)? β Sub-goal 1b
β βββ R4: Pilot(Adi)? β
Fakta di KB
β β Terlatih(Adi) β
β β BolehMemimpin(Adi) β
βββ R6: Berpengalaman(Adi)? β
Fakta di KB
β KandidatKomandan(Adi) β
TERBUKTI
| Aspek | Forward Chaining | Backward Chaining |
|---|---|---|
| Arah | Fakta β Kesimpulan | Goal β Fakta |
| Nama lain | Data-driven | Goal-driven |
| Strategi | Bottom-up | Top-down |
| Cocok untuk | Banyak query, KB kecil | Satu query spesifik |
| Analogi | "Apa yang bisa disimpulkan?" | "Bagaimana membuktikan X?" |
KB: ServerWeb(S1), TerhubungInternet(S1), VersiLama(S1), ServerDB(S2), TerhubungKe(S1,S2)
R7: ServerWeb(x) β§ TerhubungInternet(x) β DapatDiserang(x)
R8: DapatDiserang(x) β§ VersiLama(x) β Rentan(x)
R9: Rentan(x) β§ TerhubungKe(x,y) β TerancamLateral(y)
R10: TerancamLateral(x) β§ ServerDB(x) β DataTerancam(x)
| Langkah | Fakta Baru |
|---|---|
| 1 | DapatDiserang(S1) |
| 2 | Rentan(S1) |
| 3 | TerancamLateral(S2) |
| 4 | DataTerancam(S2) β οΈ |
Dari pβ', pβ', ..., pβ' dan (pβ β§ pβ β§ ... β§ pβ β q)
Simpulkan: qΞΈ
dimana ΞΈ meng-unifikasi setiap pα΅’' dengan pα΅’
Contoh:
Pilot(Adi) + DiWilayah(Adi, Timur) + [Pilot(x) β§ DiWilayah(x,w) β BisaTerbang(x,w)]
ΞΈ = {x/Adi, w/Timur} β BisaTerbang(Adi, Timur)
Aturan:
Contoh:
βx [Tentara(x) β βy [Senjata(y) β§ Membawa(x,y)]]
β βx [Tentara(x) β Senjata(f(x)) β§ Membawa(x, f(x))]
f(x) = "senjata yang dibawa tentara x"
| Komponen | Fungsi |
|---|---|
| Knowledge Base | Fakta dan aturan dalam FOL |
| Inference Engine | Forward/backward chaining |
| User Interface | Input/output dengan pengguna |
| Explanation | Menjelaskan proses reasoning |
Triple (subjek, predikat, objek) β kalimat atomik FOL
| Knowledge Graph Triple | FOL Equivalent |
|---|---|
| (Adi, tipePesawat, F16) | TipePesawat(Adi, F16) |
| (F16, buatanNegara, AS) | BuatanNegara(F16, AS) |
| (KapalSelam, subClassOf, KapalPerang) | βx [KapalSelam(x) β KapalPerang(x)] |
π‘ Contoh: Google Knowledge Graph, Wikidata, Knowledge graph intelijen
Pertanyaan 1:
Pola FOL yang benar untuk "Semua pilot terlatih" adalah:
π‘ β + β untuk "semua X adalah Y"
Pertanyaan 2:
Apa hasil unifikasi P(x, f(x)) dengan P(Adi, y)?
π‘ Unifikasi argumen 1: x=Adi, lalu argumen 2: f(Adi) dengan y β y=f(Adi)
Pertanyaan 3:
Metode inferensi yang dimulai dari goal dan bekerja mundur ke fakta disebut:
| Konsep | Poin Kunci |
|---|---|
| FOL | Perluasan logika proposisional + objek, relasi, kuantor |
| Elemen | Konstanta, variabel, predikat, fungsi, kuantor |
| β (Universal) | "Untuk semua" β gunakan dengan β |
| β (Eksistensial) | "Ada" β gunakan dengan β§ |
| Unifikasi | Substitusi agar dua ekspresi identik |
| Forward Chaining | Fakta β aturan β fakta baru (data-driven) |
| Backward Chaining | Goal β sub-goals β fakta (goal-driven) |
Probabilitas Bersyarat dan Teorema Bayes
Pertemuan 10: Logika Predikat (First-Order Logic)
Ada pertanyaan?