दिवस 22: ओपनएआय जिम आणि युनिव्हर्ससह एआय गेम बॉट कसा तयार करावा

निऑन रेस फ्लॅश गेम विश्वाचे पर्यावरण

चला यास सामोरे जाऊ, एआय सर्वत्र आहे. एलोन मस्क आणि मार्क झुकरबर्ग यांच्यात एआयच्या भविष्यासाठी लढाई चालू आहे. काहीजण असे करतात जे त्याचा भुताटकी करतात. आणि ज्यांचे यूटोपियन श्रद्धा मानतात की मानवाची मदत करण्याची वेळ येते तेव्हा एआय जवळजवळ देवासारखाच असू शकतो. आपण कोणत्या बाजूकडे पाहिले तरीही याची पर्वा न करता आपल्यासाठी एआय नेहमीच असतो.

"आम्ही कृत्रिम बुद्धिमत्तेने राक्षसाला म्हणतो." - एलोन मस्क
"किलर रोबोट्सच्या वाढीची भीती ही मंगळावरील अतिसंख्येची चिंता करण्यासारखे आहे." - अँड्र्यू एनजी

आपण सरळ एआयमध्ये डुबकी मारण्यासाठी उत्साही असल्यास आणि त्यासह टिंकर असल्यास, खेळ प्रारंभ करण्यासाठी उत्तम जागा आहेत. एआयसाठी आपण प्रथम निवड केली होती. आम्ही प्रारंभ करण्यापूर्वी, वेळोवेळी गेम प्रोग्रामिंग कसे विकसित झाले आहे ते थोडेसे येथे आहे.

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

गेम प्रोग्रामर सुशिक्षित अंदाज घेण्यासाठी-नंतर-इतर निर्णय घेतल्यास आस्तित्वावादी होते. हे आम्ही पोंग आणि पॅकमॅन सारख्या लवकरात लवकर आर्केड व्हिडिओ गेममध्ये पाहिले. ही प्रवृत्ती फार पूर्वीपासून आहे. गेम विकसक, तथापि, इतके परिदृश्य आणि साइड प्रकरणांचा अंदाज लावतात की आपली बॉट मंडळामध्ये चालणार नाही!

त्यानंतर गेम विकसकांनी गेम कसा खेळला जाईल याचे अनुकरण करण्याचा प्रयत्न केला आणि गेम बॉटमध्ये मानवी बुद्धिमत्तेचे मॉडेलिंग केले.

दीपमाईंड संघाने कोणताही अॅटरी खेळ सोडविण्याकरिता बुद्धिमत्तेचे सामान्यकरण व मॉडेलिंग केली आहे. गेम बॉटमध्ये डीप लर्निंग न्यूरल नेटवर्क वापरले गेले ज्यांना गेम-विशिष्ट ज्ञान नव्हते. त्यांनी स्क्रीनवर पाहिलेले पिक्सेल आणि गेम नियंत्रणे त्यांच्या ज्ञानावर आधारित गेम जिंकला. तथापि, डीपमाईंडचे काही भाग अद्याप मुक्त स्त्रोत सक्षम नाहीत, कारण प्रतिस्पर्धा जिंकण्यासाठी Google याचा वापर करते.

एआय चे लोकशाहीकरण

काहींच्या हाती एआयची अविश्वसनीय शक्ती केंद्रित न करण्याच्या उद्देशाने, एलोन मस्कने ओपनएआयची स्थापना केली. प्रत्येकासाठी उपलब्ध करून देऊन एआयचे लोकशाहीकरण करू इच्छित आहे. आज आम्ही ओपनएआय जिम आणि जिमच्या शीर्षस्थानी अलीकडेच प्रकाशित केलेले विश्व शोधणार आहोत.

कोणत्याही गतिशील वातावरणाच्या परस्परसंवाद आणि व्यवस्थापनासाठी ओपनएआय जिम एक सोपा इंटरफेस देते. ओपनएआय युनिव्हर्स एक व्यासपीठ आहे ज्याचा वापर आपण बॉट तयार आणि चाचणी करण्यासाठी करू शकता.

हजारो वातावरण आहेत. ते क्लासिक अटारी गेम्स, मिनीक्राफ्ट आणि ग्रँड थेफ्ट ऑटोपासून ते प्रोटीन फोल्ड सिमुलेशनपर्यंत आहेत जे कर्करोग बरा करू शकतात. आपण एक बॉट तयार करू शकता आणि कोणत्याही वातावरणात काही ओळींमध्ये पायथन कोड चालवू शकता. प्रयत्न न करणे हे खूप छान आहे!

प्रकल्प (1 तास)

आम्ही एआय गेम बॉट तयार करू जे सुदृढीकरण शिकण्याच्या तंत्रज्ञानाचा वापर करेल. मी हे नंतर समजावून सांगेन. हे स्वायत्तपणे अटारी गेम निऑन रेस कारला (आपण कोणताही गेम निवडू शकता) खेळेल आणि पराभूत करेल. आम्ही ओपनएआय जिम आणि युनिव्हर्स लायब्ररीसह हा गेम बॉट तयार करु.

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

आपण पायथन स्थापित केला आहे याची खात्री करा किंवा ते होमब्रेबसह स्थापित करा. आपण पायचार्म किंवा आयपथॉन नोटबुक सारख्या समर्पित पायथन आयडीई डाउनलोड करू शकता. मला हे सोपे ठेवणे आणि उदात्त वापरायला आवडते. शेवटी, पिप, जिम, युनिव्हर्स आणि इतर आवश्यक लायब्ररी स्थापित करा.

// ब्रू ब्रू इंस्टॉल पायथॉन 3 सह पायथन स्थापित करा // आवश्यक ओपनएआय लायब्ररी स्थापित करा पीपी 3 इंस्टॉल जीम पिप 3 इंस्टॉल नम्पी इन्क्रिमेंटल ब्रू इंस्टॉल गोलांग लिबजपेग-टर्बो पिप इंस्टॉल ब्रह्मांड

विश्वातली प्रत्येक गोष्ट (परिसर) कंटेनर म्हणून डॉकरमध्ये चालते. आपल्याकडे आधीपासूनच नसल्यास डॉकर स्थापित करा आणि येथून चालवा.

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

गेम बॉट पायथनमध्ये एन्कोड केला आहे, म्हणून आम्ही प्रथम केवळ दोन आवश्यक अवलंबन आयात करतो: जिम आणि युनिव्हर्सम.

आयात व्यायामशाळा आयात

या गेम बॉटसाठी चाचणी पर्यावरण म्हणून माझा आवडता बालपण खेळ, नियॉन रेस कार्स वापरू. येथे निवडलेल्या इतर सर्व वातावरण / खेळांची पूर्ण यादी येथे आहे.

युनिव्हर्स सह, आपण एकाच वेळी बर्‍याच वातावरणात चालवू शकता. तथापि, या प्रकल्पासाठी फक्त एक वापरला जातो.

env = gym.make ("flashgames.NeonRace-v0") env.configure (रिमोट्स = 1) # स्थानिक डॉकर कंटेनर तयार करते

मजबुतीकरण जाणून घ्या

आता प्रवर्धन तंत्र वापरणारे गेम बॉट लॉजिक जोडा. हे तंत्र गेमची मागील स्थिती आणि बक्षीस लक्षात घेते (उदा. स्क्रीनवर दर्शविलेले पिक्सेल किंवा गेमच्या स्कोअर). मग पर्यावरणासाठी कृती तयार केली जाते.

पुढील निरीक्षणास सुधारण्याचे लक्ष्य (आमच्या बाबतीत, खेळाची स्कोअर अधिकतम करणे). ही क्रिया निवडण्यासाठी आणि स्कोअर अधिकतम करण्यासाठी एजंटद्वारे (गेम बॉट) केली जाते. त्यानंतर ते पर्यावरणावर लागू होते. कृती उपयुक्त होती किंवा नाही यावर आधारित वातावरण परिणामी स्थिती आणि बक्षीस नोंदवते (खेळ जिंकला का?).

आता आम्ही env.reset () पद्धतीने प्रारंभ केलेल्या प्रत्येक वातावरणासाठी वॉचलिस्ट मिळवू शकतो.

निरीक्षण_एन = env.reset ()

येथील निरीक्षण हे वातावरण-विशिष्ट वस्तू आहे. हे जे पाहिले गेले आहे त्याचे प्रतिनिधित्व करते, उदा. ब. स्क्रीनवरील कच्चा पिक्सेल डेटा किंवा खेळाची स्थिती / स्कोअर.

पुढील चरण म्हणजे अंतहीन लूप गेम एजंट तयार करणे जे निरीक्षणाच्या आधारे काही क्रिया सतत करत राहील. आमच्या बॉटमध्ये एकच क्रिया परिभाषित करू या, ज्यात आपण वारंवार वर बाण दाबा (मूर्ख बॉट! आपण त्यास जटिल क्रियेमध्ये विकसित देखील करू शकता ...). क्रिया येथे इव्हेंट प्रकार (कीईव्हेंट), कंट्रोल की (अप एरो) आणि एजंटने पाहिलेल्या सर्व निरीक्षणासाठी खरे सेटिंगद्वारे परिभाषित केली आहे.

जरी सत्य असेल: कृती_ एन = [[('कीव्हेंट', 'एरोअप', ट्रू)] निरीक्षणामध्ये आहे की नाही]

त्यानंतर कृतीचा वापर करण्यासाठी पुढे जाण्यासाठी आम्ही env.step () पद्धत वापरतो. वर्धित शिक्षणाची ही एक मूलभूत अंमलबजावणी आहे.

निरिक्षण_, बक्षीस_आणि, पूर्ण_एन, माहिती = env.step (कृती_एन)

स्टेप मेथड येथे चार व्हेरिएबल्स परत करते:

  1. निरिक्षण_ एन: वातावरणाची निरीक्षणे
  2. बीजक_एन: आपली कृती फायदेशीर असल्यास किंवा नसल्यास: + 1 / -1
  3. झाले_एन: खेळ संपला आहे की नाही हे दर्शविते: होय / नाही
  4. माहितीः डीबग करण्याच्या उद्देशाने कार्यप्रदर्शन आणि विलंब यासारखी अतिरिक्त माहिती

आपण आपल्या बॉटला प्रशिक्षित करता त्या सर्व वातावरणासाठी आपण एकाच वेळी ही क्रिया करू शकता. बॉट सुरू करण्यासाठी env.reender () पद्धत वापरा.

env.render ()

गेम बॉट आता वातावरणाशी स्पर्धा करण्यास सज्ज झाला आहे. माझ्या गीथब रेपोमध्ये आपल्याला या मूलभूत बॉटसाठी संपूर्ण कोड तसेच विस्तारित आवृत्ती सापडेल.

चरण 3: गेम बॉट प्रारंभ करा

आता मजेच्या भागासाठी: डॉकर चालू आहे हे सुनिश्चित करा आणि बॉट चालवा. आपण अन्य कारला मारहाण केली किंवा ती मारली नाही तर कृतीतून पहा. जर हे अयशस्वी झाले तर बुद्धिमत्तेला हरवण्यासाठी आपल्या बॉटला चिमटा!

अजगर गेमबॉट.पी
क्रॅश आणि बुर्रन! # बेसिक

एआय वर कार्य करत रहा आणि शेवटी गॉड मोड अनलॉक करा! # 100DayOfCode

जर आपल्याला ते आवडले असेल तर टाळ्या वाजवा जेणेकरुन इतरही ते पाहू शकतील! इतर कथांवरील नवीनतम अद्यतनांसाठी किंवा फक्त हॅलो म्हणायचे असल्यास ट्विटर @ हॅरिनिलॅब्स किंवा मीडियमवर माझे अनुसरण करा :)

पुनश्च: नवीन सामग्री प्राप्त करणार्‍यांमधील माझ्या वृत्तपत्रासाठी येथे साइन अप करा. हे # वुमनइन्टेकच्या जगातील प्रेरणाने परिपूर्ण आहे आणि होय, पुरुषही नोंदणी करु शकतात!