Akinator.com และ Naive Bayes ตัวจําแนก


12

บริบท: ฉันเป็นโปรแกรมเมอร์ที่มีประสบการณ์ (ครึ่งหนึ่ง) ที่ถูกลืมในสถิติจากหลักสูตรของ uni เมื่อเร็ว ๆ นี้ฉันสะดุดกับhttp://akinator.comและใช้เวลาพยายามทำให้มันล้มเหลว แล้วใครล่ะ :)

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

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

ให้เกม G จะเป็นชุดของคำถามที่ถามและคำตอบที่ได้รับ:\}{q1,a1},{q2,a2}...{qn,an}

แล้วทำนายที่กำลังมองหา(G)}P(S|G)=P(G|S)P(S)P(G)

ก่อนหน้าของวิชา ( ) อาจเป็นเพียงจำนวนครั้งที่ผู้ถูกเดาได้หารด้วยจำนวนเกมทั้งหมดP(S)

ทำให้สมมติฐานที่ว่าคำตอบทั้งหมดเป็นอิสระเราสามารถคำนวณความน่าจะเป็นของเรื่อง S ที่ได้รับจากเกม G ดังนี้:

P(G|S)=i=1..nP({qi,ai}|S)

เราสามารถคำนวณถ้าเราติดตามคำถามและคำตอบที่ได้รับเมื่อผู้ใช้มีถึงเรื่องที่กำหนด:P({qi,ai}|S)

P(q,a|S)=answer a was given to question q in the game when S was the subjectnumber of times q was asked in the games involving S

ตอนนี้กำหนดการแจกแจงความน่าจะเป็นของอาสาสมัครและเมื่อเราจำเป็นต้องเลือกคำถามถัดไปเราต้องเลือกคำถามที่การเปลี่ยนแปลงที่คาดหวังในเอนโทรปีของการแจกแจงนี้เป็นค่าสูงสุด:P(S|G)

argmaxj(H[P(S|G)]a=yes,no,maybe...H[P(S|G{qj,a})]

ฉันพยายามใช้สิ่งนี้และใช้งานได้ แต่เห็นได้ชัดว่าเมื่อจำนวนของอาสาสมัครเพิ่มขึ้นประสิทธิภาพจะลดลงเนื่องจากความจำเป็นในการคำนวณหลังจากการย้ายแต่ละครั้งและคำนวณการกระจายการอัปเดตสำหรับ การเลือกคำถามP(S|G)P(S|G{qj,a})

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


4
ฉันสงสัยว่ามันเป็น Naive Bayes แต่ต้นไม้การตัดสินใจบางอย่างขยายออกไปในแต่ละครั้งที่ไม่รู้จักใคร

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

5
ดูเหมือนว่าการเกิดใหม่ของยี่สิบปีเก่า 20 คำถามเดาตอนนี้20q.net ต่อไปนี้เป็นคำอธิบายที่ได้รับความนิยมวิธีใช้งานmindfloss.com/blogs/archives/13725
Yaroslav Bulatov

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

สวัสดี @ADEpt มันเป็นคำถามที่ถามกันมานานแล้ว แต่คุณสามารถแบ่งปันซอร์สโค้ดสำหรับการใช้งานที่คุณได้กลับไปแล้วหรือยัง
prikha

คำตอบ:


10

เกมนี้มีลักษณะคล้ายกับ 20 คำถามที่http://20q.netซึ่งรายงานของผู้สร้างขึ้นอยู่กับเครือข่ายประสาท ต่อไปนี้เป็นวิธีหนึ่งที่จะจัดโครงสร้างเครือข่ายดังกล่าวคล้ายกับเครือข่ายประสาทที่อธิบายไว้ใน คอนเซ็ปต์เวกเตอร์รายละเอียดและเกม 20 คำถาม

คุณมี

  1. จำนวนคำถามที่แน่นอนโดยมีคำถามที่ระบุว่าเป็นคำถาม "สุดท้าย"
  2. หน่วยการป้อนข้อมูลต่อหนึ่งคำถามที่0/1แสดงถึงno/yesคำตอบ เริ่มแรกตั้งค่าเป็น0.5
  3. หนึ่งหน่วยเอาต์พุตต่อคำถาม sigmoid squished เป็นช่วง 0..1
  4. เลเยอร์ที่ซ่อนอยู่เชื่อมต่อหน่วยอินพุตทั้งหมดกับหน่วยเอาต์พุตทั้งหมด

หน่วยอินพุตสำหรับคำถามที่ได้รับการตอบถูกตั้งค่าเป็น 0 หรือ 1 และสันนิษฐานว่าเครือข่ายประสาทเทียมได้รับการฝึกอบรมเพื่อให้ค่าเอาต์พุตของหน่วยเอาต์พุตใกล้เคียงกับ 1 สำหรับคำถามที่มีคำตอบ "ใช่" ที่ให้ชุดคำตอบที่มีอยู่

ในแต่ละขั้นตอนคุณจะเลือกคำถามที่NNมีความมั่นใจน้อยที่สุดเช่นหน่วยเอาท์พุทที่เกี่ยวข้องนั้นอยู่ใกล้กับ0.5ถามคำถามและตั้งค่าหน่วยอินพุตที่สอดคล้องกับคำตอบ ในขั้นตอนสุดท้ายที่คุณเลือกหน่วยผลผลิตจาก "คำถามสุดท้าย" 1รายการที่มีมูลค่าใกล้เคียงกับ

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


7

ฉันไม่คิดว่ามันเป็นปัญหาการจัดหมวดหมู่ คำถาม 20 ข้อมักมีลักษณะเป็นปัญหาการบีบอัด สิ่งนี้จะเข้ากันได้ดีกับคำถามสุดท้ายที่คุณพูดถึงเอนโทรปี

ดูบทที่ 5.7 ( Google หนังสือ ) ของ

Cover, TM และ Joy, AT (2006) องค์ประกอบของทฤษฎีข้อมูล

และยังHuffman การเข้ารหัส บทความนี้ฉันพบ arXiv อาจเป็นที่สนใจเช่นกัน

Gill, JT และ Wu, W. (2010) "เกมคำถามยี่สิบคำถามจบลงด้วยใช่เสมอ" http://arxiv.org/abs/1002.4907

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

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

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

มีแน่นอนมากกว่า akinator.com มากกว่านี้ แต่แนวคิดพื้นฐานคือคุณสามารถคิดถึงปัญหาในแง่ของต้นไม้และพยายามลดความลึกเฉลี่ยของใบไม้


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

เมื่อมองอย่างรวดเร็วครั้งแรกความสามารถในการวาดแบบเปรียบเทียบระหว่าง 20 คำถามและการเข้ารหัส Huffman บานพับเกี่ยวกับความสามารถในการถาม "คำถามช่วง" นั่นคือแทนที่จะเป็น "คุณเคยไปที่ช่องว่างใช่ไหม" เรากำลังถามคำถาม "ผ้าห่ม" เช่น "เขาเคยไปที่อวกาศหรือเป็นผู้ชายหรือเป็นล้านหรืออยู่ในภาพยนตร์หรือ ... (100500 ตัวเลือกอื่น ๆ )" ฉันถูกไหม? ถ้าเป็นเช่นนั้นฉันควรแก้ไขคำถามของฉันเพื่อให้ชัดเจนว่าฉันสนใจ "ถามทีละคน" วาไรตี้
ADEpt

นอกจากนี้บทความส่วนใหญ่ที่ใช้รหัส Huffman เป็นแบบจำลองสำหรับคำถาม 20 ข้อหมายความว่าผู้ถามมีอิสระในการสร้างคำถามของเขาเองซึ่งในสาระสำคัญต้มลงไปที่ "บิตใน codeword สำหรับวัตถุคือ " หรือไม่ อย่างไรก็ตามในกรณีของฉัน (หรือค่อนข้างเป็นกรณีของ akinator.com) ชุดคำถามถูกกำหนดไว้ล่วงหน้าและ (แน่นอน) ไม่มีส่วนเกี่ยวข้องกับ codewords Huffman ตอนนี้ฉันไม่เห็นวิธีการเปลี่ยนจากคำถามของฉันเป็นรหัส Huffman บางทีคุณสามารถทำอย่างละเอียด? 0i0
เพิ่ม

@ vqv: Re: "ฉันไม่คิดว่ามันเป็นปัญหาการจำแนกจริง ๆ คำถาม 20 ข้อมักจะมีลักษณะเป็นปัญหาการบีบอัด" การอนุมานเชิงสถิติและการบีบอัดข้อมูลไม่เกี่ยวข้องโดยตรง / เป็นปัญหาเดียวกันหรือ
ยาง

@Yang คุณหมายถึงข้อโต้แย้งของ Jorma Rissannen หรือไม่? การอนุมานทางสถิติและการบีบอัดข้อมูลใช้ประโยชน์จากแบบจำลองความน่าจะเป็นเพื่ออธิบายความไม่แน่นอนอย่างไรก็ตามมุมมองและหากนักวิจัยในพื้นที่เหล่านั้นแตกต่างกันมาก สิ่งที่ฉันหมายถึงข้างต้นคือคำถาม 20 ข้อสามารถกำหนดขึ้นเองตามธรรมชาติเป็นปัญหาการบีบอัด (โดยเฉพาะการเข้ารหัสซอร์ส) แทนที่จะเป็นปัญหาการจำแนกประเภท …ดำเนินการต่อไปด้านล่าง
vqv
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.