บริบท: ฉันเป็นโปรแกรมเมอร์ที่มีประสบการณ์ (ครึ่งหนึ่ง) ที่ถูกลืมในสถิติจากหลักสูตรของ uni เมื่อเร็ว ๆ นี้ฉันสะดุดกับhttp://akinator.comและใช้เวลาพยายามทำให้มันล้มเหลว แล้วใครล่ะ :)
ฉันตัดสินใจที่จะหาว่ามันทำงานได้อย่างไร หลังจาก googling และอ่านโพสต์บล็อกที่เกี่ยวข้องและเพิ่มความรู้ (จำกัด ) ของฉันลงในมิกซ์ผลลัพธ์ฉันขึ้นมากับโมเดลต่อไปนี้ (ฉันแน่ใจว่าฉันจะใช้สัญลักษณ์ผิดโปรดอย่าฆ่าฉันเพื่อสิ่งนั้น):
มีหัวเรื่อง (S) และคำถาม (Q) เป้าหมายของผู้ทำนายคือเลือกวิชาที่มีความน่าจะเป็นไปได้มากที่สุดในการเป็นวิชาที่ผู้ใช้กำลังคิดคำถามและคำตอบที่ได้รับมา
ให้เกม G จะเป็นชุดของคำถามที่ถามและคำตอบที่ได้รับ:\}
แล้วทำนายที่กำลังมองหา(G)}
ก่อนหน้าของวิชา ( ) อาจเป็นเพียงจำนวนครั้งที่ผู้ถูกเดาได้หารด้วยจำนวนเกมทั้งหมด
ทำให้สมมติฐานที่ว่าคำตอบทั้งหมดเป็นอิสระเราสามารถคำนวณความน่าจะเป็นของเรื่อง S ที่ได้รับจากเกม G ดังนี้:
เราสามารถคำนวณถ้าเราติดตามคำถามและคำตอบที่ได้รับเมื่อผู้ใช้มีถึงเรื่องที่กำหนด:
ตอนนี้กำหนดการแจกแจงความน่าจะเป็นของอาสาสมัครและเมื่อเราจำเป็นต้องเลือกคำถามถัดไปเราต้องเลือกคำถามที่การเปลี่ยนแปลงที่คาดหวังในเอนโทรปีของการแจกแจงนี้เป็นค่าสูงสุด:
ฉันพยายามใช้สิ่งนี้และใช้งานได้ แต่เห็นได้ชัดว่าเมื่อจำนวนของอาสาสมัครเพิ่มขึ้นประสิทธิภาพจะลดลงเนื่องจากความจำเป็นในการคำนวณหลังจากการย้ายแต่ละครั้งและคำนวณการกระจายการอัปเดตสำหรับ การเลือกคำถาม
ฉันสงสัยว่าฉันเพียงแค่เลือกรูปแบบที่ไม่ถูกต้องถูก จำกัด ด้วยขีด จำกัด ของความรู้ของฉัน หรืออาจมีข้อผิดพลาดในวิชาคณิตศาสตร์ โปรดให้ความกระจ่างแก่ฉัน: ฉันควรทำให้ตัวเองคุ้นเคยกับอะไรหรือจะเปลี่ยนแปลงตัวทำนายอย่างไรเพื่อที่จะสามารถรับมือกับวิชาหลายล้านเรื่องและคำถามมากมาย