Akinator.com और Naive Bayes क्लासिफायरियर


12

संदर्भ: मैं यूनी पाठ्यक्रमों के आंकड़ों में कुछ (आधे-भूल गए) अनुभव वाला एक प्रोग्रामर हूं। हाल ही में मैंने http://akinator.com पर ठोकर खाई और इसे विफल बनाने के लिए कुछ समय बिताया। और कौन नहीं था? :)

मैंने यह पता लगाने का फैसला किया है कि यह कैसे काम कर सकता है। Googling और संबंधित ब्लॉग पोस्ट पढ़ने और परिणामी मिश्रण में अपने कुछ (सीमित) ज्ञान जोड़ने के बाद मैं निम्नलिखित मॉडल के साथ आता हूं (मुझे यकीन है कि मैं गलत संकेतन का उपयोग करूंगा, कृपया मुझे इसके लिए मार न डालें):

विषय (S) और प्रश्न (Q) हैं। भविष्यवक्ता का लक्ष्य एस विषय का चयन करना है, जिसमें उस विषय के होने की सबसे बड़ी संभावना है, जिसके बारे में उपयोगकर्ता अब तक एकत्र किए गए प्रश्नों और उत्तरों के बारे में सोच रहा है।

गेम जी से पूछे गए सवालों के जवाब दिए जाएं और दिए गए जवाब: ।{q1,a1},{q2,a2}...{qn,an}

फिर भविष्यवक्ता ।P(S|G)=P(G|S)P(S)P(G)

विषयों के लिए ( ) से पहले कई बार खेल की कुल संख्या से विभाजित होने वाले विषय का अनुमान लगाया जा सकता है।P(S)

यह धारणा बनाते हुए कि सभी उत्तर स्वतंत्र हैं, हम इस विषय की संभावना की गणना कर सकते हैं कि एस ने खेल को इस तरह दिया है:

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
मुझे संदेह है कि यह एक बेव बेयस है, बल्कि कुछ निर्णय पेड़ ने हर बार बढ़ाया जो किसी को पहचानने में विफल रहता है।

1
क्या इस तरह के निर्णय पेड़ को अद्यतन करने के लिए बहुत बुरा नहीं होगा? इसके अलावा, मुझे गलती से गलत / ईमानदार-गलत जवाब देने का कोई आसान तरीका नहीं दिखता है और फिर भी निर्णय पेड़ के साथ अंत में मिलता है
ADEpt

5
बीस साल पुराने 20-प्रश्न अनुमानक के पुनर्जन्म जैसा दिखता है, अब 20q.net पर । यहाँ एक लोकप्रिय विवेचन है कि यह कैसे काम करता है mentalfloss.com/blogs/archives/13725
यारोस्लाव

5
मुझे माफ करना, लेकिन मुझे लगता है कि "कृत्रिम बुद्धिमत्ता" और "तंत्रिका नेटवर्क" का उपयोग बिना किसी संदर्भ के स्पष्टीकरण के रूप में होता है। और मैं यह नहीं देख सकता कि कोई इस तरह के लिए तंत्रिका जाल का उपयोग कैसे कर सकता है - उदाहरण के लिए आउटपुट फ़ंक्शन क्या होगा?
ADEpt

Hi @ADEpt, सवाल पूछे जाने के बाद से यह एक समय हो गया है, लेकिन क्या आप उस कार्यान्वयन के लिए स्रोत कोड साझा कर सकते हैं जो आपने वहां वापस किया था?
प्रभा

जवाबों:


10

यह गेम http://20q.net पर 20 प्रश्नों के समान दिखता है , जो निर्माता रिपोर्ट एक तंत्रिका नेटवर्क पर आधारित है। इस तरह के नेटवर्क को तैयार करने का एक तरीका है, कॉन्सेप्ट विवरण वैक्टर और 20 प्रश्न गेम में वर्णित तंत्रिका नेटवर्क के समान ।

आपके पास होगा

  1. "अंतिम" प्रश्नों के रूप में चिह्नित कुछ प्रश्नों के साथ निश्चित संख्या में प्रश्न।
  2. प्रति प्रश्न एक इनपुट यूनिट, जहां उत्तर का 0/1प्रतिनिधित्व करता no/yesहै। शुरू में सेट किया गया0.5
  3. प्रति प्रश्न एक आउटपुट यूनिट, सिग्मॉइड 0..1 रेंज में स्क्वॉयड
  4. छिपी परत सभी इनपुट इकाइयों को सभी आउटपुट इकाइयों से जोड़ती है।

जिन सवालों के जवाब दिए गए हैं उनके लिए इनपुट इकाइयाँ 0 या 1 पर सेट हैं, और धारणा यह है कि तंत्रिका नेटवर्क को ऐसे सवालों के लिए आउटपुट इकाइयों को 1 के करीब बनाने के लिए प्रशिक्षित किया गया है जिनके पास "हां" जवाब है, जो मौजूदा उत्तरों का एक सेट है।

प्रत्येक चरण में आप उस प्रश्न को चुनेंगे जिसके NNबारे में कम से कम निश्चित है, अर्थात, संबंधित आउटपुट इकाई के करीब है 0.5, प्रश्न पूछें, और संबंधित इनपुट इकाई को उत्तर में सेट करें। अंतिम चरण में आप "अंतिम प्रश्न" सूची से आउटपुट इकाई को निकटतम मान के साथ लेते हैं 1

20 प्रश्नों के प्रत्येक गेम में 20 डेटा पॉइंट दिए जाते हैं, जिनका उपयोग आप NNबैक-प्रचार के साथ वज़न अपडेट करने के लिए कर सकते हैं , यानी, आप वर्तमान न्यूरल नेटवर्क के आउटपुट को बनाने के लिए वेट को अपडेट करते हैं, जो पिछले सभी पूछे गए प्रश्नों के सही उत्तर से मेल खाते हैं।


7

मुझे नहीं लगता कि यह वास्तव में एक वर्गीकरण समस्या है। 20 प्रश्नों को अक्सर एक संपीड़न समस्या के रूप में चित्रित किया जाता है। यह वास्तव में आपके प्रश्न के अंतिम भाग के साथ बेहतर रूप से मेल खाता है जहां आप एन्ट्रॉपी के बारे में बात करते हैं।

अध्याय 5.7 ( Google पुस्तकें ) देखें

कवर, टीएम और जॉय, एटी (2006) सूचना के सिद्धांत के तत्व

और हफ़मैन कोडिंग भी । यह पेपर मुझे arXiv पर मिला है और रूचि का भी हो सकता है।

गिल, जेटी और वू, डब्ल्यू। (2010) "ट्वेंटी क्वेश्चन गेम्स ऑलवेज एंड विद यस" http://arxiv.org/abs/1002.4907

सादगी के लिए हां / नहीं का सवाल है (जबकि akinator.com अनुमति देता है शायद, पता नहीं)। मान लें कि हर संभव विषय (जिसे akinator.com जानता है) को विशिष्ट रूप से हाँ / नहीं प्रश्न और उत्तर के अनुक्रम द्वारा पहचाना जा सकता है - अनिवार्य रूप से एक द्विआधारी वेक्टर।

पूछे जाने वाले प्रश्न (और उनके उत्तर) विषयों के स्थान के एक पुनरावर्ती विभाजन को परिभाषित करते हैं। यह विभाजन एक पेड़ की संरचना से भी मेल खाता है। पेड़ के आंतरिक कोने सवालों के अनुरूप हैं, और पत्ते विषयों के अनुरूप हैं। पत्तियों की गहराई वास्तव में विषय की विशिष्ट पहचान के लिए आवश्यक प्रश्नों की संख्या है। आप हर संभव सवाल पूछकर हर ज्ञात विषय की पहचान (तुच्छ रूप से) कर सकते हैं। यह दिलचस्प नहीं है क्योंकि संभावित सैकड़ों सवाल हैं।

हफ़मैन कोडिंग के साथ संबंध यह है कि यह पेड़ के निर्माण के लिए एक इष्टतम तरीका (एक निश्चित संभाव्य मॉडल के तहत) देता है ताकि औसत गहराई (लगभग) न्यूनतम हो। दूसरे शब्दों में, यह आपको बताता है कि प्रश्नों के अनुक्रम को कैसे व्यवस्थित किया जाए (एक पेड़ का निर्माण) ताकि आपके द्वारा पूछे जाने वाले प्रश्नों की संख्या औसतन छोटी हो। यह एक लालची दृष्टिकोण का उपयोग करता है।

बेशक, इससे अधिक akinator.com है, लेकिन मूल विचार यह है कि आप एक पेड़ के संदर्भ में समस्या के बारे में सोच सकते हैं और इसके पत्तों की औसत गहराई को कम करने की कोशिश कर सकते हैं।


यह एक अच्छी शुरुआत है, लेकिन मुझे लगता है कि समस्या अधिक है। उदाहरण के लिए: उन्हें सवालों के जवाब कैसे मिलते हैं? संभवतः वे पिछले खिलाड़ियों (एक सुदृढीकरण सीखने की समस्या) द्वारा दिए गए उत्तरों का उपयोग करते हैं, जिस स्थिति में हम एक प्रश्न चुनने के व्यापार का सामना करते हैं जो (ए) वर्तमान खिलाड़ी के लिए समस्या का हल करता है, और (बी) भविष्य के खिलाड़ियों के लिए जानकारी प्रदान करता है।
साइमन बायरन

पहली नज़र में, 20 प्रश्नों और हफ़मैन कोडिंग के बीच सादृश्यता बनाने की क्षमता "रेंज प्रश्न" पूछने की क्षमता पर टिका है। इसके बजाय, "क्या आप चरित्र कभी अंतरिक्ष में गए हैं?" हम "कंबल" सवाल पूछ रहे हैं जैसे "क्या वह कभी अंतरिक्ष में गया है, या एक पुरुष है, या गंजा है, या एक फिल्म में था, या ... (100500 अन्य विकल्प)?" क्या मैं सही हू? यदि ऐसा है, तो मुझे शायद यह स्पष्ट करने के लिए अपने प्रश्न को संपादित करना चाहिए कि मुझे "एक से एक पूछें" किस्म में दिलचस्पी है
ADEpt

साथ ही, अधिकांश लेख जो हफमैन कोड को 20 प्रश्नों के लिए मॉडल के रूप में उपयोग करते हैं, इसका मतलब यह है कि प्रश्नकर्ता अपने स्वयं के प्रश्न बनाने के लिए स्वतंत्र है, जो संक्षेप में "क्या ऑब्जेक्ट के लिए कोडवर्ड में बिट " को उबालता है ? हालांकि, मेरे मामले में (या, बल्कि, akinator.com के मामले) प्रश्नों का सेट पूर्वनिर्धारित है, और यह (जाहिर है) हफ़मैन कोडवर्ड के साथ कुछ भी नहीं है। अभी मैं यह नहीं देख सकता कि अपने प्रश्न से हफमैन कोड में संक्रमण कैसे किया जाए। शायद आप विस्तार से बता सकते हैं? i0
ADEpt

@vqv: Re: "मुझे नहीं लगता कि यह वास्तव में एक वर्गीकरण समस्या है। 20 प्रश्नों को अक्सर एक संपीड़न समस्या के रूप में चित्रित किया जाता है।" सांख्यिकीय निष्कर्ष और सूचना संपीड़न सीधे संबंधित / समान समस्या नहीं हैं?
यांग

@ यंग आप जोर्मा रिस्सेन के तर्क का उल्लेख कर रहे हैं? सांख्यिकीय निष्कर्ष और सूचना संपीड़न दोनों अनिश्चितता का वर्णन करने के लिए संभाव्य मॉडल का उपयोग करते हैं, हालांकि उनके दृष्टिकोण और यदि उन क्षेत्रों में शोधकर्ता आम तौर पर बहुत अलग हैं। मेरे कहने का मतलब यह है कि वर्गीकरण समस्या के बजाय 20 प्रश्न अधिक स्वाभाविक रूप से एक संपीड़न (विशेष रूप से, स्रोत कोडिंग) समस्या के रूप में तैयार हो सकते हैं। … नीचे जारी है
vqv
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.