अद्यतन 2018-07-26: यह बात है! अब हम उस बिंदु पर आ रहे हैं, जहाँ इस तरह का खेल सॉल्व होगा! OpenAI का उपयोग करते हुए और DotA 2 के खेल के आधार पर, एक टीम एक AI बना सकती है जो अर्ध-पेशेवर गेमर्स को 5v5 गेम में हरा सकती है । यदि आप DotA 2 को जानते हैं, तो आप जानते हैं कि यह खेल यांत्रिकी के संदर्भ में डियाब्लो जैसे गेम से काफी मिलता-जुलता है, लेकिन कोई यह तर्क दे सकता है कि टीम खेलने के कारण यह और भी जटिल है।
जैसा कि अपेक्षित था, यह गहन सीखने के साथ सुदृढीकरण सीखने में नवीनतम अग्रिमों के लिए धन्यवाद प्राप्त किया गया था, और ओपनएआई जैसे खुले गेम फ्रेमवर्क का उपयोग करके जो कि एक स्वच्छ एपीआई प्राप्त करने के बाद से एआई के विकास को आसान बनाता है और इसलिए भी कि आप गेम को तेज कर सकते हैं (एआई खेला खुद के खिलाफ 180 साल के गेमप्ले के बराबर!)।
5 अगस्त 2018 (10 दिनों में!) पर , इस एआई को शीर्ष डॉट 2 गेमर्स के खिलाफ गड्ढे में डालने की योजना है। यदि यह काम करता है, तो एक बड़ी क्रांति की उम्मीद करें, शायद गो गेम को सुलझाने के रूप में ध्यान न दिया जाए, लेकिन यह खेल एआई के लिए एक बहुत बड़ा मील का पत्थर होगा!
UPDATE 2017-01: अल्फ़ागो की सफलता के बाद से यह क्षेत्र बहुत तेजी से आगे बढ़ रहा है, और लगभग हर महीने गेम पर मशीन लर्निंग एल्गोरिदम के विकास की सुविधा के लिए नए ढांचे हैं। यहाँ नवीनतम लोगों की एक सूची है जो मैंने पाया है:
- OpenAI's यूनिवर्स : मशीन लर्निंग का उपयोग करके वस्तुतः किसी भी खेल को खेलने के लिए एक मंच । एपीआई पायथन में है, और यह वीएनसी रिमोट डेस्कटॉप वातावरण के पीछे गेम चलाता है, इसलिए यह किसी भी गेम की छवियों को कैप्चर कर सकता है! आप शायद मशीन सीखने के एल्गोरिथ्म के माध्यम से डियाब्लो II खेलने के लिए यूनिवर्स का उपयोग कर सकते हैं!
- OpenAI का जिम : यूनिवर्स के समान लेकिन सुदृढीकरण सीखने वाले एल्गोरिदम को विशेष रूप से लक्षित करना (इसलिए यह अल्फागो द्वारा उपयोग किए जाने वाले ढांचे के सामान्यीकरण की तरह है लेकिन बहुत अधिक गेम के लिए)। उदमी पर एक कोर्स है जो ओपनएआई जिम का उपयोग करके ब्रेकआउट या डूम जैसे खेलों के लिए मशीन सीखने के आवेदन को कवर करता है।
- टॉर्चर : मशाल (मशीन लर्निंग फ्रेमवर्क) और स्टारक्राफ्ट: ब्रूड वॉर के बीच एक सेतु ।
- pyGTA5 : केवल स्क्रीन कैप्चर ( ऑनलाइन बहुत सारे वीडियो के साथ) का उपयोग करके GTA5 में सेल्फ-ड्राइविंग कार बनाने का प्रोजेक्ट ।
बहुत ही रोमांचक समय!
महत्वपूर्ण अद्यतन (2016-06): जैसा कि ओपी ने उल्लेख किया है, केवल दृश्य इनपुट का उपयोग करके गेम खेलने के लिए कृत्रिम नेटवर्क को प्रशिक्षित करने की यह समस्या कई गंभीर संस्थानों द्वारा दी जा रही है, जिसमें काफी आशाजनक परिणाम हैं, जैसे डीपमाइंड डीप-क्लेर्निंग-नेटवर्क (DQN) ) ।
और अब, यदि आप अगले स्तर की चुनौती पर उतरना चाहते हैं, तो आप विभिन्न AI विज़न गेम डेवलपमेंट प्लेटफ़ॉर्म में से एक का उपयोग कर सकते हैं , जैसे कि विज़्ज़ूम , एक अत्यधिक अनुकूलित प्लेटफ़ॉर्म (7000 एफपीएस) केवल विज़ुअल इनपुट का उपयोग करके डूम खेलने के लिए नेटवर्क को प्रशिक्षित करने के लिए। :
वीजेडूमूम एआई बॉट्स को विकसित करने की अनुमति देता है जो केवल दृश्य जानकारी (स्क्रीन बफर) का उपयोग करके डूम खेलते हैं। यह मुख्य रूप से मशीन विज़ुअल लर्निंग, और विशेष रूप से गहरी सुदृढीकरण सीखने में अनुसंधान के लिए अभिप्रेत है। वियाज़ूम गेम मैकेनिक्स को प्रदान करने के लिए ZDoom पर आधारित है।
और परिणाम काफी आश्चर्यजनक हैं, उनके वेबपेज पर वीडियो और अच्छे ट्यूटोरियल (पायथन में) देखें!
Quake 3 Arena के लिए भी एक ऐसी ही परियोजना है, जिसे Quagents कहा जाता है , जो अंतर्निहित गेम डेटा को आसान API एक्सेस प्रदान करता है, लेकिन आप इसे स्क्रैप कर सकते हैं और केवल अपने एजेंट को नियंत्रित करने के लिए स्क्रीनशॉट और एपीआई का उपयोग कर सकते हैं।
अगर हम केवल स्क्रीनशॉट का उपयोग करते हैं तो ऐसा प्लेटफॉर्म क्यों उपयोगी है? यहां तक कि अगर आप अंतर्निहित गेम डेटा तक नहीं पहुंचते हैं, तो ऐसा प्लेटफॉर्म प्रदान करता है:
- खेलों का उच्च निष्पादन कार्यान्वयन (आप कम समय के साथ अधिक डेटा / नाटक / सीखने की पीढ़ी उत्पन्न कर सकते हैं ताकि आपके सीखने के एल्गोरिदम तेजी से जुट सकें!)।
- अपने एजेंटों को नियंत्रित करने के लिए एक सरल और उत्तरदायी एपीआई (यानी, यदि आप गेम को नियंत्रित करने के लिए मानव इनपुट का उपयोग करने की कोशिश करते हैं, तो आपके कुछ आदेश खो सकते हैं, इसलिए आप अपने आउटपुट की अविश्वसनीयता से भी निपटेंगे ...)।
- कस्टम परिदृश्यों का आसान सेटअप ।
- अनुकूलन रेंडरिंग (उन चित्रों को सरल बनाने के लिए उपयोगी हो सकता है जो आपको प्रोसेसिंग को आसान बनाने के लिए मिलते हैं)
- सिंक्रनाइज़ किया गया ("टर्न-बाय-टर्न") प्ले (ताकि आपको पहली बार रियलटाइम में काम करने के लिए अपने एल्गोरिथ्म की आवश्यकता न हो, यह एक बड़ी जटिल कमी है)।
- अतिरिक्त सुविधा सुविधाएँ जैसे कि क्रॉसप्लॉइट कम्पेटिबिलिटी, रेट्रोकोम्पिबिलिटी (आप अपने बॉट को गेम के साथ काम नहीं करने का जोखिम नहीं उठाते हैं जब कोई नया गेम अपडेट होता है), आदि।
संक्षेप में, इन प्लेटफार्मों के बारे में महान बात यह है कि वे पिछले तकनीकी मुद्दों से बहुत कुछ कम करते हैं , जिनसे आपको निपटना था (गेम इनपुट में हेरफेर कैसे करें, परिदृश्यों को कैसे सेटअप करें, आदि) ताकि आपको बस सीखने के एल्गोरिथ्म से निपटना पड़े। अपने आप।
तो अब, काम करने के लिए और हमें सबसे अच्छा एआई दृश्य बॉट बनाने के लिए;)
पुरानी पोस्ट केवल दृश्य इनपुट पर निर्भर एक एआई को विकसित करने के तकनीकी मुद्दों का वर्णन:
ऊपर मेरे कुछ सहयोगियों के विपरीत, मुझे नहीं लगता कि यह समस्या असाध्य है। लेकिन यह निश्चित रूप से एक हेला कठिन है!
ऊपर बताई गई पहली समस्या यह है कि खेल की स्थिति का प्रतिनिधित्व : आप केवल एक छवि के साथ पूर्ण राज्य का प्रतिनिधित्व नहीं कर सकते, आपको कुछ प्रकार के संस्मरण बनाए रखने की आवश्यकता है(स्वास्थ्य लेकिन यह भी सुसज्जित वस्तुओं और उपयोग करने के लिए उपलब्ध वस्तुओं, quests और लक्ष्यों, आदि)। इस तरह के informations को लाने के लिए आपके पास दो तरीके हैं: या तो सीधे गेम डेटा तक पहुंचकर, जो सबसे विश्वसनीय और आसान है; या तो आप कुछ सरल प्रक्रियाओं (खुली सूची, स्क्रीनशॉट लेने, डेटा निकालने) को लागू करके इन informations का एक सार प्रतिनिधित्व बना सकते हैं। बेशक, एक स्क्रीनशॉट से डेटा निकालने के लिए या तो आपको कुछ पर्यवेक्षण प्रक्रिया में डाल दिया जाएगा (जो आप पूरी तरह से परिभाषित करते हैं) या अनसुनी (मशीन सीखने के एल्गोरिथ्म के माध्यम से, लेकिन फिर यह बहुत जटिलता को स्केल करेगा ...)। अनुपयोगी मशीन लर्निंग के लिए, आपको संरचनात्मक सीखने के एल्गोरिदम (जो उन्हें वर्गीकृत करने या किसी मूल्य का अनुमान लगाने के बजाय डेटा की संरचना सीखते हैं) नामक एक बहुत हाल के एल्गोरिदम का उपयोग करने की आवश्यकता होगी।http://techtalks.tv/talks/54422/
फिर, एक और समस्या यह है कि जब भी आप अपनी जरूरत के सभी डेटा प्राप्त करते हैं, तब भी खेल केवल आंशिक रूप से अवलोकन योग्य होता है । इस प्रकार आपको दुनिया के एक अमूर्त मॉडल को इंजेक्ट करने और खेल से संसाधित जानकारी के साथ खिलाने की ज़रूरत है, उदाहरण के लिए आपके अवतार का स्थान, लेकिन स्क्रीन के बाहर खोज आइटम, लक्ष्य और दुश्मनों का स्थान भी। आप शायद इसके लिए वर्माक 2003 तक मिक्सचर पार्टिकल फिल्टर्स देख सकते हैं।
इसके अलावा, आपको गतिशील रूप से उत्पन्न लक्ष्यों के साथ एक स्वायत्त एजेंट की आवश्यकता है । एक प्रसिद्ध आर्किटेक्चर जिसे आप आजमा सकते हैं, वह है BDI एजेंट, लेकिन आपको इस आर्किटेक्चर के लिए अपने व्यावहारिक मामले में काम करना होगा। एक विकल्प के रूप में, पुनरावर्ती पेट्री नेट भी है, जिसे आप संभवतः पेट्री नेट के सभी प्रकार के बदलावों के साथ जोड़ सकते हैं जो आप चाहते हैं कि यह बहुत अच्छी तरह से अध्ययन किया गया है और लचीली रूपरेखा, महान औपचारिकता और प्रमाण प्रक्रियाओं के साथ है।
और अंत में, भले ही आप उपरोक्त सभी करते हैं, आपको त्वरित गति में गेम का अनुकरण करने का एक तरीका खोजने की आवश्यकता होगी (वीडियो का उपयोग करना अच्छा हो सकता है, लेकिन समस्या यह है कि आपका एल्गोरिथ्म केवल नियंत्रण के बिना स्पेक्टेट करेगा, और सक्षम होने के नाते। सीखने के लिए खुद के लिए प्रयास करना बहुत महत्वपूर्ण है)। वास्तव में, यह सर्वविदित है कि वर्तमान अत्याधुनिक एल्गोरिथ्म को सीखने में बहुत अधिक समय लगता है, वही चीज जो मानव सीख सकता है (सुदृढीकरण सीखने के साथ और भी अधिक), इस प्रकार यदि प्रक्रिया को गति नहीं दी जा सकती है ( यानी, यदि आप खेल के समय को गति नहीं दे सकते हैं), तो आपका एल्गोरिथ्म भी एक ही जीवनकाल में अभिसरण नहीं करेगा ...
यह निष्कर्ष निकालने के लिए कि आप यहां क्या प्राप्त करना चाहते हैं , वर्तमान अत्याधुनिक एल्गोरिदम की सीमा (और शायद थोड़ा परे) पर है । मुझे लगता है कि यह संभव हो सकता है, लेकिन अगर यह है, तो आप बहुत समय बिताने जा रहे हैं , क्योंकि यह एक सैद्धांतिक समस्या नहीं है, लेकिन एक व्यावहारिक समस्या जो आप यहाँ आ रहे हैं, और इस प्रकार आपको बहुत कुछ लागू करने और संयोजित करने की आवश्यकता है। इसे हल करने के लिए अलग-अलग AI के दृष्टिकोण ।
इस पर काम करने वाली पूरी टीम के साथ कई दशकों का शोध शायद पर्याप्त न हो, इसलिए यदि आप अकेले हैं और अंशकालिक समय में इस पर काम कर रहे हैं (जैसा कि आपके पास शायद रहने के लिए नौकरी है) तो आप कहीं भी बिना पास पहुंचे ही पूरा जीवन बिता सकते हैं एक काम कर समाधान।
इसलिए मेरी सबसे महत्वपूर्ण सलाह यह होगी कि आप अपनी उम्मीदों को कम करें, और जटिलता को कम करने का प्रयास करेंअपनी सभी जानकारी का उपयोग करके अपनी समस्या, और स्क्रीनशॉट पर निर्भर होने से जितना संभव हो उतना बचें (यानी, सीधे खेल में हुक करने की कोशिश करें, डीएलएल इंजेक्शन की तलाश करें), और पर्यवेक्षित प्रक्रियाओं को लागू करके कुछ समस्याओं को सरल करें, अपनी अनुमति न दें एल्गोरिथ्म सब कुछ सीखता है (यानी, अब के लिए इमेज प्रोसेसिंग को ड्रॉप करें और आंतरिक गेम informations पर भरोसा करें, बाद में यदि आपका एल्गोरिथ्म अच्छी तरह से काम करता है, तो आप अपने एआई प्रोग्राम के कुछ हिस्सों को इमेज प्रोसेसिंग के साथ बदल सकते हैं, इस प्रकार अपने पूर्ण लक्ष्य को प्राप्त कर सकते हैं,) उदाहरण के लिए यदि आप कुछ अच्छी तरह से काम करने के लिए प्राप्त कर सकते हैं, तो आप अपनी समस्या को जटिल बनाने और पर्यवेक्षित प्रक्रियाओं और मेमोरी गेम डेटा को स्क्रीनशॉट पर अप्रकाशित मशीन लर्निंग एल्गोरिदम द्वारा प्रतिस्थापित करने का प्रयास कर सकते हैं)।
सौभाग्य, और अगर यह काम करता है, तो एक लेख प्रकाशित करना सुनिश्चित करें, आप इस तरह की कठिन व्यावहारिक समस्या को हल करने के लिए निश्चित रूप से प्रसिद्ध हो सकते हैं!