วันอังคารที่ 30 มกราคม พ.ศ. 2561

แนวคิด abstract argumentation โดยสรุป

โพสนี้อยู่ในหมวด เรียนรู้ logic programming + argumentation นะคะ
สำหรับโพสนี้ เราอยากจะเขียนสรุปแนวคิดของ Abstract Argumentation Framework ไว้นะคะ เผื่อว่าใครที่ไปอ่านเปเปอร์ มาแล้วอาจจะรู้สึกว่าอยากหาเพื่อนคุยถกปัญหาหรือความเข้าใจกันจังเลย
หรือสำหรับใครที่เป็นมือใหม่ในงานด้าน reasoning  ก็อาจจะไม่คุ้นเคยกับหลายๆคำศัพท์ หรือหลายๆเรื่องตอนที่อ่าน  ซึ่งตัวเราเองก็เป็นเช่นนั้นเหมือนกัน ในครั้งแรกๆที่อ่านเปเปอร์นี้ เราไม่เคยเรียนหรืออ่านหนังสือเกี่ยวกับ mathematical logic เราก็เลยไม่สามารถจับไอเดียได้เลยค่ะ รู้สึกแต่ว่ายากไม่เข้าใจ  (เราใช้เวลาอ่านนานมากค่ะ แล้วก็หลายรอบมากๆ ตามแบบฉบับเต่าๆของเราเอง >//< )

และเพื่อตอบสนองความคิดของตัวเราเอง ที่อยากจะแชร์ความรู้หรือเรื่องต่างๆที่ตัวเองรู้ให้กับคนอื่นๆ เผื่อว่า... และหวังว่า... สิ่งที่เราเขียนอาจจะเป็นประโยชน์ต่อใครสักคนบ้างนะคะ :)

เอาล่ะ เข้าเนื้อเรื่องกันดีกว่า  ถ้าหากว่าได้อ่านโพสที่แล้วของเรา ก็จะพอเข้าใจคร่าวๆเกี่ยวกับงานด้านนี้แล้วนะคะ ทีนี้ครั้งที่แล้วเราพูดถึงไอเดียของ argumentation framework ไว้ไม่ได้ละเอียดนัก วันนี้ก็เลยจะมาเติมให้เต็มค่ะ  ซึ่งส่วนตัวเราเอง เราคิดว่าแนวคิดหลักๆทั้งหมดของทฤษฎี argumentation อยู่ในเปเปอร์ AA นี้ล่ะค่ะ 

อย่างที่คุยไว้ในโพสที่แล้ว Argumentation Framework(AF) เนี่ย เป็นการทำ reasoning อยู่บนแนวคิดที่ว่าถ้าเราเถียงไม่ได้ ไม่ว่าจะเชื่อหรือไม่ก็ตาม เราจะต้องยอมรับเหตุผลของคนที่เถียงชนะ (เป็นการอธิบาย practical reasoning ที่ไม่ได้มี intended model ว่าคนจะต้องคิดยังไง)

ทีนี้ AF เนี่ยไม่ใช่แค่ว่า ใช้หาข้อสรุปในกลุ่มคนที่มีข้อถกเถียงกันนะคะ มันก็สามารถใช้จำลองการคิดแบบมีเหตุผลของคนเรา ได้ทั้งสำหรับความคิดของเราคนเดียวด้วยค่ะ
เพราะเวลาที่เราอยากคิดหาคำตอบอะไรสักอย่าง เราก็ต้องเถียงกับตัวเองจนกว่าจะได้ข้อสรุปใช่ไหมคะ

ยกตัวอย่าง เช่น เราสงสัยว่า เอ๊ะ...ขนมเค้กในตู้เย็นของเราหายไป จะต้องมีคนแอบกินไปแน่ๆ
ก็อยากจะรู้ว่าจริงหรือเปล่า ก็ต้องทำการพิสูจน์ค่ะ

เริ่มจาก เราจำได้ว่า เมื่อวานนี้หลานมาเล่นที่บ้าน  => A1: ก็เลยต้องสันนิษฐานว่า หลานกินเค้กไป
แต่ว่าเรารู้ว่าปกติแล้วเด็กๆจะไม่หยิบของกินเองโดยไม่ได้รับอนุญาต => A2: ก็เลยเป็นข้อโต้แย้งความคิดด้านบน
พอดีเราพบว่ามีกระดาษทิชชู่เปื้อนเศษเค้กทิ้งอยู่ในถังขยะในบ้าน => A3: ก็เลยเป็นข้อสนับสนุนว่าเด็กๆต้องกินเค้ก และโต้แย้งความคิดที่ว่าหลานไม่ได้กิน

อย่างนี้เราก็เลยสรุปว่า"หลานกินเค้กไป"

สังเกตุไหมคะว่า เรามีการสร้าง argument ในหัวเราขึ้นมา 3 argument คือ A1,A2,A3 แล้วก็สมมติว่าเรากำหนดให้ A2 attacks A1 , A3 attacks A2 ดังนั้นเราก็เลยสรุปว่า "หลานกินเค้ก"

แล้วถ้าดูลักษณะของ argumentation framework ผู้อ่านรู้สึกคุ้นๆไหมคะ (ถ้าใครเคยอ่านเรื่อง natural deduction มาอาจจะคุ้นเคย) ... ใช่แล้วค่ะ ลักษณะการใช้ argument attack กันนี่คล้ายๆกับแนวทาง prove แล้วก็ disprove ไปเรื่อยๆ คล้ายคลึงกับ natural deduction เลยแต่ว่า argumentation ไม่ได้ลงรายละเอียดของกฎแต่ละข้อเหมือนกับที่ natural deduction มี

ดังนั้น Abstract Argumentation Framework (AA) เนี่ย ไม่ได้กำหนดรายละเอียดไว้ว่า argument จะต้องมีรูปร่างหน้าตาเป็นยังไง สร้างขึ้นมายังไง และก็ไม่ได้บอกว่า attack relation มีลักษณะเป็นยังไง กรณีไหนถึือว่า attack กรณีไหนไม่เรียกว่า attack

เจ้าตัว AA เนี่ยอธิบายการทำ reasoning ในแบบของทฤษฎี argumentation ก่อนให้เข้าใจได้ง่ายๆค่ะ ก็เลยไม่ได้กำหนดรายละเอียดของ argument และ attack relation ไว้ชัดเจน
พูดอีกอย่างก็คือ ผู้ใช้สามารถจะเอา AA ไปใช้ได้ โดยที่ต้องออกแบบรายละเอียดของ argument กับ attack กันเอาเอง (ดังนั้นก็จะพบว่าท้ายเปเปอร์ มีบทที่ใช้ AA อธิบาย semantic ของการทำ reasoning ในแบบอื่นๆเปรียบเทียบด้วย)

ถึงแม้ว่า AA จะไม่ได้บอกว่าต้องออกแบบ argument หรือ attack relation ยังไง แต่ก็บอกเอาไว้อยู่ว่า โอเค เมื่อเรามี argument ( เหตุผล) แล้ว และก็มี attack relation (ความสัมพันธ์ของเหตุผลทั้งหลาย) แล้ว เราก็จะมาดูกันว่า ถ้าอย่างนั้นเราควรจะสรุปอะไรได้ ควรจะเข้าใจอะไรได้บ้าง จาก framework นี้

ก็มาพูดถึงเรื่องของ semantic ค่ะ ซึ่งมันก็คือ meaning หรือความหมายที่เราจะเข้าใจได้ใช่ไหมคะ  แล้วจาก framework นี้เราจะเข้าใจความหมายอะไรได้บ้างล่ะ
ในเมื่อ AA เองถูกออกแบบมาใช้อธิบายการทำ reasoning ในแบบที่ไม่มี intended model ซึ่งก็คือ ตัว AA เองไม่ได้เป็นคนกำหนด ว่าคนจะต้องคิดยังไง ได้ข้อสรุปอะไรจากสิ่งที่มี
แต่ว่า AA อธิบายว่า คนเราเนี่ยจะยอมรับในเหตุผลที่ตัวเองรับได้ ซึ่งก็คือเหตุผลที่ไม่ขัดแย้งกันเองในหัวเรา แล้วก็ defend ความคิดอื่นๆขัดแย้งกับเราได้

ก็เลยมีนิยามอันนึงที่เหมือนกับชื่อเปเปอร์ค่ะ on the acceptability ไงคะ ...
ซึ่งก็บอกไว้ว่า argument หลายๆอันที่เรามีอยู่เนี่ยจะ accept ได้(admissible set of arguments) ถ้า มันไม่ conflict(ขัดแย้ง) กันเอง แล้วมันก็ attack ทุกๆ argument อื่นๆที่พยายาม attack กลุ่มของมัน (อ่านนิยามของ admissible set of arguments ทวนได้นะคะ)

พูดง่ายๆคือ เหตุผลที่เรามีจะต้องไม่ขัดแย้งในตัวเองและสามารถที่จะตอบโต้กับเหตุผลที่คนอื่นๆเถียงเราได้ด้วยค่ะ :)  ฟังดูดุเดือดดีนะคะ ฮ่าๆๆ

ดังนั้นตอนนี้เรารู้ละว่า เซตของ argument ที่เรายอมรับจะต้องมีเงื่อนไขอย่างไร

ต่อมาเราก็มาดูว่า เซตของ admissible arguments ใช้อธิบายอะไรได้บ้าง
เริ่มจากแบ่งคนออกเป็นสองกลุ่มค่ะ คือคนที่ skeptical ไม่เชื่ออะไรง่ายๆ กับคนที่ credulous เลือกเชื่อมากที่สุดเท่าที่จะทำได้ไว้ก่อน

จากตัวอย่างเรื่องขนมเค้ก ไม่ว่าคนที่ skeptical หรือ credulous ก็จะสรุปว่า "หลานกินเค้กไป" ทั้งคู่ เพราะว่าเหตุผล A3 attacks A2 และ A2 attacks A1 โดยที่ไม่มี attack แบบอื่นๆเพิ่มอีก

ทีนี้ถ้าเกิดว่าต่อมา เราพบวันที่หมดอายุบนกล่องเค้กเป็นเมื่อวานพอดิบพอดี
 => A4: แม่อาจจะเอาคิดว่าเค้กหมดอายุแล้วเลยเอาทิ้งก็ได้

ซึ่งตรงนี้ข้อมูลเรามีจะได้ attack relation เพิ่มขึ้นมา คือ A4 attacks A3 และในขณะเดียวกันเอง A3 attacks A4 (เพราะว่า แม่ก็อาจจะให้หลานกินเค้กไปก็ได้)

ดังนั้นตอนนี้เรามี attack relation = {(A2,A1),(A3,A2),(A3,A4),(A4,A3)}
ดังนั้นถ้าเป็นคนที่ skeptical ก็จะไม่สรุปอะไรจากข้อมูลที่มีเลย  (ไม่ยอมรับ argument ใดเลย)
แต่ถ้าเป็น credulous ก็จะเลือกยอมรับเซตของ argument
{A1,A3} ซึ่งสรุปว่าหลานกินเค้กไป หรือ {A2,A4}ซึ่งสรุปได้ว่าหลานไม่ได้กินเค้กไป

เราเรียก เซตของ argument ที่คนที่ skeptical ยอมรับนี้ว่า grounded semantic  หรือ grounded extension
ส่วนเซต argument ที่คนที่เป็นประเภท credulous ยอมรับ จะเรียกว่า prefer semantic หรือ prefer extension

และมีอีก semantic นึงที่สำคัญคือ complete extension ค่ะ ซึ่งนิยามไว้ว่า มันคือเซตของ argument ที่รวมเอาทุก argument ที่มันสามารถ defend ได้มารวมไว้ในเซตของตัวเอง

ทีนี้วิธีการหา grounded extension ทำได้โดยการหาค่า least fix point ของฟังก์ชัน โดยที่เรากำหนดฟังก์ชันคือ F(S) ={A| S defends A}

ส่วนการหา prefer extension ก็หาได้จาก greatest fix point ของฟังก์ชันนั่นเองค่ะ

เพราะว่า complete extension จะสามารถมีได้หลายอันใช่ไหมคะ
อย่างตัวอย่างเรื่องขนมเค้ก
complete extension จะมี 3 เซตคือ
i) empty set
ii) {A1,A3}
iii) {A2,A4}

ดังนั้นเราจะเห็นว่า grounded extension ก็คือ minimal (set inclusion) complete extension ส่วน prefer extension คือ maximal (set inclusion) complete extension ค่ะ
ในตัวอย่างเรื่องขนม grounded extension (minimal complete extension) = empty set
ส่วน prefer extension (maximal complete extension) = {A1,A3} และ {A2,A4}

นอกจากนี้ ก็ยังมีการนำเสนอในแบบของ stable extension (ถ้าใครเคยอ่านเปเปอร์ stable model ก็จะเข้าใจได้นะคะ) ซึ่งก็ถูกนิยามไว้ว่า มันคือเซตของ argument ที่ไม่ขัดแย้งในตัวเอง และ attack arguments อื่นๆทั้งหมดที่อยู่นอกเซตของตัวมัน

ซึ่งจากตัวอย่างเรื่องขนมเค้ก stable extension ก็จะมีสองเซตคือ  {A1,A3} และ {A2,A4} เพราะ เซตว่างนั้นถึงแม้จะไม่ขัดแย้งในตัวเอง แต่มันก็ไม่ attack argument อื่นๆที่อยู่นอกเซตของมันเลย

จบจากเรื่อง semantic แล้วในเปเปอร์ก็ได้ให้นิยามว่ากรณีใด ที่ argumentation framework  จะ coherent บ้าง(ถ้าเรามี prefer extension แต่หา stable extension ไม่ได้ แสดงว่าต้องมีอะไรผิดปกติแน่ๆเลยค่ะ อย่างเช่นมี argument A ซึ่ง A attack ตัวเอง ก็ทำให้หา stable extension ไม่ได้ อย่างนี้ก็ไม่ coherent )

นอกจากนี้ก็ยังมีนิยามว่ากรณีใดที่จะมี grounded semantic ตรงกันกับ prefer และ stable บ้าง (ให้นิยามของ well-founded argumentation framework)

อีกบทที่สำคัญก็คือเปเปอร์ได้แสดงให้เห็นว่า สามารถใช้ argumentation อธิบาย semantic ของการทำ reasoning แบบอื่นๆได้ค่ะ ทั้ง default reasoning และรวมถึง logic programming
และเนื่องจาก logic programming มีวิธีการ implement แล้ว ก็ซึ่งเป็นการแสดงให้เห็นว่าเราสามารถที่จะใช้ logic programming เป็นเครื่องมือในการ implement argumentation ก็ได้เช่นกันค่ะ (คือเรามี abstract argumentation อยู่แล้วก็ใช้อะไรก็ได้เป็นเครื่องมือในการ implement มันค่ะ)

สำหรับรายละเอียดเรื่อง semantic ของ argumentation กับ logic programming นี้เราขอยกยอดไปเล่าในโพสครั้งหน้าละกันนะคะ เพราะรู้สึกว่าโพสนี้จะยาวมากเกินไปแล้ว 😓

และเหมือนที่เราย้ำทุกครั้งว่าเราเองก็เป็นมือใหม่กับความรู้ด้านนี้ ถ้าท่านใดเห็นข้อผิดพลาดอยากจะแนะนำ หรืออยากพูดคุยกันเพื่อแลกเปลี่ยนความรู้ ทิ้งข้อความไว้ได้นะคะ เราเองมีความยินดีเป็นอย่างมากเลยค่ะ  เผื่อจะมีเพื่อนทำงานด้านนี้เพิ่มขึ้นนะคะ อิๆๆ  ^ ^

วันศุกร์ที่ 5 มกราคม พ.ศ. 2561

สวัสดีปีใหม่ ๒๕๖๑

ที่มา https://vaguevisages.com/2016/01/12/whisper-of-the-heart-and-the-tragedy-of-yoshifumi-kondo/

สวัสดีปีใหม่ทุกๆคนนะคะ 😊

เผลอแป๊บเดียวก็ผ่านไปอีกปีแล้ว ปีที่แล้วเราได้อัพบล็อกเพียงครั้งเดียวเอง ทั้งๆที่เคยตั้งใจไว้ว่าจะอัพทุกเดือน สรุปใจความได้ว่า ที่ผ่านๆมาเราตั้งเป้าหมายที่คิดจะทำไว้มากมายในปีก่อนๆ แต่ก็ไม่สำเร็จ

ปี ๒๕๖๑ นี้เราก็เลยคิดตั้งใจใหม่ว่า จะกำหนดเป้าหมายเพียงน้อยๆ แต่จะต้องมุ่งมั่นทำให้สำเร็จให้ได้

สำหรับสิ่งที่ตั้งใจทำในปีนี้ คือ ตั้งใจว่าจะฝึกนั่งสมาธิให้ได้ทุกวัน เพราะเราไม่ได้ฝึกสมาธิมาหลายปีมากแล้ว ทั้งๆที่เป็นเรื่องที่ดีที่ควรจะทำ เราก็เลยตั้งใจจะทำสมาธิทุกเช้าหลังตื่นนอนค่ะ
หวังว่าเราจะบังคับตัวเองให้มีความเพียรพยายามรักษาสัญญากับตัวเองให้ได้นะคะ

อีกเรื่องคือ เป้าหมายหลักที่เราหันมาเริ่มต้นอีกครั้งในปีนี้สำหรับตัวเราคือ เราต้องการค้นหาตัวเองค่ะว่าเราอยากจะทำอะไร  ทั้งๆที่รู้ดีว่าคำตอบของคำถามนี้ไม่ได้หากันได้ง่ายๆ และเราก็ได้ถามตัวเองมาเรื่อยๆ แต่ว่า...ก็ได้แต่หวังว่าจะเจอคำตอบนั้นสักวันค่ะ

รูปภาพด้านบนมาจากหนังเรื่อง whisper of the heart เป็นฉากที่เราชอบค่ะ พระเอกกับนางเอกเดินคุยกันไปเรื่อยๆ แลกเปลี่ยนความคิดความฝันความรู้สึกของตัวเอง  แล้วนางเอกก็พูดว่า ดีจังเลยนะที่พระเอกรู้ว่าตัวเองชอบอะไร ในขณะที่ตัวเธอได้แต่ใช้ชีวิตผ่านไปวันๆ ...

อีกฉากที่ชอบคือตอนที่คุณปู่เปรียบเทียบการเจียระไนอัญมณีกับตัวนางเอกพระเอกค่ะ  คุณปู่อธิบายว่า ในก้อนหินก็มีหยกที่สวยงามซ่อนอยู่ข้างใน ตอนเจียระไนอัญมณีชิ้นใหญ่ครั้งแรก เราอาจจะพบว่ามันไม่สวยก็ได้ และในก้อนหินนี้ก็อาจจะมีอัญมณีชิ้นเล็กๆที่สวยมากๆอยู่  ซึ่งมันต้องใช้เวลาขัดเกลาและเจียระไนจนกว่าจะเจอความสวยงามนั้น (จำประโยคที่แน่นอนไม่ได้ค่ะ แต่เข้าใจประมาณนี้)

เราชอบความสัมพันธ์ของตัวละครในเรื่องนี้ทุกๆคนเลยค่ะ ไม่ว่าจะเป็นคู่พระนาง คุณปู่ พ่อแม่นางเอก และเพื่อนร่วมชั้น เนื้อเรื่องพยายามสะท้อนสภาวะอุดมคติสำหรับคนในวัยนั้น และสุดท้าย หนังก็ทำให้เห็นด้วยว่า โลกที่เราคิดฝันว่าสวยงามมันมีความยากลำบากและน้ำตาปนอยู่ด้วย

เหมือนที่ตอนท้ายที่สุด ที่นางเอกต้องร้องไห้เสียใจผิดหวังที่ตนเองทำไม่ได้ดีพอ หลังจากได้ทดสอบตัวเองด้วยการแต่งนิทานเรื่องแรก และเธอก็พูดว่า แค่ต้องการทำมัน แค่นั้นไม่พอ เธอยังต้องเรียนรู้อีกมาก
ทำให้เธอเรียนรู้ว่าความใจร้อน วู่วามในตอนแรกที่เธอมี ความฝันว่าอะไรๆจะง่ายจะสวยงาม มันไม่ได้เป็นอย่างที่คิด ทุกอย่างต้องผ่านการขัดเกลา และต้องการเวลา..

สุดท้ายแล้ว ขอกล่าวคำว่า สวัสดีปีใหม่แห่งการเริ่มต้นใหม่ๆ อีกครั้งนะคะ :)