दिन 22: OpenAI जिम और यूनिवर्स का उपयोग करके एक एआई गेम बॉट का निर्माण कैसे करें

नियॉन रेस फ़्लैश खेल ब्रह्मांड का पर्यावरण

आइए इसका सामना करें, AI हर जगह है। एआई के भविष्य को लेकर एलोन मस्क और मार्क जुकरबर्ग के बीच आमने-सामने की लड़ाई जारी है। कुछ ऐसे हैं जो इसे ध्वस्त करते हैं। और कुछ लोग जिनके विचारों का दावा है कि एआई मानवता की मदद करने में लगभग ईश्वर जैसा हो सकता है। आपके विचार जिस ओर भी झुकाव करते हैं, एआई यहां रहने के लिए है।

"कृत्रिम बुद्धि के साथ, हम दानव को बुला रहे हैं।" - एलोन मस्क
"हत्यारे रोबोटों के उदय के डर से मंगल ग्रह पर अतिवृष्टि के बारे में चिंता करना पसंद है।" - एंड्रयू एनजी

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

गेम प्रोग्रामिंग का इतिहास

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

गेम डेवलपर्स ने तब नकल करने की कोशिश की कि मनुष्य एक खेल कैसे खेलेंगे, और मानव बुद्धि को एक खेल बॉट में मॉडलिंग करेंगे।

दीपमिन्द की टीम ने इस पर फेंके गए किसी भी अटारी खेल को सुलझाने के लिए बुद्धिमत्ता का सामान्यीकरण और मॉडलिंग करके ऐसा किया। गेम बॉट ने गहन सीखने वाले तंत्रिका नेटवर्क का उपयोग किया, जिसमें कोई गेम-विशिष्ट ज्ञान नहीं होगा। वे स्क्रीन पर देखे गए पिक्सेल के आधार पर खेल को हराते हैं और खेल नियंत्रण के बारे में उनका ज्ञान होता है। हालाँकि, डीपमाइंड के हिस्से अभी भी खुले-खट्टे नहीं हैं क्योंकि Google इसका उपयोग प्रतिस्पर्धा को हरा देता है।

एआई का लोकतंत्रीकरण

कुछ के हाथों में एआई की अविश्वसनीय शक्ति को केंद्रित करने से बचने के लिए, एलोन मस्क ने ओपनएआई की स्थापना की। यह एआई को सभी के लिए सुलभ बनाकर लोकतंत्रीकरण करना चाहता है। आज हम OpenAI जिम और हाल ही में जारी यूनिवर्स की खोज करेंगे, जो जिम के शीर्ष पर बनाया गया है।

OpenAI जिम किसी भी मनमाने गतिशील वातावरण के साथ बातचीत और प्रबंधन के लिए एक सरल इंटरफ़ेस प्रदान करता है। OpenAI यूनिवर्स एक ऐसा प्लेटफॉर्म है जो आपको एक बॉट बनाने और उसका परीक्षण करने देता है।

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

परियोजना (1 घंटा)

हम एक एआई गेम बॉट बनाने जा रहे हैं जो "सुदृढीकरण सीखना" तकनीक का उपयोग करता है। मैं बाद में समझाता हूँ। यह स्वायत्त रूप से अटारी खेल नियॉन रेस कार के खिलाफ खेलेगा और हराएगा (आप किसी भी खेल का चयन कर सकते हैं)। हम OpenAI की जिम और यूनिवर्स लाइब्रेरी का उपयोग करके इस गेम बॉट का निर्माण करेंगे।

चरण 1: स्थापना

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

// काढ़ा का उपयोग करके अजगर को स्थापित करें
काढ़ा स्थापित python3
// आवश्यक OpenAI पुस्तकालयों को स्थापित करें
pip3 जिम स्थापित करें
pip3 संख्‍या वृद्धिशील स्‍थापित करें
शराब की भठ्ठी स्थापित golang libjpeg- टर्बो
पाइप स्थापित ब्रह्मांड

यूनिवर्स (वातावरण) में सब कुछ डॉकटर के अंदर कंटेनरों के रूप में चलता है। यदि आपके पास पहले से यह नहीं है, तो यहां से डॉकर को स्थापित और चलाएं।

चरण 2: कोड गेम बॉट

गेम बॉट को पाइथन में कोडित किया गया है, इसलिए हम केवल दो निर्भरताएं: जिम और यूनिवर्स को आयात करके शुरू करते हैं।

जिम आयात करें
आयात ब्रह्मांड

इस गेम बॉट के लिए, परीक्षण वातावरण के रूप में, मेरे पसंदीदा बचपन के खेल, नियॉन रेस कार का उपयोग करें। आप यहां से चुन सकते हैं अन्य पर्यावरण / खेल की पूरी सूची पा सकते हैं।

यूनिवर्स आपको समानांतर रूप में जितने वातावरण में चलने की अनुमति देता है। लेकिन इस परियोजना के लिए, हम केवल एक का उपयोग करेंगे।

env = gym.make (games flashgames.NeonRace-v0 ')
env.configure (remotes = 1) # एक स्थानीय docker कंटेनर बनाता है

सुदृढीकरण सीखना

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

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

अब हम env.reset () पद्धति का उपयोग करके आरंभ किए गए प्रत्येक वातावरण के लिए टिप्पणियों की सूची पुनः प्राप्त कर सकते हैं।

अवलोकन_ एन = env.reset ()

यहाँ अवलोकन एक पर्यावरण-विशिष्ट वस्तु है। यह दर्शाता है कि क्या देखा गया था, जैसे कि स्क्रीन पर कच्चे पिक्सेल डेटा या गेम स्टेटस / स्कोर।

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

जबकि सच:
क्रिया_n = [[('' कीवेन्ट ',' एरोव्यूप ', ट्रू)] अवलोकन के लिए।

हम तब env.step () पद्धति का उपयोग करते हुए एक समय कदम आगे बढ़ने के लिए कार्रवाई का उपयोग करते हैं। यह प्रबलित शिक्षण का एक बहुत ही बुनियादी कार्यान्वयन है।

 अवलोकन_ एन, इनाम_ एन, किया_ एन, जानकारी = env.step (कार्रवाई_ एन)

यहाँ चरण विधि चार चर लौटाती है:

  1. अवलोकन_ एन: पर्यावरण का अवलोकन
  2. इनाम_एन: यदि आपकी कार्रवाई फायदेमंद थी या नहीं: + 1 / -1
  3. did_n: इंगित करता है कि खेल खत्म हो गया है या नहीं: हाँ / नहीं
  4. जानकारी: डिबगिंग उद्देश्यों के लिए प्रदर्शन और विलंबता जैसी अतिरिक्त जानकारी

आप इस क्रिया को उन सभी वातावरणों के लिए एक साथ चला सकते हैं जिनमें आप अपने बॉट को प्रशिक्षित कर रहे हैं। बॉट शुरू करने के लिए env.render () विधि का उपयोग करें।

env.render ()

अब आपके पास पर्यावरण के साथ प्रतिस्पर्धा करने के लिए गेम बॉट तैयार है। इस बेसिक बॉट के साथ-साथ एक उन्नत संस्करण के लिए पूरा कोड यहां मेरे जीथब रेपो में उपलब्ध है।

चरण 3: गेम बॉट चलाएं

अब मज़ेदार हिस्से के लिए: सुनिश्चित करें कि डॉकर बॉट चला रहा है और चला रहा है। अन्य कारों की पिटाई या ऐसा करने में विफल होने पर इसे कार्रवाई में देखें। यदि यह विफल हो जाता है, तो अपने बीट को बुद्धि को हरा देने के लिए इसे घुमाते रहें!

पायथन गेमबोटहोम
क्रैश और बर्रन! #basic

AI के साथ छेड़छाड़ करते रहें और अंततः आप God Mode को अनलॉक कर सकते हैं! # 100DaysOfCode

यदि आपने इसका आनंद लिया, तो कृपया please ताली बजाएं ताकि दूसरे भी इसे देख सकें! अन्य कहानियों पर नवीनतम अपडेट पाने के लिए या सिर्फ हाय कहने के लिए ट्विटर @HariniLabs या माध्यम पर मेरा अनुसरण करें :)

पुनश्च: मेरे न्यूज़लेटर के लिए यहां साइन अप करें कि पहली नई सामग्री प्राप्त करें और यह #WomenInTech की दुनिया से प्रेरणा की खुराक के साथ भरी हुई है और हाँ पुरुष भी साइनअप कर सकते हैं!