Thursday, February 17, 2011

IBM Watson กับ Jeopardy!

บล็อกแรกในรอบปี...โหะๆ ทำ NLP ทั้งที มี event แบบนี้ จะไม่เขียนถึงก็กระไรอยู่

IBM ส่งซุปเปอร์คอมพิวเตอร์ตัวใหม่ลงแข่ง Jeopardy! ซึ่งเป็นควิซโชว์ชื่อดังของอเมริกา ซึ่งออกอากาศในวันที่ 14-16 กุมภาพันธ์ปีนี้

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

ตัวอย่างคำถาม

หมวด ALTERNATE MEANINGS (ให้ตอบคำศัพท์ของความหมายต่อไปนี้)
4-LETTER WORD FOR THE IRON FITTING ON THE HOOF OF A HORSE OR A CARD-DEALING BOX IN A CASINO

เฉลย
SHOE

ลักษณะของคำถามในรายการ
Factoid question - What Who When Where question
คำถามที่มีคำตอบชัดเจนตายตัว ในรายการคนตอบจะบอกเลยว่า ต้องการตอบว่า what คืออะไร when คือเมื่อไหร่ เป็นต้น คำถามประเภทนี้จัดว่าตอบง่าย เทียบกับคำถามอีกประเภทคือ Why และ How ซึ่งไม่รวมอยู่ในรายการนี้ คงเพราะคำตอบมันดิ้นได้ ตัดสินยากด้วย

อย่างไรก็ตาม ชื่อหมวดคำถามไม่มีลักษณะที่ตายตัว บางครั้งชื่อหมวดคำถามอาจจะสื่อถึงหมวดหมู่แบบอ้อมๆ เช่น TuTuMuch (ชื่อหนังเกี่ยวกับบัลเลต์) ซึ่งหมายถึงหัวข้อ บัลเลต์

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

สำหรับการเลือกตอบหรือไม่ตอบ watson คำนวณจากค่าความเชื่อมั่นในคำตอบที่หามาได้ watson จะเลือกตอบคำถามก็ต่อเมื่อมีค่าความเชื่อมั่นสูงเกินขีดที่กำหนด จากการทดลอง ความแม่นยำ (precision) ของ watson อยู่ที่ 40% ถ้าตอบทุกคำถาม และ 100% ถ้าตอบแค่ 40% ของคำถาม (นั่นคือตั้งค่าความเชื่อมั่นขั้นต่ำไว้สูงมากๆ)

ทีนี้
คอมพิวเตอร์จะสามารถตอบคำถามได้อย่างไร

ข้อมูลที่คอมพิวเตอร์รับรู้จากคำถามคือตัวอักษรเรียงกันยาวๆ ซึ่งเป็นคำใบ้ (หรือในกรณีทั่วไป คือคำถาม) คอมพิวเตอร์จำเป็นต้องทำความเข้าใจกับข้อมูลที่รับเข้ามานี้

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

คอมพิวเตอร์สามารถเลียนแบบความ "เข้าใจ" concept ตามแบบคนได้เช่นกัน แต่เราต้องสร้างฐานข้อมูลของ concept ของคำต่างๆให้คอมพิวเตอร์ด้วย concept ของคำไม่ได้มีเฉพาะความหมายตามพจนานุกรม เพราะของบางอย่างเราก็อธิบายด้วยตัวอักษรล้วนๆไม่ได้ เทคโนโลยีในการเลียนแบบความเข้าใจของคนนี้ยังค่อนข้างจำกัด และยังไม่สามารถเอามาใช้กับงานตอบคำถามที่ซับซ้อนระดับควิซโชว์นี้ได้

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

สมมติฐานที่ว่าคือ คำตอบของคำถามมักปรากฏอยู่ในบริบทเดียวกับคำใบ้(หรือคำถาม)

ดังนั้น คอมพิวเตอร์อาจจะไม่เข้าใจตัวอักษรที่เรียงๆกันอยู่ในบทความยาวๆเลย แต่คอมพิวเตอร์สามารถนับจำนวนคำที่เกิดซ้ำๆกันได้ มันจึงสามารถเลือกคำที่น่าจะเป็นคำตอบออกมาได้ แต่การค้นหาแบบนี้จะได้แค่คำที่มักปรากฏร่วมกันกับคำใบ้ ซึ่งอาจจะไม่ใช่สิ่งที่โจทย์ถาม
ตัวอย่างเช่น CARD-DEALING BOX, CASINO นอกจากจะมี SHOE แล้ว คำจำพวก BET, TRUMP ก็น่าจะพบบ่อยในบริบทเดียวกันเช่นกัน
อย่างไรก็ตาม เทคนิคนี้ก็ใช้ในการกรองคำตอบเบื้องต้นได้

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

เช่น จากตัวอย่างคำถาม คอมพิวเตอร์จะสามารถบอกได้ว่า คำตอบ "น่าจะ" เป็นคำศัพท์ที่มีความหมายตามคำใบ้ โดยคอมพิวเตอร์พิจารณาจากชื่อหมวดคำถามซึ่งมีคำว่า MEANINGS ซึ่งคำตอบของคำถามทำนองนี้ในอดีตจะมีลักษณะเป็นการถามคำศัพท์

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

ข้อสังเกต/ความคิดเห็นจากการดูรายการ
1. มีกรณีที่ watson ตอบผิดซ้ำกับคนที่ตอบไปก่อนหน้า แสดงว่า watson ไม่คำนวณจากฐานข้อมูลล้วนๆ ไม่ปรับคำตอบแบบทันทีตามสถานการณ์
2. คำตอบที่ผิดที่เป็นที่ฮือฮาคือ watson ตอบคำถามหัวข้อ "ชื่อเมืองในสหรัฐอเมริกา" ว่า Toronto แต่ทั้งนี้ั้งนั้น ถ้าดูจากจำนวนเงินเดิมพันที่วางก็จะเห็นว่า watson วางเดิมพันกับคำตอบนี้ไว้ "ต่ำมาก" เช่นกัน
3. การเอาคอมพิวเตอร์มาแข่งกับคนดูจะไม่ค่อยยุติธรรมเท่าไหร่ โดยเฉพาะการถามเรื่องเล็กๆน้อยๆที่คนส่วนใหญ่ไม่ค่อยจะสนใจจำ เพราะคอมพิวเตอร์มีฐานข้อมูลขนาด "ใหญ่มาก"
4. ท่าทาง IBM จะเสียค่าโฆษณาให้รายการไปไม่น้อยทีเดียว

Further reading: Ferucci D. et al. Building Watson: An Overview of the DeepQA Project. AI Magazine Vol. 13 No. 3.
เทปรายการ
วันที่ 1 ตอน 1 http://www.youtube.com/watch?v=4PSPvHcLnN0
วันที่ 1 ตอน 2 http://www.youtube.com/watch?v=CtHlxzOXgYs
วันที่ 2 ตอน 1 http://www.youtube.com/watch?v=JvdjYPLp1Uo
วันที่ 2 ตอน 2 http://www.youtube.com/watch?v=FKaCBPfmAr0

ป.ล. ซักหน่อย
งานลักษณะนี้เรียกว่า QA system ซึ่งเป็นงานย่อยๆในงาน Information Retrieval (ตัวอย่างอื่นก็เช่น search engine)
งาน Information Retrieval นี้จัดว่าเป็น application ของงาน text processing (ตัวอย่าง application อื่นๆ ก็เช่น "Machine Translation" หึหึ) ส่วนงานวิจัยพื้นฐานในด้านนี้คือ Natural Language Processing (ส่วนใหญ่ก็เน้นที่ text processing) ซึ่งเป็นส่วนผสมของ Machine Learning และ Linguistics (นิดหน่อย)

1 comment:

bpasu said...

ตัวภาษาอังกฤษเล็กบ้างใหญ่บ้างในประโยคนะจารย์โจ้ หึ ๆ