วันศุกร์ที่ 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

วันศุกร์ที่ 29 กรกฎาคม พ.ศ. 2559

ความตั้งใจอันแรงกล้า กับ argumentation

ฮ่าๆๆ ขอหัวเราะให้กับตัวเองเป็นอย่างแรก ฉลองการเขียนโพสนี้ หลังจากที่พบว่าเคยตั้งใจจะเขียนบล็อกเดือนละครั้ง ผ่านมาครึ่งปีแล้วสินะ

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

เล่าให้อาจารย์ฟังว่า เคยเขียนเกี่ยวกับ math logic  นิดหน่อย แต่ว่าไม่มั่นใจในตัวเอง และรู้สึกว่าวิธีการอธิบายยังไม่ทำให้คนอ่านเข้าใจได้ง่ายพอ เลยหยุดไปพักใหญ่เลย

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

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

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

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

ติดการ์ตูนเรื่องแรกของปี --- One punch man

เริ่มต้นปีใหม่มาเราก็อยู่ในโหมดอยากเป็นฮีโร่ขึ้นมาทันที ... และแน่นอน แรงบันดาลใจมาจากการติดการ์ตูนเรื่อง One Punch Man !!!!

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

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

เราดูแต่อะนิเมะ ซึ่งซีซั่นแรกมี 12 ตอน ทั้งหมดนี้เราชอบตอนที่ 8-9 มากที่สุด ประทับใจจนอยากเป็นฮีโร่ขึ้นมาก็ตอนที่ดูตอนนี้แหละ

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

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

สังคมก็เช่นกัน มีหลายๆครั้งที่คนที่ทำเรื่องที่ดี หรือเป็นคนทำงานจริงๆ ไม่ได้รับคำชมเชย แต่คนที่อาจจะทำบ้าง หรือแค่ทำพอให้เห็นหน้า กลับได้ไปเต็มๆ และหลายๆครั้ง เราไม่สามารถทำให้คนทุกคน ชอบหรือเข้าใจเราได้ ..แทนที่จะได้คำชม กลับได้คำติ หรือคำด่ามาแทน ถ้าเป็นเรา...จะทำใจรับตรงนี้ยังไง จะทำใจให้ไม่ท้อแท้ หรือโกรธกับสิ่งที่ได้รับ หลังจากความพยายามอย่างหนักของเราไหม
ep 8-9  เป็นทางเลือกของพระเอกที่ตอบสนองกับสังคมแบบนี้ ที่มันเป็นจริงในโลกใบนี้ จริงๆตอนอื่นๆก็มีแทรกมา แต่เราว่า สองตอนนี้พีคสุดแล้ว

ดูจบ  ep 9 แล้วเราอยากเป็นฮีโร่ แบบไซตามะ ...ไม่ใช่ว่าอยากเป็นคนที่แข็งแกร่งที่สุด ชนิดต่อยหมัดเดียวตาย สู้กับใครก็ไม่แพ้แบบพระเอก แต่ว่า อยากเป็นฮีโร่ เพราะอยากเป็นฮีโร่
แน่นอน..เราคงไม่ได้เป็นฮีโร่ที่แข็งแรงไปสู้กับเหล่าร้ายอย่างในการ์ตูน แต่อยากเป็นฮีโร่ โดยการใช้ความสามารถ ความรู้ที่ตัวเองมี เท่าที่จะทำได้ ช่วยเหลือโลกทางใดสักทางหนึ่ง ... เหมือนที่มูเมนไรเดอร์ (ฮีโร่ปั่นจักรยาน) ในเรื่องทำ