380 likes | 1.16k Views
การแทนความรู้ทางปัญญาประดิษฐ์ โดยตรรกะ เพรดิเคต. ตรรกะ เพรดิเคต (Predicate Logic). ไวยากรณ์และความหมาย (Syntax and Semantic) การอนุมาน ( Inference ) การทำให้เท่ากัน ( Unification ) รี โซลู ชัน ( Resolution ). ตรรกะ เพตดิเคต (Predicate Logic).
E N D
การแทนความรู้ทางปัญญาประดิษฐ์ โดยตรรกะเพรดิเคต ตรรกะเพรดิเคต(Predicate Logic) ไวยากรณ์และความหมาย (Syntax and Semantic) การอนุมาน (Inference) การทำให้เท่ากัน (Unification) รีโซลูชัน (Resolution)
ตรรกะเพตดิเคต(Predicate Logic) • การแทนความรู้ (Knowledge Representation)ทางปัญญาประดิษฐ์มีหลายวิธีเช่น • Rules • Frames • Bayesian Networks • Predicate Logic • อื่นๆ
Syntax และ Semantic • เพรดิเคตลอจิก มีองค์ประกอบดังนี้ • สัญลักษณ์เพรดิเคต (Predicate Symbol) ใช้ตัวอักษร 1 ตัวขึ้นไป ขึ้นต้นด้วยตัวอักษรตัวใหญ่ เช่น P, Q, R, Father หรือ FATHER เป็นต้น • สัญลักษณ์ตัวแปร (Variable Symbol) ใช้ตัวอักษร 1 ขึ้นไป เป็นตัวอักษรตัวเล็ก เช่น x, y และ z เป็นต้น • สัญลักษณ์ฟังก์ชัน (Function Symbol) ใช้ตัวอักษร 1 ขึ้นไป เป็นตัวอักษรตัวเล็ก เช่น f, g และ h เป็นต้น • สัญลักษณ์ค่าคงที่ (Constant Symbol) ใช้ตัวอักษร 1 ตัวขึ้นไป ขึ้นต้นด้วยตัวอักษรตัวใหญ่ เช่น A, B, C, Somchaiหรือ SOMCHAI เป็นต้น • เครื่องหมายวงเล็บ เช่น { }, ( ) และ [ ] เป็นต้น
Syntax และ Semantic (ต่อ) • สูตรที่ถูกต้องตามหลักไวยากรณ์ของตรรกะเพรดิเคต เรียกว่า สูตรรูปดี (well form formula; wff) • สูตรอะตอม (Atomic Formula) คือสูตรที่เล็กที่สุดที่ถูกต้องตามหลักไวยากรณ์เช่น FATHER(SOMCHAI, SOMSRI) SOMCHAI และ SOMSRI คือค่าคงที่ (Constant) Predicate Symbol ใช้แสดงความสัมพันธ์ของสิ่งต่างๆใน domain นั้น เช่น
ตัวอย่างการเขียนเพรดิเคตตรรกะตามหลักไวยากรณ์ตัวอย่างการเขียนเพรดิเคตตรรกะตามหลักไวยากรณ์ • FATHER(x,y) • Daughter(SOMSRI,x) • SOMSRI เป็นค่าคงที่ ส่วน x เป็นตัวแปร • HAS-MONEY(SOMCHAI,salary(SOMCHAI)) • salary เป็นฟังก์ชันที่ใช้หาค่าเงินเดือน xและ y คือตัวแปร (VariableSymbol)
การแปลความหมาย (Interpretation) • การแปลความหมาย คือ การกำหนดค่าให้กับเพรดิเคต ตัวแปร และฟังก์ชัน ใน domain นั้นๆของสูตรอะตอม • เมื่อมีการนิยามการแปลความหมายให้กับสูตรอะตอมแล้ว เราสามารถหาค่าทางตรรกะให้กับสูตรอะตอมนั้นๆได้ ว่าเป็น จริง (True) หรือ เท็จ (False) เช่น FATHER(x,y) • กำหนดให้ FATHER คือความสัมพันธ์เป็นพ่อ โดย x เป็นพ่อของ y และกำหนดให้ x คือนาย ก. และ y คือนาย ข.
ตัวเชื่อม (Connective) • ตัวเชื่อมใช้เชื่อมสูตรอะตอมหลายสูตรเข้าด้วยกันเพื่อเป็นสูตรใหม่ • ตัวเชื่อมในเพรดิเคตตรรกะมีดังนี้ • และ (and) ใช้สัญลักษณ์ • หรือ(or)ใช้สัญลักษณ์ • นิเสธ (not) ใช้สัญลักษณ์ ~ • ถ้า-แล้ว (If-then)(Implication)ใช้สัญลักษณ์ • การใช้ตัวเชื่อมและ • John lives in a yellow house. LIVE(JOHN,HOUSE-1)^COLOR(HOUSE-1,YELLOW)
ตัวเชื่อม (Connective)(ต่อ) • การใช้ตัวเชื่อมนิเสธ • John don’t write computer-chess ~WRITE(JHON,COMPUTER-CHESS) • การใช้ตัวเชื่อมถ้า-แล้ว • If the car belongs to John then it is green OWNS(JHON,CAR-1) COLOR(CAR-1,GREEN)
ตัวบ่งปริมาณ (Quantifier) • ตัวบ่งปริมาณเอกภพ (Universal Quantifier) ใช้สัญลักษณ์ • ตัวบ่งปริมาณมีอยู่ (Existential Quantifier) ใช้สัญลักษณ์ • ตัวอย่างการใช้ตัวบ่งปริมาณ • All Elephants are gray. • There is a person who wrote computer-chess. • เนื้อหาที่จะสอนในเรื่องนี้จะกล่าวถึง First-order predicate logic เท่านั้น
ตัวอย่างการเขียนตรรกะเพรดิเคตตัวอย่างการเขียนตรรกะเพรดิเคต สูตรรูปดีที่ถูกต้อง เช่น สูตรรูปดีที่ไม่ถูกต้อง เช่น
การแทนความรู้ทางปัญญาประดิษฐ์ โดยตรรกะเพรดิเคต ตรรกะเพรดิเคต(Predicate Logic) ไวยากรณ์และความหมาย (Syntax and Semantic) การอนุมาน (Inference) การทำให้เท่ากัน (Unification) รีโซลูชัน (Resolution)
การอนุมาน (Inference) • กฎโมดัสโพเน็นส์(Modus Ponens) W1 W2 • กฎเจาะจงตัวแปรเอกภาพ (Universal Specialization) W1 W2
ตัวอย่างการอนุมาน Universal Specialization Modus Ponens สูตรใหม่ที่ได้จากการอนุมาน เรียกว่า Theorem
การแทนความรู้ทางปัญญาประดิษฐ์ โดยตรรกะเพรดิเคต ตรรกะเพรดิเคต(Predicate Logic) ไวยากรณ์และความหมาย (Syntax and Semantic) การอนุมาน (Inference) การทำให้เท่ากัน (Unification) รีโซลูชัน (Resolution)
การแทนค่า (Substitution) • การแทนค่า คือการแทนพจน์ (term)ให้กับตัวแปรในสูตร โดยสูตรที่ได้จากการแทนค่าเรียกว่า ตัวอย่างการแทน (Substitution Instance) • ตัวอย่าง Substitution Instance ของ P(x,f(y),B) เช่น P(z,f(w),B) หรือ P(C,f(A),B) • การแทนค่าสามารถเขียนให้อยู่ในรูปของเซ็ตคู่ลำดับ s = {t1/v1, t2/v2,…,tn/vn} โดย tnคือ term ที่ n นำมาแทนค่าใน variable ที่ n (vn)
การแทนค่า (Substitution) (ต่อ) • ตัวอย่างเซ็ตคู่ลำดับของการแทนค่า • ถ้า Substitution Instance ของ P(x,f(y),B) คือ P(z,f(w),B) สามารถเขียนคู่ลำดับของการแทนค่าได้คือ s1= {z/x, w/y} • ถ้า Substitution Instance ของ P(x,f(y),B) คือ P(C,f(A),B) สามารถเขียนคู่ลำดับของการแทนค่าได้คือ s2= {C/x, A/y} • เราสามารถเขียนสูตรใหม่ที่ได้จากการแทนค่า s ในสูตร E (ตัวอย่างข้างบน)ดังนี้ • P(z,f(w),B) = P(x,f(y),B)s1 • P(C,f(A),B) = P(x,f(y),B)s2
การทำให้เท่ากัน (Unification) • สูตร 2 สูตรใดๆ (สูตร E1และ สูตร E2)สามารถทำให้เท่ากันได้ ถ้ามีตัวแทนค่า (s)ที่ทำให้ (E1)s = (E2)s โดยเราจะเรียก s ว่า ตัวทำให้เท่ากัน (Unifier)ของ E1และ E2 เช่น • E1 = P(x,f(y),B) และ E2= P(x,f(B),B) • Unifier ของ E1 และ E2คือ s = {A/x,B/y} • (E1)s = P(A,f(B),B) และ (E2)s = P(A,f(B),B) • ตัวทำให้เท่ากันกว้างสุด (Most General Unifier; mgu) คือตัวทำให้เท่ากันที่ใช้การแทนค่าที่น้อยที่สุด • mguของ E1 = P(x,f(y),B) และ E2= P(x,f(B),B) คือ s = {B/y} ซึ่งจะได้ (E1)s = (E2)s = P(x,f(B),B)
อัลกอริทึมในการหา mgu Algorithm Unify(L1,L2) 1. IfL1หรือ L2 เป็นตัวแปรหรือค่าคงที่ Then IfL1= L2 Thenคืนค่า NIL Else If L1เป็นตัวแปร Then IfL1ปรากฏใน L2 Thenคืนค่า {Fail} Else คืนค่า {L2/L1} Else IfL2เป็นตัวแปร Then IfL2ปรากฏใน L1 Thenคืนค่า {Fail} Else คืนค่า {L1/L2} Elseคืนค่า {Fail}
อัลกอริทึมในการหา mgu(ต่อ) 2. Ifสัญลักษณ์เพรดิเคต หรือ สัญลักษณ์ฟังก์ชัน ของ L1 ไม่เท่ากับ L2 Thenคืนค่า {Fail} 3. IfL1 มีจำนวน argument ไม่เท่ากับ L2 Thenคืนค่า {Fail} 4. SUBST = NIL 5. Fori =1 to จำนวน argument ของ L1 Do 5.1 เรียก algorithm unify ด้วย argumentตัวที่ iของ L1 และ L2 เก็บผลลัพธ์ที่ S 5.2 If S = Fail Then คืนค่า {Fail} 5.3 If S ไม่เท่ากับ NIL Then 5.3.1 แทนค่าพจน์ (term)ให้กับตัวแปรใน L1 และ L2 ตาม S 5.3.2 SUBST = append(S,SUBST) 6. คืนค่า SUBST
การแทนความรู้ทางปัญญาประดิษฐ์ โดยตรรกะเพรดิเคต ตรรกะเพรดิเคต(Predicate Logic) ไวยากรณ์และความหมาย (Syntax and Semantic) การอนุมาน (Inference) การทำให้เท่ากัน (Unification) รีโซลูชัน (Resolution)
รีโซลูชัน (Resolution) • รีโซลูชัน เป็นการอนุมานที่ใช้กับสูตรที่เป็นอนุประโยค(Clause) • อนุประโยค (Clause) คือสูตรที่อยู่ในรูป disjunction ของ literals (การ or กันของ atomic formulas) เช่น P(x) v Q(x,y) v ~R(A) • การแปลงตรรกะเพรดิเคตไปเป็นอนุประโยค 1. Eliminate implication symbols : เปลี่ยนรูป ไปเป็น 2.Reduce scope of negation symbols
การแปลงตรรกะเพรดิเคตไปเป็นอนุประโยคการแปลงตรรกะเพรดิเคตไปเป็นอนุประโยค 3. Standardize variables : เปลี่ยนชื่อตัวแปรตามขอบเขตของตัวบ่งปริมาณ 4. Eliminate existential quantifiers : แทนค่าตัวแปรด้วย skolem function 5. Convert to prenex form ย้ายตัวบ่งปริมาณเอกภพมาอยู่หน้าสุด โดยรูปแบบที่ได้ใหม่นี้เรียกว่า prenex form
การแปลงตรรกะเพรดิเคตไปเป็นอนุประโยค (ต่อ) 6. Put prenex form in conjunctive normal form : ทำให้สูตรทุกตัวเชื่อมกันด้วย And (^) 7. Eliminate universal quantifier : ตัดตัวปริมาณเอกภพทิ้งได้เลย เนื่องจากตัวแปรทุกตัวมีตัวบ่งปริมาณเป็น ตัวบ่งปริมาณเอกภพทั้งสิ้น 8. Eliminate ^ symbol : แทนด้วยเซต {X1,X2,…,Xn} โดยที่ Xi เป็น disjunction of literals หรือ อนุประโยคซึ่งจะได้ 3 อนุประโยค
การแปลงตรรกะเพรดิเคตไปเป็นอนุประโยค (ต่อ) 9. Rename variables : เปลี่ยนชื่อตัวแปร เพื่อให้แต่ละอนุประโยคมีตัวแปรไม่ซ้ำกัน
รีโซลูชันของอนุประโยคพื้นฐานรีโซลูชันของอนุประโยคพื้นฐาน • อนุประโยคพื้นฐาน (Ground Clause) คืออนุประโยคที่ไม่มีตัวแปร • ในการทำรีโซลูชันของอนุประโยคพื้นฐานจะรับอนุประโยคพ่อแม่ (Parent Clause) 2 อนุประโยค ส่วนอนุประโยคผลลัพธ์ที่ได้เรียกว่า รีโซเวนท์(Resolvent)
รีโซลูชันทั่วไป (General Resolution) • ในการทำรีโซลูชันกับอนุประโยคที่มีตัวแปรนั้น ต้องใช้การทำให้เท่ากัน เพื่อทำให้อนุประโยคพ่อแม่ประกอบด้วยสัจพจน์เติมเต็ม (Complimentary Literals) • สัจพจน์เติมเต็ม คือสัจพจน์ (Literals) ที่ต่างกันเฉพาะเครื่องหมายนิเสธ (~) เช่น • P(x) และ ~P(x)
รีโซลูชันทั่วไป (General Resolution) (ต่อ) การทำรีโซลูชันทั่วไปประกอบด้วยขั้นตอนดังนี้ 1. กำหนดให้ Parent Clause คือ {Li} และ {Mi} 2. {li} และ {mi} เป็นเซ็ตย่อยของ {Li} และ {Mi} ตามลำดับ โดยมี s ซึ่งเป็น mguของ {li} และ {~mi} 3. Resolventของอนุประโยค {Li} และ {Mi}คือ {{Li} - {li}}s{{Mi} - {mi}}s 4. สำหรับ 2 อนุประโยคใดๆ อาจมีการทำ Resolvent มากกว่า 1 ครั้ง ขึ้นอยู่กับการเลือก {li} และ {mi}
ตัวอย่างการทำรีโซลูชันทั่วไปตัวอย่างการทำรีโซลูชันทั่วไป กำหนดให้ {Li} = {P[x,f(A)],P[x,f(y)],Q(y)} {Mi} = {~P[z,f(A)],~Q(z)} {li} = {[P(x,f(A)]} {mi} = {~P[z,f(A)} จาก {li} และ {mi} จะได้ • จะได้ Resolventเป็น {P[z,f(y)], Q(y), ~Q(z)} • แต่ถ้าให้ {li} = {P[x,f(A)],P[x,f(y)]} และ {mi} = {~P[z,f(A)} • จะได้ Resolventเป็น {Q(A),~Q(z)} s = {z/x} s = {z/x,A/y}
การปฏิเสธแบบรีโซลูชัน (Resolution Refutation) • สัจพจน์ (Literals) 2 ตัวใดๆจะขัดแย้งกันหรือไม่ จะดูว่าสัจพจน์ตัวหนึ่งสามารถทำให้เท่ากัน (unify) กับนิเสธของสัจพจน์อีกตัวหนึ่งได้หรือไม่ เช่น • MAN(x) กับ ~MAN(Spot) ขัดแย้งกัน • วิธีการปฏิเสธแบบรีโซลูชัน คือการพิสูจน์ว่าสูตร (wff) W เป็นผลสรุปของเซ็ตของสูตร K ทำได้โดยการพิสูจน์ว่า ขัดแย้งกัน เนื่องจากเราสามารถทำให้ MAN(x) เท่ากันกับ MAN(Spot)
การปฏิเสธแบบรีโซลูชัน (Resolution Refutation) (ต่อ) K = {MAN(Marcus),~MAN(x) V MORTAL(x)} W = MORTAL(Marcus) = {MAN(Marcus),~MAN(x) V MORTAL(x),~MORTAL(Marcus)} ~MORTAL(Marcus) ขัดแย้งกับ MAN(Marcus) และ ~MAN(x) V MORTAL(x) แสดงว่า MORTAL(Marcus) เป็นผลสรุปของ K
การปฏิเสธแบบรีโซลูชัน (Resolution Refutation) (ต่อ) K = {MAN(Marcus),~MAN(x) V MORTAL(x)} W = MORTAL(Marcus) = {MAN(Marcus),~MAN(x) V MORTAL(x),~MORTAL(Marcus)} จากการทำรีโซลูชันระหว่าง ~MAN(x) V MORTAL(x) และ ~MORTAL(Marcus) จะได้ ~MAN(Marcus) ซึ่งขัดแย้งกับอนุประโยคแรก (MAN(Marcus))แสดงว่า MORTAL(Marcus) เป็นผลสรุปของ K
ตัวอย่างการปฏิเสธแบบรีโซลูชันตัวอย่างการปฏิเสธแบบรีโซลูชัน
ตัวอย่างการปฏิเสธแบบรีโซลูชันตัวอย่างการปฏิเสธแบบรีโซลูชัน