एक कार्ड खेल खेलने के लिए एक तंत्रिका नेटवर्क सिखाओ


10

मैं वर्तमान में कार्ड गेम खेलने के लिए एक इंजन लिख रहा हूं, क्योंकि इस विशेष गेम के लिए अभी तक कोई इंजन नहीं है।

मैं बाद में खेल के लिए एक तंत्रिका जाल पेश करने में सक्षम होने की उम्मीद कर रहा हूं, और यह खेल खेलना सीख गया है।

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

मैंने न्यूरल नेटवर्क (ज्यादातर NEAT और HyperNEAT) के बारे में बहुत कुछ सीखा है और यहां तक ​​कि अपना खुद का कार्यान्वयन भी बनाया है। मैं अभी भी अनिश्चित हूं कि कैसे एक एआई का निर्माण किया जाए जो इस प्रकार के खेलों में सभी चर को ध्यान में रख सके। क्या कोई सामान्य दृष्टिकोण है? मुझे पता है कि Keldon ने RftG के लिए एक अच्छा AI लिखा है जिसमें जटिलता की एक अच्छी मात्रा है, मुझे यकीन नहीं है कि वह इस तरह के AI का निर्माण करने में कैसे कामयाब रहा।

कोई सलाह? क्या यह संभव है? क्या इसके कोई अच्छे उदाहरण हैं? इनपुट कैसे मैप किए गए?

संपादित करें: मैंने ऑनलाइन देखा है और सीखा है कि तंत्रिका नेटवर्क कैसे काम करते हैं और आमतौर पर वे कैसे छवि पहचान से संबंधित होते हैं या एक साधारण एजेंट का संचालन करते हैं। मुझे यकीन नहीं है कि अगर मैं एक जटिल तालमेल वाले कार्ड के साथ चयन करने के लिए इसे लागू करूंगा या कैसे करूंगा। मुझे जो दिखना चाहिए उसकी दिशा में बहुत सराहना की जाएगी।

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


अरे, AI.SE में आपका स्वागत है! जैसा कि वर्तमान में यह खड़ा है, यह हमें जवाब देने में सक्षम होने के लिए थोड़ा व्यापक दिखता है। क्या आपको लगता है कि आप इसे थोड़ा कम करने के लिए इसे संपादित कर सकते हैं ? धन्यवाद!
मिथिकल सेप

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

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

जवाबों:


3

मुझे लगता है कि आप एक अच्छा सवाल उठाते हैं, विशेष रूप से WRT से कि कैसे NN के इनपुट और आउटपुट को एक कार्ड गेम के मैकेनिक्स पर मैप किया जाता है, जैसे कि उपलब्ध कार्य संदर्भ के साथ बहुत भिन्न होते हैं।

मेरे पास पेशकश करने के लिए वास्तव में संतोषजनक जवाब नहीं है, लेकिन मैंने गैलेक्सी एनएन-आधारित एआई के लिए क्लेडॉन की रेस खेली है - सहमत हूं कि यह उत्कृष्ट है- और इस समस्या से निपटने के तरीके पर ध्यान दिया है।

Keldon के ऐ के लिए नवीनतम कोड अब खोजने और पर ब्राउज़ करने योग्य है GitHub

Ai कोड एक फ़ाइल में है । यह 2 विशिष्ट एनएन का उपयोग करता है, एक "हाथ और सक्रिय कार्ड का मूल्यांकन" और दूसरा "भूमिका विकल्पों की भविष्यवाणी" के लिए।

आप क्या नोटिस करेंगे कि यह गेम मैकेनिक्स को मॉडल करने के लिए गैर-एनएन कोड पर उचित मात्रा का उपयोग करता है। बहुत अधिक एक संकर समाधान।

मूल्यांकन राज्य में खेल राज्य की मैपिंग यहाँ की जाती है । विभिन्न प्रासंगिक विशेषताएं एक-हॉट-एन्कोडेड हैं, उदाहरण के लिए माल की संख्या जो उस मोड़ को बेचा जा सकता है।


एनएन में एक जटिल गेम की मैपिंग में एक और उत्कृष्ट मामला स्टडीक्राफ्ट II लर्निंग एनवायरनमेंट है जो कि ब्लिज़्म एंटरटेनमेंट के सहयोग से डीपमाइंड द्वारा बनाया गया है। यह पेपर एक सिंहावलोकन देता है कि कैसे Starcraft का एक खेल उन विशेषताओं के एक सेट पर मैप किया जाता है, जो एक NN व्याख्या कर सकता है, और कैसे एक NN एजेंट द्वारा गेम सिमुलेशन में कार्रवाई की जा सकती है।


2

यह पूरी तरह से संभव है, लेकिन जिस तरह से इनपुट्स की मैपिंग की जाती है, वह बहुत हद तक कार्ड गेम के प्रकार पर निर्भर करेगा, और यह कैसे खेला जाता है।

मैं कुछ संभावनाओं को ध्यान में रखूंगा:

  1. क्या इस खेल में समय मायने रखता है? क्या अतीत की चाल भविष्य को प्रभावित करेगी? इस मामले में, आप पुनरावर्ती तंत्रिका नेटवर्क (LSTM, GRUs, आदि) का उपयोग करना बेहतर होगा।
  2. क्या आप न्यूरल नेटवर्क को अपने द्वारा एकत्र किए गए डेटा को सीखना, या अपने दम पर सीखना चाहेंगे? यदि अपने दम पर, कैसे? यदि आप गेम के दसियों या सैकड़ों बार खेलने के लिए खुद का डेटा इकट्ठा करते हैं, तो इसे न्यूरल नेट में फीड करें, और इसे आपसे सीखें, फिर आप "बिहेवियरल क्लोनिंग" नामक कुछ कर रहे हैं। हालाँकि, यदि आप NN को स्वयं सीखना चाहते हैं, तो आप यह 2 तरीके कर सकते हैं:

    क) सुदृढीकरण सीखना - आरएल तंत्रिका नेट को कई बार खुद के खिलाफ खेलकर सीखने की अनुमति देता है ।

    बी) एनईएटी / जेनेटिक एल्गोरिथम - एनईएटी एक आनुवंशिक एल्गोरिथ्म का उपयोग करके तंत्रिका नेट को सीखने की अनुमति देता है।

हालांकि, फिर से, तंत्रिका नेट के इनपुट और आउटपुट को कैसे एन्कोड किया जाना चाहिए, इसके बारे में अधिक विशिष्ट जानकारी प्राप्त करने के लिए, मुझे कार्ड गेम के बारे में अधिक जानना होगा।


नमस्कार, उत्तर के लिए धन्यवाद! मैं इन क्षेत्रों की जांच करता हूं कि क्या लागू होता है। मैंने इस उम्मीद में आपके लिए इसे कम कर दिया है इस उम्मीद में खेल का एक छोटा विवरण जोड़ा है। मेरा इंजन पूर्ववत समर्थन करता है ताकि NN के साथ संयोजन में उपयोगी हो सके। जैसा कि इंजन अधूरा है, मेरे पास एक नमूना सेट नहीं है, लेकिन 2 खिलाड़ियों के बीच होस्टिंग सर्वर से सभी गेम इतिहास रखने पर योजना है। मैं प्रक्रिया को तेज करने के लिए प्रचार प्रसार का उपयोग करने पर विचार कर रहा था।
pcaston2

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

2

आप निश्चित रूप से खेल के बारे में अपने नेटवर्क के बारे में महत्वपूर्ण जानकारी जानना चाहेंगे, जैसे कि एआई एजेंट के पास कौन से कार्ड हैं (उनके मूल्य और प्रकार), मान पूल, मेज पर कितने कार्ड और उनके मूल्य, मोड़ की संख्या और इतने पर। ये चीजें आपको अपने आप से समझनी चाहिए, जो सवाल आपको खुद से पूछना चाहिए "अगर मैं इस मूल्य को इनपुट में जोड़ता हूं कि यह आपके सिस्टम को कैसे और क्यों बेहतर करेगा"। लेकिन समझने वाली पहली बात यह है कि अधिकांश एनएन को एक निरंतर इनपुट आकार के लिए डिज़ाइन किया गया है, और मैं इस खेल में इस बात को मानूंगा क्योंकि खिलाड़ियों के हाथ में या टेबल पर अलग-अलग कार्ड हो सकते हैं। उदाहरण के लिए, आप NN को बताना चाहते हैं कि उसके पास कौन से कार्ड हैं, मान लें कि खिलाड़ी के हाथ में अधिकतम 5 कार्ड हो सकते हैं और प्रत्येक कार्ड में 3 मान (मान, आक्रमण और स्वास्थ्य) हो सकते हैं, इसलिए आप इसे 5 के रूप में एन्कोड कर सकते हैं * 3 वेक्टर, जहाँ पहले 3 मान कार्ड नंबर एक इत्यादि का प्रतिनिधित्व करते हैं। लेकिन क्या होगा अगर खिलाड़ी के पास वर्तमान में 3 कार्ड हैं, एक सरल तरीका यह होगा कि पिछले 6 इनपुटों को शून्य असाइन किया जाए, लेकिन इससे समस्या हो सकती है क्योंकि कुछ कार्डों में 0 मन लागत या 0 हमला हो सकता है। तो आपको यह पता लगाने की आवश्यकता है कि इस समस्या को कैसे हल किया जाए। आप एनएन मॉडल की तलाश कर सकते हैं जो चर इनपुट आकार को संभाल सकते हैं या यह पता लगा सकते हैं कि निरंतर आकार के वेक्टर के रूप में इनपुट को कैसे एनकोड करना है।

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

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

पुनश्च। तंत्रिका नेटवर्क के साथ इस समस्या को हल करना संभव है, हालांकि, तंत्रिका नेटवर्क जादू नहीं है और सभी समस्याओं का सार्वभौमिक समाधान नहीं है। यदि आपका लक्ष्य इस निश्चित समस्या को हल करना है, तो मैं आपको गेम सिद्धांत और एआई में इसके आवेदन को खोदने की भी सिफारिश करूंगा। मैं कहूंगा, कि इस समस्या को हल करने के लिए AI के विभिन्न क्षेत्रों से जटिल ज्ञान की आवश्यकता होगी।

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


1

हाँ। यह संभव है।

प्रश्न का अवलोकन

लगता है कि सिस्टम का डिज़ाइन लक्ष्य एक कार्ड गेम खेलने वाले इंजन के साथ एक या एक से अधिक कृत्रिम नेटवर्क को नियोजित करके एक रणनीतिक लाभ प्राप्त कर रहा है।

यह प्रश्न मॉर्गनस्टर्न और वॉन न्यूमन के गेम थ्योरी में उल्लिखित खेल-खेल की मूल बातें के बारे में एक सामान्य जागरूकता दिखाता है ।

  • गेम खेलने के दौरान विशिष्ट बिंदुओं पर एक खिलाड़ी को एक चाल को निष्पादित करने की आवश्यकता हो सकती है।
  • खेल के नियमों के अनुसार चाल विकल्पों का एक अंतिम सेट है।
  • एक चाल का चयन करने के लिए कुछ रणनीतियों अन्य रणनीतियों की तुलना में कई खेल नाटकों पर उच्च जीतने वाले रिकॉर्ड का उत्पादन करते हैं।
  • एक कृत्रिम नेटवर्क को गेम-प्ले रणनीतियों का उत्पादन करने के लिए नियोजित किया जा सकता है जो यादृच्छिक चाल चयन से अधिक बार विजयी होते हैं।

गेम-प्ले की अन्य विशेषताएं स्पष्ट नहीं भी हो सकती हैं।

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

सामान्य दृष्टिकोण संकेत

इनपुट और आउटपुट दोनों को मैप करने के लिए एक सामान्य दृष्टिकोण है, लेकिन स्टैक एक्सचेंज के उत्तर में व्याख्या करने के लिए बहुत कुछ है। ये कुछ बुनियादी सिद्धांत हैं।

  • स्पष्ट रूप से किया जा सकता है कि मॉडलिंग के सभी किया जाना चाहिए। उदाहरण के लिए, हालांकि एक कृत्रिम नेट सैद्धांतिक रूप से सीख सकता है कि कार्ड कैसे गिनें (प्रत्येक कार्ड के संभावित स्थानों पर नज़र रखना), एक साधारण गणना एल्गोरिथ्म ऐसा कर सकता है, इसलिए ज्ञात एल्गोरिथ्म का उपयोग करें और उन परिणामों को कृत्रिम नेटवर्क में फ़ीड करें इनपुट।
  • इनपुट के रूप में किसी भी जानकारी का उपयोग करें, जो इष्टतम आउटपुट के साथ संबद्ध है, लेकिन किसी भी जानकारी के इनपुट के रूप में उपयोग न करें जो संभवतः इष्टतम आउटपुट के साथ संबद्ध नहीं है।
  • प्रशिक्षण और स्वचालित गेम-प्ले के दौरान, इनपुट वेक्टर में अतिरेक को कम करने के लिए डेटा को एनकोड करें। अमूर्त और सामान्यीकरण इसे प्राप्त करने के दो सामान्य तरीके हैं। फ़ीचर निष्कर्षण का उपयोग उपकरण के रूप में या तो सार या सामान्यीकरण के लिए किया जा सकता है। यह इनपुट और आउटपुट दोनों पर किया जा सकता है। एक उदाहरण यह है कि यदि इस खेल में, J> 10 उसी तरह से है कि A> K, K> Q, Q> J और 10> 9 है, तो कार्ड को 2 से 14 या 0 से 12 के माध्यम से पूर्णांक के रूप में एनकोड करें। घटाना। चार टेक्स्ट स्ट्रिंग्स के बजाय सूट को 0 से 3 तक एनकोड करें।

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

आर्टिफिशियल नेटवर्क क्या करेगा और ट्रेनिंग करेगा उदाहरण

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

आप उदाहरणों की व्यवस्था कैसे करते हैं और क्या आप उन्हें कैसे लेबल करते हैं यह विचार करने योग्य है, हालांकि कार्ड गेम के नियमों के बिना कोई भी विश्वसनीय दिशा देना मुश्किल है। चाहे साझेदार हों, चाहे वह स्कोर आधारित हो, चाहे जीत की चाल हो, और एक दर्जन अन्य कारक उन निर्णयों को बनाने के लिए आवश्यक परिदृश्य के मापदंडों को प्रदान करते हैं।

अध्ययन करें

मुख्य सलाह जो मैं दे सकता हूं, वह है कि वेब पर इतने सामान्य लेख न पढ़ें, लेकिन कुछ किताबें और कुछ पेपर आप उपरोक्त विषयों पर समझ सकते हैं। फिर कुछ कोड ढूंढें जिन्हें आप डाउनलोड करने के बाद शब्दावली को अच्छी तरह से समझने के लिए डाउनलोड कर सकते हैं।

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

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