ग्रिड-आधारित गेम सीखने के लिए तंत्रिका नेटवर्क के लिए इनपुट / आउटपुट एन्कोडिंग


13

मैं एक साधारण खिलौना खेल लिख रहा हूं, जिसके शीर्ष पर एक गहरे तंत्रिका नेटवर्क को प्रशिक्षित करने का इरादा है। खेल के नियम लगभग निम्नलिखित हैं:

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

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

  • टुकड़ों के पैटर्न के बाद से, मैं कम से कम कुछ दृढ़ परतों के बारे में सोच रहा था। बोर्ड विभिन्न आकार का हो सकता है लेकिन सिद्धांत रूप में बहुत कम (मेरे परीक्षणों पर 6x10, कुछ कोशिकाओं द्वारा विस्तारित किया जा सकता है)। क्या इस का कोई मतलब निकलता है? मैं किस तरह के पूलिंग का उपयोग कर सकता हूं?
  • दोनों पक्षों का प्रतिनिधित्व कैसे करें? जाने के बारे में इस पत्र में, लेखक दो इनपुट मैट्रिस का उपयोग करते हैं, एक सफेद पत्थरों के लिए और एक काले पत्थरों के लिए। क्या यह इस मामले में भी काम कर सकता है? लेकिन याद रखें कि मेरे पास विभिन्न प्रकार के टुकड़े हैं, ए, बी, सी और डी कहते हैं कि क्या मुझे 2x4 इनपुट मैट्रिस का उपयोग करना चाहिए? यह मेरे लिए बहुत विरल और कम दक्षता वाला लगता है। मुझे डर है कि यह काम करने के लिए दृढ़ परतों के लिए बहुत विरल होगा।
  • मुझे लगा कि आउटपुट बोर्ड की स्थिति का प्रतिनिधित्व करने वाले मैट्रिक्स पर संभावनाओं का एक वितरण हो सकता है, साथ ही संभावनाओं का एक अलग सरणी यह ​​दर्शाता है कि किस टुकड़े को खेलना है। हालांकि, मुझे मोड़ को पारित करने की क्षमता का प्रतिनिधित्व करने की भी आवश्यकता है , जो बहुत महत्वपूर्ण है। अन्य संभावनाओं के बीच इसके महत्व को कम किए बिना मैं इसे कैसे कर सकता हूं?
  • और सबसे महत्वपूर्ण बात , क्या मैं केवल चालें जीतने या चालें खोने को लागू करता हूं? जीतने की चाल को लागू करना आसान है क्योंकि मैंने अभी वांछित संभावनाएं 1 पर सेट की हैं। हालांकि हारने पर, मैं क्या कर सकता हूं? सेट करें कि संभाव्यता को 0 पर ले जाएं और अन्य सभी को समान मान दें? इसके अलावा, यह अंतिम स्कोर अंतर से चालों को लागू करने के लिए समझ में आता है, भले ही यह आउटपुट के अर्थ के खिलाफ जाता है, जो मोटे तौर पर संभाव्यताएं हैं?

इसके अलावा, मैंने Syn.ic को फ्रेमवर्क के रूप में उपयोग करने के लिए सोचकर नोड.जेएस में गेम इंजन विकसित किया है, लेकिन मुझे यकीन नहीं है कि यह कंविशनल नेटवर्क के साथ काम कर सकता है (मुझे संदेह है कि स्थानीय अवधारणात्मक क्षेत्रों से संबंधित भार को ठीक करने का एक तरीका है)। अन्य पुस्तकालयों पर कोई सलाह जो नोड के साथ संगत है?


क्या हम यह मानेंगे कि आप अज्ञात गेम को सीखने की मशीन चाहते हैं और फिर इसे जीतना सीखेंगे? (मशीन सीखने के सॉफ्टवेयर को लिखने से पहले प्रोग्रामर के लिए कौन से नियम उपलब्ध हैं, यह सीखने के लिए विरोध के रूप में)
FauChristian

जवाबों:


1
  • टुकड़ों का प्रतिनिधित्व करने के लिए, आपको एकल इनपुट मैट्रिक्स का उपयोग करने में सक्षम होना चाहिए। बस विभिन्न प्रकार के टुकड़ों के लिए एक पूर्णांक संख्या निर्दिष्ट करें। सफेद पत्थर सकारात्मक पूर्णांक हो सकते हैं और काले पत्थर नकारात्मक हो सकते हैं।

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

  • अंतिम स्कोर अंतर चालों की वांछनीयता पर बड़ा प्रभाव डालता है। फ़ंक्शन पर एक बड़े स्कोर अंतर का एक बड़ा प्रभाव होना चाहिए। इसलिए आप अपने नुकसान फ़ंक्शन में स्कोर अंतर की भयावहता को शामिल करना चाह सकते हैं।

यह एक प्रकार की नौकरी है जो डीप क्यू लर्निंग करता है। शायद आप उस पर भी गौर करना चाहेंगे।


1

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

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

मैं आउटपुट के लिए n + 1 घटकों के साथ केवल एक वेक्टर का उपयोग करूंगा: n सभी संभावित चालों के लिए, और 1 पास के लिए। यह प्रत्येक चाल के लिए अपेक्षित इनाम को सांकेतिक शब्दों में बदलना होगा, संभाव्यता को नहीं।

सुनिश्चित नहीं है कि आप कदमों को लागू करने से क्या मतलब है। लेकिन जब आप इसे क्यू-लर्निंग जैसी किसी चीज के साथ प्रशिक्षित करने जा रहे हैं, तो यह एक निश्चित संभावना के साथ हर बार और कुछ समय के लिए पूरी तरह से यादृच्छिक कदम बनाने में मदद करेगा। लुकअप https://en.wikipedia.org/wiki/Reinforce_learning


सेंसर ओवरकिल हैं।
फाउक्रिस्टियन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.