วันอังคารที่ 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 เป็นฉากที่เราชอบค่ะ พระเอกกับนางเอกเดินคุยกันไปเรื่อยๆ แลกเปลี่ยนความคิดความฝันความรู้สึกของตัวเอง  แล้วนางเอกก็พูดว่า ดีจังเลยนะที่พระเอกรู้ว่าตัวเองชอบอะไร ในขณะที่ตัวเธอได้แต่ใช้ชีวิตผ่านไปวันๆ ...

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

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

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

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

วันศุกร์ที่ 22 ธันวาคม พ.ศ. 2560

เรื่อยเปื่อยกับ argumentation

โพสนี้อยู่ในหมวด เรียนรู้ logic programming + argumentation นะคะ
ต้องขอโทษด้วยนะคะที่ไม่ได้อัพบล็อกเสียนาน ช่วงที่ผ่านมามีอะไรต้องจัดการเยอะมาก เกือบจะอีกหนึ่งปีผ่านไปแล้ว แต่ละอย่างที่ตั้งใจไว้ว่าจะทำเราก็ยังไม่ได้ทำ ตอนนี้ก็หันมาจัดการเวลาตัวเองเสียใหม่ จะได้เริ่มต้นทำโครงการอะไรดีๆ อย่างที่วางแผนไว้เสียที

เอาล่ะ มาเข้าเรื่องกันเลยดีกว่า วันนี้จะขอพร่ำเพ้อเรื่อยเปื่อยตามประสาคนที่ยังไม่รู้ว่าจะเรียบเรียงสิ่งที่อยู่ในหัวยังไงดีนะคะ ฮ่าๆๆ คนอ่านคงแบบว่า อยากจะตื้บคนเขียนเสียจริง ถ้ายังไม่รู้จะเขียนอะไร แกจะมาเขียนทำมายยยย(ขอใช้ภาษาวิบัติเพื่อความสมจริงนะคะ อิๆ)

เรื่องที่อยากจะพร่ำเพ้อวันนี้คือ อะไรคือ argumentation หรือ แล้วมันมีบทบาทยังไงกับงานด้าน AI ล่ะ
.
.
.
.
นั่นสินะ เราเคยเล่าไว้ในโพสก่อนๆว่า มีงานวิจัยด้าน practical reasoning หรือ พูดง่ายๆว่า จะทำการจำลองว่ามนุษย์มีกระบวนการคิดยังไง แล้วไอ้งานวิจัยด้านนี้ มีแนวทางหนึ่งที่เรากำลังศึกษา ก็ชื่อว่า argumentation นั่นเอง ....แล้วเราก็ไม่เคยได้อธิบายแนวคิดที่มาที่ไปของมันเสียที

งั้นวันนี้เรามาพร่ำเพ้อถึงมันกันสักหน่อยดีไหมคะ

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

คำถามต่อมาคือ แล้วมนุษย์มีการคิดแบบไหนล่ะ มีการตัดสินใจแบบไหน ก็มีงานวิจัยมากมายพยายามทำการศึกษาวิธีการคิดของมนุษย์ ลองค้นหาคำว่า human reasoning หรือ practical reasoning อะไรทำนองนี้ก็จะพบว่ามีการศึกษากันอย่างมากมาย
ก็ยังไม่ได้ข้อสรุปที่แน่นอนล้านเปอร์เซ็นต์หรอกนะคะที่จะตอบได้แน่ๆเลยว่า เนี่ยมนุษย์มีพฤติกรรมการคิดการตัดสินใจแบบนี้แบบนั้น

แต่ทว่าก็มีการศึกษาที่เป็นที่ยอมรับกันอย่างกว้างขวางว่า มนุษย์เนี่ยมีรูปแบบการคิดแบบที่เป็นเหตุเป็นผลอยู่นะ(ถือซะว่าเราละตอนที่มนุษย์โมโห ตัดสินใจอะไรมั่วซั่วตามแต่อารมณ์ออกไปละกันนะคะ)

ก่อนอื่นของพูดถึงลักษณะของการทำ reasoning ก่อน ว่าจะมีอยู่ 2 ลักษณะใหญ่ๆ คือ monotonic reasoning กับ non- monotonic reasoning
เรามาลองทำความเข้าใจจากตัวอย่างกันดีกว่านะคะ

ยกตัวอย่างให้เห็นภาพ เช่น เราบอกว่าถ้าฝนตก แล้วเสื้อผ้าจะเปียก
แล้วเรามีข้อเท็จจริงอยู่ว่า ฝนตก แน่นอนว่า เราจะสรุปได้ว่า เสื้อผ้าเปียก
เมื่อเพิ่มข้อเท็จจริงใหม่เข้าไปว่า ฝนตก + ฉันเดินเล่น ก็ยังคงสรุปได้ว่า เสื้อผ้าเปียกถูกไหมคะ
อย่างนี้คือ monotonic reasoning

เพราะว่า monotonic reasoning นิยามไว้ว่า ถ้าเซต P  สามารถให้ข้อสรุป Q ได้แล้ว แล้วเอา เซต PU{a} ก็ต้องยังคงข้อสรุป Q ได้เหมือนเดิม พูดง่ายๆก็คือ ต่อให้ข้อมูลเพิ่มขึ้นแค่ไหน เราก็ยังควรจะสรุปข้อสรุปเดิมได้

แต่ถ้า เราเพิ่มข้อเท็จจริงไปว่า ฝนตก + ฉันเดินเล่น + ฉันเดินกางร่ม อย่างนี้แล้ว เราจะไม่สามารถสรุปว่า เสื้อผ้าเปียกได้ ก็จะเห็นว่าจริงๆแล้ว practical reasoning เป็น non-monotonic reasoning ค่ะ เพราะว่าในโลกของความจริงแล้วบางครั้งพอข้อเท็จจริงเพิ่มขึ้น ข้อสรุปเดิมก็เปลี่ยนเป็นข้อสรุปใหม่ใช่ไหมคะ


ทีนี้เรามาดู แนวทางต่างๆ ที่ใช้ในการทำ reasoning ก็มีแนวทางมีคนนำเสนอแนวคิดมากมายเลยค่ะ แรกเริ่มเดิมทีก็มี classical logic ใช่ไหมคะ ซึ่งมันมีลักษณะแค่อย่างเดียวคือ monotonic reasoning  ดังนั้นเราจะใช้แค่ classical logic มาทำการจำลองการทำ practical reasoning/ human reasoning ก็ไม่ได้


ดังนั้นเราก็ต้องมองหาแนวทางอื่นๆ ที่มีลักษณะของ non-monotonic reasoning ร่วมด้วย ซึ่งก็มีคนนำเสนอแนวทางไว้เยอะแยะมากมายเลยค่ะ แต่ที่เราจะคุยกันวันนี้คือ แนวทางที่ชื่อว่า argumentation

Argumentation  ก็ความหมายตามนั้นเลยค่ะ คือการโต้เถียงกันใช่ไหมคะ เดิมทีแล้วคำๆนี้เนี่ย ถูกพูดถึงในงานด้าน philosophy หรือพวกแนวคิดปรัชญาทั้งหลาย แต่ว่าก็ยังไม่มีใครเอามาพูดถึงหรือหยิบมาใช้ในงานด้านระบบปัญญาประดิษฐ์(หรือ AI) อย่างจริงจังเสียที

ก็มีการนำเสนอวิธีการเอา แนวคิด argumentation มาออกแบบว่าเราจะทำการ implement ในระบบคอมพิวเตอร์ได้อย่างไรค่ะ โดยที่ก็เกริ่นถึงไอเดียของ argumentation ก่อน และโชว์ให้ดูว่า logic programming  เป็นเครื่องมือนึง ที่สามารถใช้ implement แนวคิด argumentation ได้ค่ะ

ทีนี้มาดูกันว่า แล้วไอเดียหลักที่อยู่บนแนวคิดของargumentation คืออะไร

ก็ลองมองไปที่ human reasoning เลยค่ะว่า ถ้าเราจะโมเดลการคิดของคนแบบตัวอย่างข้างต้น ที่จะเห็นว่า มันเป็น  non-monotonic reasoning เนี่ย จะทำยังไง
ถ้าเราใช้ classical logic ก็ไม่ตอบโจทย์ใช่ไหมคะ เพราะ classical logic มีลักษณะเป็น  monotonic

(จากนี้จะอธิบายไอเดียของ abstract argumentation  นะคะ คือเป็นคอนเซปที่กว้างที่สุดแล้ว)
ทีนี้ argumentation ก็ตอบโจทย์ตรงที่ว่า โอเค เราไม่ต้องสนใจนะว่า คนเราควรจะคิดให้คำตอบยังไง ไม่เหมือนหลักใน classical logic ที่ว่า ถ้ามีข้อเท็จจริงนี้แล้ว ควรจะคิดแบบนี้  ควรจะได้ข้อสรุปนี้ พูดง่ายๆคือ ไม่มี intended model ที่แน่นอนเพียงอันเดียว (intended model เป็นความอุดมคติตามหลักการเหตุผลว่า ควรจะต้องคิดแบบนี้ ตอบแบบนี้ )

งั้นแล้ว ข้อสรุปที่ควรจะได้ล่ะจะเอามาจากไหน ถ้าเราไม่มี intended model ที่แน่นอน

argumentation ก็บอกว่า ก็ดูจากการยอมรับ arguments ที่คนถกเถียงกันไงล่ะ ถ้าเกิดว่าใครเถียงชนะ ไม่ว่าทุกคนในวงจะเชื่อหรือไม่ก็ตาม(เราจะไม่พูดถึง belief) แต่เราจะต้องยอมรับข้อสรุปของคนที่เถียงชนะ(ใช่ไหมคะ)

ดังนั้น framework ของ argumentation ก็มีแค่ argument ที่แต่ละคนยกขึ้นมา กับ attack relation ก็คือดูว่า  argument อันไหน attack อันไหนบ้าง

สุดท้ายแล้วเราก็จะได้ว่า  argument ใดบ้างที่ยอมรับได้ ก็กลายเป็นข้อสรุปไป

ยกตัวอย่างเช่น

นาย ก บอกว่า A1:  "นกบินได้ และ เพนกวินเป็นนก ดังนั้น เพนกวินบินได้"
นาย ข บอกว่า A2:  "แต่ว่า เพนกวินบินไม่ได้"

เราจะเห็นว่า argument A1 ของนาย ก แพ้ให้กับ A2 ของนาย ข (คือนาย ก ไม่มีอะไรจะเถียงต่ออีกแล้ว ก็แพ้ไปใช่ไหมคะ) ดังนั้น การถกเถียงกันครั้งนี้ argumentation framework เรามีแค่ 2 arguments และ attack relationship ก็คือ A2 attacks A1 ก็จะได้ว่า A2 เป็น arguments ที่ยอมรับได้
เมื่อเรายอมรับ A2 ก็ถือว่าข้อสรุปคือ เพนกวินบินไม่ได้

จะเห็นว่าพอโมเดลด้วยไอเดียนี้แล้ว ทำให้การทำ reasoning จำลองการคิดแบบมีเหตุผลดูง่ายขึ้นไหมคะ

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

นอกจากนี้ในเปเปอร์ ก็โชว์ให้เห็นว่า semantic ของ  argumentation นั้นตรงกันกับ semantic หลายๆแบบใน  approach อื่นๆที่เสนอแนวทางการพัฒนา non-monotonic reasoning ด้วย ไม่ว่าจะเป็น well-founded semantic, stable model, etc.

ที่สำคัญ ก็โชว์ให้เห็นว่าตรงกับ semantic ของ logic programming ซึ่งเป็นการบอกว่า argumentation ไม่ใช่แค่ไอเดียต่อไปแล้วนะ ถ้าอยากจะ implement ณ ตอนนี้เราก็มีเครื่องมือที่สามารถจะ implement มันได้แล้ว ซึ่งก็คือ logic programming นั่นเองค่ะ

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

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

วันพฤหัสบดีที่ 15 ธันวาคม พ.ศ. 2559

ว่าด้วยเรื่อง complete lattice and fixpoint theory -- Logic Programming

โพสนี้อยู่ในหมวด เรียนรู้ logic programming + argumentation นะคะ
ก่อนอื่น เรามารู้จักคำว่า order กันก่อน  ซึ่ง order ก็คือการที่เราสามารถเปรียบเทียบสิ่งของสิ่งได้
เช่น
0 น้อยกว่า 1 หรือ ดาวอังคารอยู่ห่างจากดวงอาทิตย์ มากกว่าที่อยู่ห่างจากโลก
คิดว่าทุกคนคงทราบความหมายของ set กับ relation กันดีอยู่แล้ว ซึ่ง order เองก็คือ relation ประเภทหนึ่ง  

ทีนี้เรามาดูนิยามของคำว่า partial order ซึ่งคือ relation ที่จะต้องมีคุณสมบัติ
- reflexive (มีการเปรียบเทียบตัวเองกับตัวเอง)
- antisymmetric (ถ้าลำดับ X น้อยกว่า Y แล้วลำดับ Y ต้องไม่น้อยกว่า X  แต่ถ้าเกิดพบกว่าลำดับของ X น้อยกว่า Y และลำดับของ Y ก็น้อยกว่า X แสดงว่า Xและ Y นั้นคือค่าเดียวกัน)
-transitive
(ถ้าลำดับของ X น้อยกว่า Y, ลำดับของ Y น้อยกว่า Z แล้วลำดับของ X ต้องน้อยกว่าลำดับของ Z)


ตัวอย่างของ partial order ก็อย่าง ความสัมพันธ์ของ subset  หรือการเปรียบเทียบ น้อยกว่าหรือเท่ากับของตัวเลขจำนวนเต็ม
เช่น {(1,1),(1,2),(2,2),(2,3)} ก็จะเห็นว่า  1 ≤ 1 , 1  2,  2  2 , 2  3

ทีนี้เรามาทำความรู้จัก upper bound กันดีกว่านะคะ
ถ้าเรามี
partial order สมมติชื่อว่า S เราดึงแค่ subset ของเซต S นี้ออกมา สมมติให้ชื่อ subset นี้ว่า X แล้วพบว่า สมาชิกทุกตัวใน X นี้มีค่าน้อยกว่าหรือเท่ากับ ค่าๆหนึ่งซึ่งเป็นสมาชิกของ S เช่นกัน เราจะเรียกค่านั้นว่า upper bound

ยกตัวอย่าง เช่นถ้าเรามีค่า A,B,C ซึ่ง   ≤ B  C
แล้วเรามี {A , B, C} ถ้าถามว่า upper bound ของ { A } คือค่าอะไร ก็สามารถตอบได้ว่าคือ A, B , C
และในบรรดา upper bound ทั้งหมด upper bound ที่มีค่าน้อยที่สุด คือ  least upper bound
ดังนั้นจากตัวอย่างนี้
least upper bound คือ A


ถ้าเราต้องการหา lower bound ก็คล้ายๆกันเปลี่ยนแค่จากน้อยกว่าเป็นมากกว่า  จะได้ว่าถ้าพบว่า สมาชิกทุกตัวใน X นี้มีค่ามากกว่าหรือเท่ากับ ค่าๆหนึ่งซึ่งเป็นสมาชิกของ S เราจะเรียกค่านั้นว่า lower bound และในบรรดา lower bound ทั้งหมด lower bound ที่มีค่ามากที่สุด จะเรียกว่า greatest lower bound
จากตัวอย่างนี้
ถ้าถามว่าlower bound ของ{ A} คือค่าอะไร lower bound คือ A และ greatest lower bound ก็คือ A

ในขณะที่ lower bound ของ {B} = A, B และ greatest lower bound ก็คือ B


ทีนี้ถ้าเรามีเซต S ใดๆ แล้วเราหา power set of S  ( 2S) ก็จะเห็นว่า 2S  มีคุณสมบัติเป็น partial order 
ยกตัวอย่างเช่น S = {A,B} ดังนั้น = {∅, A, B, {A,B} } เป็น partial order เพราะ   ∅ ⊆ {A}⊆ {B}  ⊆ {A,B}
ก่อนจะไปหา lower bound, upper bound   ของ 2S ขอยกตัวอย่างอีกสักตัวอย่าง
ถ้าเรามีเซต A , B สมมติว่า A ⊆C , B ⊆C
จะเห็นว่า C is upper bound of A , C is upper bound of B
ถ้าเราจับ A ∪ B   แล้ว จะพบว่า upper bound = A ∪ B , C  
และมี  least upper bound =  A ∪ B 

เช่นกันค่ะ เราจะได้ว่า ∅ is lower bound of A และ ∅ is lower bound of B
ถ้าเราจับ A ∩ แล้ว lower bound of  = , A ∩  
และมี greatest lower bound  A ∩ B

จากแค่ทำกับสองเซต A,B ใช้หลักการเดียวกันไม่ว่าจะมีกี่เซต ซึ่งเราสามารถที่จะหาค่า least upper bound และ greatest lower bound ของทุกๆ subset of  2S ได้ ซึ่งถ้าเรา หา intersection ของสมาชิกทุกตัวใน  2S เราก็จะได้ greatest lower bound = ∅ และถ้าหา union ของสมาชิกทุกตัวใน  2S  ก็จะได้ least upper bound = S นั่นเอง


ซึ่งถ้าเรามี partial order  L ใดๆ ที่สามารถหา least upper bound และ greatest lower bound ของทุกๆ subset ของ ของ order L นั้นได้ เราเรียกว่าคุณสมบัตินี้ว่า complete lattice

จากตัวอย่างข้างต้น เราก็เห็นกันแล้วนะคะว่า 2S มีคุณสมบัติ complete lattice ทีนี้เราจะพูดถึง fix point theory กันบ้าง
fix point theory นิยามไว้ว่า ถ้าเรามี complete lattice ใดๆสมมติชื่อ L และมี mapping ให้ชื่อว่า T จากโดเมนคือ Lไปยังเรนจ์ คือ (T: L -> L) ณ จุดๆที่ เราใส่ค่า x ใดๆในโดเมนไปแล้ว map ได้ x เราจะเรียกค่า x นี้ว่า fix point of T พูดง่ายๆก็คือ ณ ตำแหน่งที่ T(x) = x นั่นเองค่ะ 

ทีนี้ fix point เนี่ย ก็มีได้หลายค่า เราก็จะเรียกค่า fix point ที่น้อยที่สุดในบรรดาค่า fix point ทั้งหมดว่า least fix point และเช่นกัน เราจะเรียกค่า fix point ที่มากที่สุดในบรรดาค่า fix point ทั้งหมดว่า greatest fix point

ทีนี้ เรากลับมาที่คำอธิบายเรื่อง complete lattice ของเรากันนะคะ เรารู้แล้วว่า 2S มีคุณสมบัติ complete lattice แล้วถ้าเรามี mapping T: 2S  -> 2S ก็แสดงว่า ทั้ง input และ output (หรือโดเมนและเรนจ์) ของการ mapping นี้ จะมีคุณสมบัติ complete lattice แน่นอน เพราะว่ามันเป็น subset ของเซต ซึ่งก็จะทำให้เราสามารถหา greatest lower bound, least upper bound ได้เสมอ ซึ่งคุณสมบัติตรงนี้จะใช้อธิบายในหลายๆเรื่องของทฤษฎีในหนังสือ logic programming


ขอเล่าแถมอีกหน่อย เรื่อง fix point theory ว่าสำคัญไฉน
fix point เนี่ยมีความสำคัญในหลายๆแขนงของคณิตศาสตร์
เรารู้แล้วใช่ไหมคะว่า
partial order คืออะไร และ complete lattice คืออะไรและเกี่ยวข้องกับ fix point ยังไง
ทีนี้เราลองมาดู
fix point ในงานด้านอื่นบ้าง ถ้าเรามีจุด สองจุด บนแกน x,y อยากจะเทียบว่าจุดไหนใหญ่กว่า(ไม่แน่ใจว่าใช้คำว่าใหญ่กว่าจะดีไหม) วิธีการเทียบคือ ถ้า ค่าบนแกน x ของจุดแรกมากกว่าเท่ากับจุดสอง และ ค่าบนแกน y ของจุดแรกมากกว่าเท่ากับจุดสอง เราก็จะถือว่าจุดแรกใหญ่กว่า

อย่างเช่น จุด (2,2) ใหญ่กว่า จุด (1,1)

ทีนี้เราเทียบสองจุดได้แล้ว เราก็จะสามารถเทียบหลายๆจุดได้ใช่ไหมคะ เมื่อเราเทียบจุดหลายๆจุดได้ เราก็จัดลำดับเซตของจุดเหล่านี้ได้  และเราก็จะได้ partial order ใช่ไหมคะ เมื่อเราได้  partial order ของความสัมพันธ์ของจุดบนระนาบ x,y  (ซึ่ง ณ จุดนี้ก็คล้ายกับความสัมพันธ์ subset ของเซตแล้ว) ต่อไปเราก็จะพบว่ามันมีคุณสมบัติ complete lattice แล้วเราก็จะหา fix point ได้

คำถามคือเราจะหา fix point ของจุดไปทำไม ?

ถ้ายังจำได้ คณิตศาสตร์ที่เราเคยเรียนสมัยมัธยม เราจะหาจุดตัด
(0,0) ซึ่งเราสามารถจะมองว่าคือ fix point ได้ นี่ก็คือ application นึงของ fix point ค่ะ และไม่ใช่แค่จุดบนระนาบ x,y เราสามารถจะเทียบบน สามมิติ x,y,z หรือ n-dimension ก็ได้


ซึ่งในระบบ dynamic ต่างๆ เราย่อมจะอยากหาเงื่อนไขที่ทำให้มัน stable เราก็นำเอา fix point theory เข้าไปใช้ ไม่ว่าจะเป็น งานด้าน machine vision , computer graphic ก็จะเห็นว่ามีทฤษฎี fix point ค่ะ
รวมถึง สมการ หรือ equation ที่เรารู้จักกันดี นั่นก็คือรูปแบบนึงของ fix point เช่นกัน
เช่น

 เรารู้จักกันในรูปแบบของสมการ ที่เราจะต้องการหาค่าตัวแปร X ว่ามีค่าเท่าไหร่
ซึ่งถ้าเรามองสมการเป็น    

ใช่ไหมคะ

ถ้าเรากำหนดให้
   



เราจะพบว่า มันก็คือ fix point ที่เราจะหาจุดที่ f(X)=X นั่นเองค่ะ


หวังว่าคงจะเห็นความสำคัญและเข้าใจทฤษฎี fixpoint มากขึ้นและอ่านหนังสือ logic programming ได้เข้าใจยิ่งขึ้นนะคะ :)

แนวทางศึกษา Logic Programming & Argumentation

กลับมาทำตามสัญญาก่อนปีใหม่ที่จะต้องเขียนบล็อกเกี่ยวกับความรู้เรื่อง Logic Programming + Argumentation ตอนแรกตั้งใจว่าจะให้ตัวเองศึกษาให้จบเรียบร้อยก่อน แล้วจะได้ค่อยๆอธิบายไปตามลำดับ แต่ดูเหมือนว่าเราจะยุ่งกับการเรียนและมีอะไรหลายๆอย่างเกิดขึ้นจนไม่ได้เขียนตามที่คาดหวังไว้

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

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

ซึ่งข้อดีก็คือสำหรับผู้อ่านที่สนใจศึกษา logic programming และ argumentation จะได้ศึกษาไปพร้อมๆกันกับเราเองด้วย และเราเองก็จะได้อัพเดทบล็อกโดยใช้เวลาไม่มากได้ ซึ่งจะดีกว่าที่เราจะต้องรอให้ตัวเองพร้อมแล้วค่อยมาเรียบเรียงเนื้อหาจากต้นจนจบ เหมือนกับการเขียนหนังสือ ซึ่งจะทำให้เราเองก็จะไม่พร้อมสักที ถ้าท่านใดที่สนใจหลงเข้ามาอ่าน ^ ^ หวังว่าคงเข้าใจเจตนาของเรานะคะ และถ้ามีคำถามอะไรสงสัย ยินดีที่ช่วยตอบค่ะ แต่ขอบอกก่อนเลยนะคะว่าเราเองก็มือใหม่เหมือนกัน :)

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

  1. หนังสือแนะนำ อ่านได้ ที่นี่ ค่ะ
  2. เปเปอร์เกี่ยวกับ Argumentation ที่นี่
  3. โพสเรื่อง Mathematical Logic + Natural Deduction ที่ลิงก์นี้
  4. โพสเรื่อง Logic Programming 
  5. โพสเรื่อง Argumentation
โพสเก็บตก

แนะนำเปเปอร์ เกี่ยวกับ Argumentation

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

โพสนี้จะรวบรวมเปเปอร์เกี่ยวกับ Argumentation ที่เราศึกษา(และบางเปเปอร์ที่เกี่ยวข้อง) และเผื่อเป็นแนวทางสำหรับผู้ที่สนใจว่าควรจะเริ่มต้นจากตรงไหนดีนะคะ

สำหรับคนที่ไม่รู้เลยว่า Argumentation คืออะไร มีความสำคัญยังไงใน Reasoning System ควรจะเริ่มอ่านเปเปอร์แรกสุดก่อนเลย คือ

Phan Minh Dung: On the Acceptability of Arguments and its Fundamental Role in Nonmonotonic Reasoning, Logic Programming and n-Person Games. Artificial Intelligence, 77(2), pp. 321-357, 1995

หลังจากอ่านเปเปอร์หลักเพื่อเข้าใจ abstract argumentation theory แล้วก็จะมีเปเปอร์ที่เป็น instance ของ argumentation ได้แก่ assumption based argumentation และ structured argumentation with priorities ดังนี้ค่ะ

Phan Minh Dung, Robert A. Kowalski, and Francesca Toni: Assumption-based Argumentation, Argumentation in AI, I. Rahwan and G. Simari (Eds.), 199-218, Springer 2009.

Phan Minh Dung: An axiomatic analysis of structured argumentation with priorities, Artificial Intelligence, Elsevier, 2016
(อยากแนะนำให้อ่านเวอร์ชันเต็มมากกว่าค่ะ ซึ่งเป็นเปเปอร์ล่าสุดของสิ้นปี 2017  อันนี้ เพราะเปเปอร์นี้จะแนะนำว่า properties ของ attack relation ควรจะมีอะไรบ้างอย่างไร)

และมีอีกอันที่เป็น instance ของ argumentation คือ probabilistic argumentation

Phan Minh Dung, Phan Minh Thang: Towards Probabilistic Argumentation for Jury-based Dispute Resolution, COMMA10, Third International Conference on Computational Models of Argument, Desenzano del Garda, Italy, 8-10 September, 2010.

ทีนี้ถ้าเราจะมาดูว่า application ของการนำเอา argumentation ไปใช้ได้แก่อะไรบ้าง ก็มีหลายเปเปอร์นะคะ อันนี้จะยกมาคร่าวๆ อย่างเช่น (จริงๆแล้วในเปเปอร์ probabilistics  argumentation ก็มีตัวอย่างค่ะ)

Phan Minh Dung, Giovanni Sartor: The modular logic of private international law, Artif. Intell. Law 19(2-3): 233-261 (2011), Springer Verlag.

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

วันเสาร์ที่ 29 ตุลาคม พ.ศ. 2559

ตามรอยพ่อหลวง

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

ในอาทิตย์ที่ผ่านมา เราเห็นหลายๆคนแสดงออกถึงความรักที่มีต่อพระองค์ท่านในหลายรูปแบบ ไม่ว่าจะเป็นการเปลี่ยนโปรไฟล์ใน social network เป็นสีดำ ใส่ชุดสีดำ ทำริบบิ้นดำแจก ร้องเพลงถวายความอาลัย แจกของให้คนที่สนามหลวง ฯลฯ มีการเผยแพร่ประวัติและพระราชกรณียกิจของพระองค์มากมาย
ในกลุ่มเพื่อนๆของเราเอง ก็มีการแสดงออกต่อความศรัทธาในตัวท่านด้วยการ ตั้งกลุ่มผู้สนใจร่วมกันทำงานวิจัยสั้นๆแต่ใช้พลังคนเยอะๆ ที่อาจเป็นประโยชน์ต่อนักวิจัยอื่นๆได้ในอนาคต และลงคำกิตติกรรมประกาศถวายแด่พระองค์
เพื่อนอีกคนก็ติดต่อเพื่อจัดอบรมการเขียนโปรแกรมฟรีให้กับนักศึกษาในมหาวิทยาลัย  ทั้งหมดนี้ต่างก็มีเจตนาเดียวกันคือ ทำความดีตามรอยพ่อหลวงของเรา

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

ตอนนี้เรากำลังทบทวนความรู้ทฤษฎีเรื่อง logic programming และ argumentation คิดว่าเมื่ออ่านจบเข้าใจดีแล้ว คงจะได้เริ่มเขียนบล็อกเสียที หวังว่าอย่างน้อยเดือนละชิ้นคงจะเขียนได้

ท้ายสุดนี้ เราขอยกพระบรมราโชวาทของพระองค์ที่เราชอบมากที่สุดมาไว้ ณ ที่นี้

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

พระราชดำรัส พระราชทานเพื่อเชิญไปอ่าน ในพิธีเปิดการประชุมยุวพุทธิกสมาคมทั่วประเทศ ครั้งที่ 12 ที่จังหวัดพระนครศรีอยุธยา วันที่ 12 ธันวาคม 2513