1. AI मॉडल बनाना: न्यूरल नेटवर्क और इवोल्यूशनरी एल्गोरिदम [0]

एक AI मॉडल बनाने के लिए न्यूरल नेटवर्क और इवोल्यूशनरी एल्गोरिदम को समझना और लागू करना पड़ता है, जो जटिल प्रणालियों को सीखने में मदद करता है।

1.1. इवोल्यूशनरी एल्गोरिदम का उपयोग करके एक छिपे हुए वाक्यांश का अनुमान लगाना [11]

  1. लेखक ने एक AI मॉडल बनाने का प्रयास किया जो वीडियो गेम खेल सके, और उन्होंने इवोल्यूशनरी एल्गोरिदम का उपयोग करके एक छिपे हुए वाक्यांश का अनुमान लगाने के साथ शुरुआत की [11]
    1. एक 18-अक्षर वाले वाक्यांश का अनुमान लगाने के लिए, एक अनंत लूप का उपयोग करके यादृच्छिक रूप से अनुमान लगाना बहुत अक्षम होगा, क्योंकि 27^18 संभावित स्ट्रिंग हैं [17]
    2. एक अधिक कुशल तरीका प्राकृतिक चयन की नकल करने वाले वातावरण का निर्माण करके समय के साथ सही स्ट्रिंग की ओर विकसित होना है [20]
  2. प्राकृतिक चयन के तीन सरल नियम हैं जो प्रकृति में अविश्वसनीय गुणों को जन्म देते हैं [21]
    1. सबसे योग्य जीवित रहते हैं और प्रजनन करते हैं [21]
    2. संतान को माता-पिता के जीन का मिश्रण विरासत में मिलता है [22]
    3. उत्परिवर्तन की एक छोटी सी संभावना होती है जो विविधता लाती है [23]
  3. इन नियमों को एक स्ट्रिंग का अनुमान लगाने के लिए लागू किया जा सकता है [26]
    1. 18 अक्षरों की यादृच्छिक स्ट्रिंग की एक आबादी बनाई जाती है [26]
    2. प्रत्येक स्ट्रिंग को सही अक्षरों के प्रतिशत के आधार पर मापा जाता है, और उच्च प्रतिशत वाली स्ट्रिंग को प्रजनन का अधिक मौका मिलता है [27]
    3. दो जनक स्ट्रिंग एक बाल स्ट्रिंग बनाते हैं, जिसमें जनक A से अक्षरों का एक यादृच्छिक हिस्सा और जनक B से शेष भाग होता है [31]
    4. विजेताओं से एक प्रजनन पूल बनाया जाता है, एक नई आबादी उत्पन्न होती है, और यादृच्छिक उत्परिवर्तन की एक छोटी सी संभावना जोड़ी जाती है [32]
  4. इस प्रक्रिया को सैकड़ों पीढ़ियों तक दोहराने से, संदेश यादृच्छिकता से धीरे-धीरे उभरता है [34]
  5. लेखक ने इस यांत्रिकी को रॉकेट की एक आबादी पर भी लागू किया जो एक लक्ष्य तक पहुंचने की कोशिश कर रहे थे, और रॉकेट समय के साथ लक्ष्य के करीब पहुंचने के लिए विकसित हुए [40]

1.2. न्यूरल नेटवर्क की मूल बातें समझना [47]

  1. लेखक का लक्ष्य एक न्यूरल नेटवर्क बनाना था जो सुपर मारियो वर्ल्ड के एक स्तर को हरा सके, जो सेठ ब्लिंग के एक वीडियो से प्रेरित था [48]
  2. एक न्यूरल नेटवर्क मानव मस्तिष्क में न्यूरॉन कनेक्शन से प्रेरित एक संरचना है [4]
    1. यह नकली न्यूरॉन्स से बना है जो एक साथ जुड़े हुए हैं [79]
    2. प्रत्येक न्यूरॉन गणित करता है, और बड़े पैमाने पर, न्यूरल नेटवर्क अविश्वसनीय चीजें सीखने में सक्षम होते हैं [80]
  3. एक एकल न्यूरॉन इनपुट लेता है, प्रत्येक इनपुट को एक वजन से गुणा किया जाता है, सभी उत्पादों और एक बायस को जोड़ा जाता है, और फिर इसे एक एक्टिवेशन फंक्शन के माध्यम से चलाया जाता है [85]
    1. यह न्यूरॉन एक ग्राफ पर एक यादृच्छिक बिंदु को देखता है और अनुमान लगाता है कि यह एक अज्ञात रेखा के ऊपर या नीचे बैठता है [87]
    2. हर बार जब यह गलत अनुमान लगाता है, तो वजन को उस दिशा में धकेला जाता है जिससे यह कम गलत होता [88]
    3. कुछ हज़ार अनुमानों के बाद, न्यूरॉन प्रशिक्षित हो जाता है और जानता है कि रेखा कहाँ है, भले ही उसने इसे कभी नहीं देखा हो [89]
  4. न्यूरल नेटवर्क में, एक परत में प्रत्येक न्यूरॉन अगली परत में प्रत्येक न्यूरॉन से जुड़ता है, और सभी वजन को संख्याओं के एक बड़े ग्रिड, एक मैट्रिक्स में संग्रहीत किया जा सकता है [94]
    1. एक पूरी परत की गणना एक एकल मैट्रिक्स गुणन में की जा सकती है [95]

2. मारियो AI का निर्माण और प्रशिक्षण [98]

एक मारियो AI बनाने के लिए गेम को नियंत्रित करने, पर्यावरण को समझने और न्यूरल नेटवर्क को प्रशिक्षित करने के लिए एक फिटनेस फंक्शन और ब्रीडिंग फंक्शन की आवश्यकता होती है।

2.1. मारियो गेम को नियंत्रित करना और पर्यावरण को समझना [98]

  1. लेखक ने मारियो गेम को नियंत्रित करने के लिए जिम सुपर मारियो ब्रदर्स नामक एक पायथन लाइब्रेरी का उपयोग किया, जो एक NES एमुलेटर चलाता है और कोड को गेम के लिए इनपुट बनाने की अनुमति देता है [99]
    1. शुरुआत में, लेखक ने यह सुनिश्चित करने के लिए प्रत्येक फ्रेम के लिए एक अलग यादृच्छिक इनपुट का परीक्षण किया कि यह काम कर रहा है [100]
    2. फिर, उन्होंने 10 गेम बनाए और उन्हें एक साथ चलाया, प्रत्येक को यादृच्छिक इनपुट की अपनी श्रृंखला दी [101]
  2. मारियो AI को बाधाओं और दुश्मनों को समझने के लिए गेम के आसपास के वातावरण को "देखने" की आवश्यकता थी [111]
    1. जिम सुपर मारियो ब्रदर्स लाइब्रेरी मारियो की स्थिति और सिक्का गणना के बारे में जानकारी प्रदान करती है, लेकिन उसके आसपास की दुनिया के बारे में ज्यादा नहीं [106]
    2. लेखक को RAM मैप्स को खोदना पड़ा और एक ऐसी प्रणाली बनानी पड़ी जो गेम की सक्रिय मेमोरी में लोड की गई चीज़ों को मारियो बॉट के लिए आसानी से व्याख्या करने योग्य ग्रिड में अनुवादित करती है [114]
    3. इस ग्रिड में, '1' का मतलब ठोस जमीन, पाइप या ब्लॉक है, '-1' का मतलब दुश्मन है, और '2' मारियो खुद है [118]
  3. न्यूरल नेटवर्क की संरचना को गेम के इनपुट और आउटपुट के अनुरूप बनाया गया था [124]
    1. बनाए गए ग्रिड में 208 संख्याएँ थीं, इसलिए न्यूरल नेटवर्क की पहली परत में 208 इनपुट थे [125]
    2. अंतिम परत में 12 संभावित आउटपुट थे, क्योंकि यह जिम सुपर मारियो ब्रदर्स लाइब्रेरी द्वारा पहचाने गए इनपुट की मात्रा है [126]
    3. इनपुट और आउटपुट परतों के बीच एक छिपी हुई परत जोड़ी गई थी, जिसे शुरू में 18 न्यूरॉन्स पर सेट किया गया था [127]
    4. न्यूरल नेटवर्क गेम की स्थिति को इनपुट के रूप में लेता है, इसे दर्जनों न्यूरॉन्स के माध्यम से चलाता है, और 12 संख्याएँ आउटपुट करता है, प्रत्येक संभावित चाल के लिए एक स्कोर [131]
    5. उच्चतम स्कोर वाली चाल वह बटन है जिसे मारियो उस फ्रेम को दबाता है [133]
  4. प्रत्येक 10 मारियो गेम के लिए यादृच्छिक वजन के साथ एक नया न्यूरल नेटवर्क बनाया गया था [134]
    1. प्रशिक्षण के बिना भी, मारियो एमुलेटर यादृच्छिक इनपुट भेजने से यादृच्छिक व्यवहार भेजने लगे, जैसे आगे-पीछे दौड़ना या कूदना [136]

2.2. मारियो AI को प्रशिक्षित करना और मूल्यांकन करना [139]

  1. लेखक ने एक फिटनेस फंक्शन और एक ब्रीडिंग फंक्शन बनाया [139]
    1. फिटनेस फंक्शन में तीन चीजें शामिल थीं: मारियो कितनी दूर जाता है, स्तर को हराने के लिए एक बड़ा बोनस, और इसे तेजी से करने पर अतिरिक्त अंक [140]
    2. यदि एक न्यूरल नेटवर्क अच्छा प्रदर्शन करता है, तो उसे प्रजनन पूल में प्रजनन के अधिक मौके मिलेंगे [141]
    3. जब यह प्रजनन करता है, तो इसके वजन को दूसरे न्यूरल नेटवर्क के वजन के साथ मिलाया जाएगा ताकि एक बाल न्यूरल नेटवर्क उत्पन्न हो सके, जो स्ट्रिंग विकास के समान है [141]
  2. न्यूरल नेटवर्क की एक आबादी को यादृच्छिक वजन के साथ उत्पन्न किया गया और 24 घंटे के प्रशिक्षण के लिए छोड़ दिया गया, लेकिन उन्होंने कुछ भी नहीं सीखा [143]
    1. लेखक को फिटनेस फंक्शन को कई बार बदलना पड़ा, व्यक्तिगत एमुलेटर के चलने की स्थितियों को बदलना पड़ा, नेटवर्क की छिपी हुई परतों में अधिक न्यूरॉन्स जोड़ने पड़े, और एक सफल प्रशिक्षण चलाने के लिए एक सप्ताह तक संघर्ष करना पड़ा [145]
  3. सेठ ब्लिंग ने लेखक के प्रोजेक्ट की समीक्षा की और इसे 10 में से 10 रेटिंग दी [150]
    1. सेठ ब्लिंग ने कहा कि यह रेटिंग न्यूरल नेटवर्क की महानता के कारण नहीं थी, बल्कि इसलिए थी क्योंकि लेखक को इस तरह की परियोजना बनाने के लिए आवश्यक अनुभव का "पूरा सरगम" मिला [200]
    2. लेखक ने न्यूरल नेटवर्क, एक्टिवेशन और आर्किटेक्चर के बारे में सीखा, और यह भी सीखा कि वे कैसे विफल हो सकते हैं [204]
    3. लेखक को एक गेम को रिवर्स इंजीनियर करना भी सीखना पड़ा, एक ऐसी समस्या जिसका सामना सेठ ब्लिंग को भी अपनी मारियो AI परियोजना पर काम करते समय करना पड़ा था [207]
    4. सेठ ब्लिंग ने जोर दिया कि लेखक द्वारा प्राप्त अनुभव "वास्तव में मूल्यवान" है और इसे कई अन्य संदर्भों में लागू किया जा सकता है [209]
  4. मारियो AI का परीक्षण विभिन्न स्तरों की एक श्रृंखला के खिलाफ किया गया था ताकि यह देखा जा सके कि क्या यह उन्हें पूरा कर सकता है [162]
    1. AI ने कुछ अविश्वसनीय रूप से तंग चालें दिखाईं, जैसे कि स्पाइकीज़ को मुश्किल से छोड़ना और दुश्मनों के लिए इंतजार करना [167]
    2. हालांकि, यह कुछ नए तत्वों, जैसे स्प्रिंग, को पहचानने में विफल रहा [187]
    3. सेठ ब्लिंग ने टिप्पणी की कि इवोल्यूशनरी ट्रेनिंग की सबसे बड़ी बाधाओं में से एक बहुत अधिक प्रोसेसिंग की आवश्यकता है, क्योंकि वास्तविक जीवन में अरबों जीवों के संदर्भ में बड़े पैमाने पर समानांतर प्रणालियाँ होती हैं [157]