मुख्य सामग्री पर जाएँ

रीइन्फोर्समेंट लर्निंग: पायथन उदाहरणों के साथ एक परिचय

एक बिल्ली के स्क्रैच पोस्ट इस्तेमाल करना सीखने की उपमा के जरिए रीइन्फोर्समेंट लर्निंग की बुनियादी बातें सीखें।
· 14 मि॰ पढ़ें

AI के साथ खोजें

बेसिक और डीप रीइन्फोर्समेंट लर्निंग (RL) मॉडल कई बार आज के किसी भी बड़े भाषा मॉडल की तुलना में विज्ञान-कथा वाले AI जैसे लग सकते हैं। आइए देखें कि RL कैसे इस एजेंट को सुपर मारियो के एक बहुत कठिन लेवल को पूरा करने में सक्षम बनाता है:

python_RL_lowq_lowres.gif

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

RL एजेंट बिना पूर्व-निर्धारित समाधानों, बिना स्पष्ट रूप से प्रोग्राम की गई क्रियाओं और सबसे महत्वपूर्ण, बिना बड़े पैमाने पर डेटा के भी समस्याएँ हल कर सकते हैं। यही कारण है कि RL का कई क्षेत्रों पर महत्वपूर्ण प्रभाव पड़ रहा है। उदाहरण के लिए, इसका उपयोग यहाँ होता है:

  • सेल्फ-ड्राइविंग कारें: RL एजेंट ट्रैफिक परिस्थितियों और सड़क नियमों के आधार पर इष्टतम ड्राइविंग रणनीतियाँ सीख सकते हैं।
  • रोबोटिक्स: रोबोट्स को RL के माध्यम से गतिशील परिवेशों में जटिल कार्य करने के लिए प्रशिक्षित किया जा सकता है।
  • गेम खेलना: AI एजेंट Go या StarCraft II जैसे खेलों में RL तकनीकों का उपयोग करके जटिल रणनीतियाँ सीख सकते हैं।

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

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

एजेंट और एनवायरनमेंट

मान लीजिए आप अपनी बिल्ली, बॉब, को कमरे में रखे कई स्क्रैचिंग पोस्ट का इस्तेमाल करना सिखाना चाहते हैं ताकि आपका महंगा फर्नीचर बचा रहे। रीइन्फोर्समेंट लर्निंग की भाषा में, बॉब एजेंट है—सीखने वाला और फैसले लेने वाला। उसे यह सीखना होगा कि किन चीजों पर स्क्रैच करना ठीक है (रग्स और पोस्ट) और किन पर नहीं (काउच और ड्रेप्स)।

कमरा हमारा एनवायरनमेंट है, जिससे एजेंट इंटरैक्ट करता है। यह चुनौतियाँ देता है (लुभावना फर्नीचर) और वांछित लक्ष्य (संतोषजनक स्क्रैचिंग पोस्ट) प्रदान करता है।

RL में एनवायरनमेंट के दो मुख्य प्रकार होते हैं:

  • डिस्क्रीट एनवायरनमेंट: अगर कमरा ग्रिड वाले क्लासिक आर्केड गेम में बदल जाए, तो बॉब केवल चार दिशाओं में ही चल सकेगा। ऐसे एनवायरनमेंट में बॉब की क्रियाओं और कमरे के विविध रूपों के विकल्प सीमित होते हैं।
  • कंटीन्युअस एनवायरनमेंट: असली दुनिया का कमरा स्क्रैचिंग पोस्ट और फर्नीचर को सजाने के लगभग अनंत तरीकों की अनुमति देता है। साथ ही, बॉब रोज़मर्रा की बिल्ली वाली कोई भी हरकत करने के लिए स्वतंत्र है। इसलिए हमारा कमरा एक कंटीन्युअस एनवायरनमेंट है, जिसमें बॉब और कमरे—दोनों के लिए अनंत संभावनाएँ हैं।

हमारा कमरा स्टैटिक एनवायरनमेंट भी है। फर्नीचर नहीं हिलता-डुलता और स्क्रैचिंग पोस्ट अपनी जगह पर ही रहते हैं।

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

ऐक्शंस और स्टेट्स

सभी रीइन्फोर्समेंट लर्निंग समस्याओं के दो महत्वपूर्ण पहलू हैं: स्टेट स्पेस और ऐक्शन स्पेस।

स्टेट स्पेस उन सभी संभावित स्थितियों (सिचुएशंस) का प्रतिनिधित्व करता है, जिनमें किसी भी क्षण एजेंट और एनवायरनमेंट हो सकते हैं। स्टेट स्पेस का आकार एनवायरनमेंट के प्रकार पर निर्भर करता है:

  • फाइनाइट स्टेट स्पेस: जब एनवायरनमेंट डिस्क्रीट हो, तो संभावित स्टेट्स की संख्या सीमित या गिनने योग्य अनंत होती है। उदाहरण: बोर्ड गेम्स, ग्रिड जैसे वीडियो गेम, या टिक-टैक-टो।
  • इनफाइनाइट स्टेट स्पेस: जब एनवायरनमेंट कंटीन्युअस हो, तो उसका स्टेट स्पेस असीमित होता है। उदाहरण: जटिल कैरेक्टर्स और परिवेश वाले वीडियो गेम, रोबोट्स का चलना सीखना, या हमारे मामले में, बिल्ली का स्क्रैचिंग पोस्ट का इस्तेमाल सीखना।

ऐक्शन स्पेस वे सभी चीजें हैं जो बॉब एनवायरनमेंट में कर सकता है। हमारे स्क्रैचिंग पोस्ट उदाहरण में, बॉब की क्रियाएँ हो सकती हैं—पोस्ट को स्क्रैच करना, काउच पर झपकी लेना, या अपनी पूँछ के पीछे भागना।

स्टेट स्पेस की तरह ही, बॉब कितनी क्रियाएँ कर सकता है, यह भी एनवायरनमेंट पर निर्भर करता है:

  • डिस्क्रीट एनवायरनमेंट: ग्रिड-वर्ल्ड गेम में, बॉब के पास सीमित क्रियाएँ हो सकती हैं, जैसे ऊपर, नीचे, बाएँ, दाएँ चलना और स्क्रैच करना।
  • कंटीन्युअस एनवायरनमेंट: असली कमरे में, बॉब के पास ज्यादा व्यापक क्रियाएँ होंगी, जैसे किसी भी दिशा में चलना, कूदना, या (उम्मीद है नहीं) तारों को चबाना।

जब बॉब अपनी स्क्रैचिंग पोस्ट यात्रा शुरू करता है, तो एनवायरनमेंट एक डिफॉल्ट स्टेट में होता है, इसे स्टेट ज़ीरो कह लेते हैं। हमारे मामले में, यह वह कमरा हो सकता है जिसमें स्क्रैचिंग पोस्ट लगा है। जो भी क्रिया वह करता है, वह एनवायरनमेंट को नए, अगली अवस्थाओं में ले जाती है।

रिवार्ड्स, टाइम स्टेप्स, और एपिसोड्स

अपने समग्र लक्ष्य तक पहुँचने के लिए, बॉब को प्रोत्साहन या रिवार्ड्स की ज़रूरत होती है।

ज़्यादातर RL समस्याओं में रिवार्ड्स पहले से निर्धारित होते हैं। उदाहरण के लिए, शतरंज में किसी मोहरे को मारना पॉजिटिव रिवार्ड है, जबकि चेक में आना नेगेटिव रिवार्ड।

हमारे मामले में, अगर हम कोई सकारात्मक क्रिया देखें—जैसे कुछ समय तक फर्नीचर को स्क्रैच न करना या किसी स्क्रैचिंग पोस्ट को ढूँढ लेना—तो हम बॉब को ट्रीट्स दे सकते हैं। और अगर वह ड्रेप्स को फाड़े, तो हम उसे चेहरे पर पानी की फुहार से दंडित कर सकते हैं।

बॉब की सीखने की यात्रा की प्रगति मापने के लिए, हम उसकी क्रियाओं को टाइम स्टेप्स के रूप में सोच सकते हैं। उदाहरण के लिए, टाइम स्टेप t1 पर बॉब क्रिया a1 करता है, जिसके परिणामस्वरूप नया स्टेट s1 मिलता है (s0 डिफॉल्ट स्टेट था)। उसे एक रिवार्ड r1 भी मिल सकता है।

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

एक्सप्लोरेशन बनाम एक्सप्लॉइटेशन

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

जहाँ कोई लुभावना पोस्ट तुरंत संतुष्टि दे सकता है, वहीं थोड़ी रणनीतिक जाँच-पड़ताल बाद में जैकपॉट जैसी ट्रीट दिला सकती है। जैसे कोई शतरंज खिलाड़ी बेहतर स्थिति पाने के लिए तुरंत मारने का मौका छोड़ सकता है, वैसे ही बॉब शुरू में किसी कमतर पोस्ट को स्क्रैच कर सकता है (एक्सप्लोरेशन) ताकि अंततः सबसे बेहतरीन स्क्रैचिंग ठिकाना ढूँढ सके (एक्सप्लॉइटेशन)। जटिल एनवायरनमेंट में एजेंट के लिए रिवार्ड अधिकतम करने हेतु यह दीर्घकालिक रणनीति अहम है।

दूसरे शब्दों में, बॉब को एक्सप्लॉइटेशन (जो सबसे अच्छा काम करता है, उसी पर टिके रहना) और एक्सप्लोरेशन (कभी-कभार नए स्क्रैचिंग पोस्ट ढूँढने निकलना) के बीच संतुलन बनाना होगा। बहुत ज्यादा एक्सप्लोरेशन, खासकर कंटीन्युअस एनवायरनमेंट में, समय बर्बाद कर सकता है, जबकि बहुत ज्यादा एक्सप्लॉइटेशन बॉब को और भी बेहतर चीज़ से वंचित कर सकता है।

खुशकिस्मती से, कुछ चतुर रणनीतियाँ हैं जिन्हें बॉब अपना सकता है:

  • एप्सिलॉन-ग्रीडी लर्निंग: एक पल के लिए कल्पना करें कि बॉब के पास एक खास "स्क्रैची-मीटर" है जो रैंडम नंबर जनरेट करता है। अगर जनरेट किया गया नंबर एप्सिलॉन नामक किसी पूर्व-निर्धारित थ्रेशहोल्ड से छोटा है, तो बॉब किसी रैंडम सतह पर स्क्रैच करेगा (एक्सप्लोरेशन)। लेकिन अगर नंबर एप्सिलॉन से बड़ा है, तो बॉब वही पोस्ट चुनता है जो पहले सबसे अच्छा लगा था (एक्सप्लॉइटेशन)।
  • बोल्ट्ज़मैन एक्सप्लोरेशन: अगर बॉब बार-बार ऐसी चीज़ें स्क्रैच करता है जो अच्छी नहीं लगतीं (नेगेटिव रिवार्ड मिलते हैं), तो उसके नए विकल्पों की खोज करने की संभावना बढ़ जाती है (एक्सप्लोरेशन बढ़ता है)। लेकिन जैसे ही उसे परफेक्ट स्क्रैचिंग पोस्ट मिल जाती है (पॉजिटिव रिवार्ड), वह उसी सुखद स्थान पर टिकेगा (एक्सप्लॉइटेशन)।

इन रणनीतियों (या अन्य, जो हमारे ट्यूटोरियल के दायरे से बाहर हैं) का उपयोग करके, बॉब अनजाने की खोज और अच्छे विकल्पों पर टिके रहने के बीच संतुलन पा सकता है।

रीइन्फोर्समेंट लर्निंग एल्गोरिदम

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

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

मॉडल-बेस्ड रीइन्फोर्समेंट लर्निंग

मॉडल-बेस्ड एल्गोरिदम में, एजेंट (जैसे बॉब) एनवायरनमेंट का एक आंतरिक मॉडल बनाता है। यह मॉडल एनवायरनमेंट की गतिशीलता का प्रतिनिधित्व करता है, जिसमें स्टेट ट्रांज़िशन और रिवार्ड प्रॉबैबिलिटी शामिल हैं। फिर एजेंट इस मॉडल का उपयोग वास्तविक एनवायरनमेंट में कदम उठाने से पहले विभिन्न क्रियाओं की योजना और उनका मूल्यांकन करने के लिए कर सकता है।

इस पद्धति का लाभ यह है कि यह विशेषकर जटिल एनवायरनमेंट में अधिक सैंपल-एफिशिएंट होती है। यानी, शुद्ध ट्रायल-एंड-एरर तरीकों की तुलना में, बॉब को इष्टतम पोस्ट पहचानने के लिए कम स्क्रैचिंग प्रयासों की ज़रूरत पड़ सकती है। और ऐसा इसलिए क्योंकि बॉब क्रिया करने से पहले योजना और मूल्यांकन कर सकता है।

नुकसान यह है कि सटीक मॉडल बनाना चुनौतीपूर्ण हो सकता है, खासकर जटिल एनवायरनमेंट के लिए। मॉडल वास्तविक एनवायरनमेंट को ठीक से प्रतिबिंबित न कर पाए, जिससे उप-इष्टतम व्यवहार हो सकता है।

एक सामान्य मॉडल-बेस्ड RL एल्गोरिदम Dyna-Q है, जो वास्तव में मॉडल-बेस्ड और मॉडल-फ्री लर्निंग को जोड़ता है। यह एनवायरनमेंट का मॉडल बनाता है और उसे ऐक्शन प्लानिंग के लिए उपयोग करता है, साथ ही साथ मॉडल-फ्री Q-लर्निंग (जिसे हम आगे समझाएँगे) के जरिए सीधे अनुभव से भी सीखता है।

मॉडल-फ्री रीइन्फोर्समेंट लर्निंग

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

जहाँ सटीक मॉडल बनाना चुनौतीपूर्ण है, वहाँ मॉडल-फ्री RL एक सरल पद्धति प्रदान करता है। बॉब के लिए इसका मतलब है कि उसे कमरे का जटिल मानसिक नक्शा बनाने की ज़रूरत नहीं—वह स्क्रैच करके और उसके परिणामों का अनुभव करके सीख सकता है।

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

हालाँकि, केवल ट्रायल-एंड-एरर से सीखना कम सैंपल-एफिशिएंट हो सकता है। बॉब को सबसे अधिक रिवार्ड देने वाला पोस्ट लगातार ढूँढने से पहले बहुत सारा फर्नीचर स्क्रैच करना पड़ सकता है।

कुछ सामान्य मॉडल-फ्री RL एल्गोरिदम में शामिल हैं:

  • Q-लर्निंग: यह एल्गोरिदम हर स्टेट-ऐक्शन जोड़ी के लिए एक Q-वैल्यू सीखता है। Q-वैल्यू किसी विशिष्ट स्टेट में कोई विशेष क्रिया करने पर मिलने वाले अपेक्षित भविष्य के रिवार्ड का प्रतिनिधित्व करता है। फिर एजेंट दीर्घकालिक रिवार्ड अधिकतम करने के लिए सबसे बड़ी Q-वैल्यू वाली क्रिया चुन सकता है (इसे हम अगले सेक्शन में विस्तार से समझाएँगे)।
  • SARSA (State-Action-Reward-State-Action): यह Q-लर्निंग जैसा ही है, लेकिन यह हर स्टेट-ऐक्शन जोड़ी के लिए वैल्यू फ़ंक्शन सीखता है। यह वैल्यू उस रिवार्ड और अगली देखी गई स्टेट के आधार पर अपडेट होती है, जो क्रिया करने के बाद मिलते हैं।
  • पॉलिसी ग्रेडिएंट विधियाँ: ये एल्गोरिदम पॉलिसी फ़ंक्शन को सीधे सीखते हैं, जो स्टेट्स को ऐक्शंस से मैप करता है। ये उच्च रिवार्ड की ओर ले जाने की अपेक्षा वाले दिशा में पॉलिसी को ग्रेडिएंट्स से अपडेट करते हैं। उदाहरण: REINFORCE और Proximal Policy Optimization (PPO)।
  • डीप Q-नेटवर्क्स (DQN): यह एल्गोरिदम जटिल एनवायरनमेंट (जैसे वीडियो गेम) में अक्सर मिलने वाले उच्च-आयामी स्टेट स्पेस को संभालने के लिए Q-लर्निंग को डीप न्यूरल नेटवर्क्स के साथ जोड़ता है।

कौन-सा एल्गोरिदम चुनना है, यह कई कारकों पर निर्भर करता है: एनवायरनमेंट की जटिलता, उपलब्ध संसाधन, या वांछित व्याख्येयता स्तर।

जहाँ सटीक मॉडल बनाना संभव है, वहाँ मॉडल-बेस्ड दृष्टिकोण बेहतर हो सकते हैं। दूसरी ओर, वास्तविक दुनिया जैसे जटिल परिदृश्यों के लिए अधिकतर मामलों में मॉडल-फ्री दृष्टिकोण व्यावहारिक होते हैं।

साथ ही, डीप लर्निंग के उदय के साथ, डीप Q-नेटवर्क्स (DQN) और अन्य डीप RL एल्गोरिदम उच्च-आयामी स्टेट स्पेस वाले जटिल कार्यों से निपटने के लिए तेजी से लोकप्रिय हो रहे हैं।

Q-लर्निंग

अब एक अकेले एल्गोरिदम पर ध्यान दें और Q-लर्निंग को विस्तार से समझें।

हाई-लेवल ओवरव्यू

Q-लर्निंग एक मॉडल-फ्री एल्गोरिदम है, जो एजेंट्स को एनवायरनमेंट के साथ समझदारी से इंटरैक्ट करके इष्टतम जीतने की रणनीति सिखाता है।

अपने बिल्ली वाले उदाहरण पर लौटते हैं और मान लेते हैं कि हम समस्या का एक आर्केड संस्करण सुलझा रहे हैं, जिसमें डिस्क्रीट एनवायरनमेंट और सीमित क्रियाएँ हैं।

मान लें कि हम बॉब को एक टेबल देते हैं। कॉलम उपलब्ध क्रियाओं का प्रतिनिधित्व करते हैं, जबकि हर पंक्ति स्टेट स्पेस के किसी विशिष्ट स्टेट के साथ क्रिया को मैप करती है।

A q-table that is used to guide the actions of an agent. Q-table is integral to Q-learning algorithm of reinforcement learning.

शुरुआत में, हम टेबल को ज़ीरो से भरते हैं, जो आरंभिक Q-वैल्यूज़ का प्रतिनिधित्व करते हैं—इसीलिए इसे Q-टेबल कहते हैं।

फिर, हम डिफॉल्ट स्टेट (एपिसोड की शुरुआत) से इंटरैक्शन लूप शुरू करते हैं। लूप में, बॉब दिए गए स्टेट के लिए सबसे बड़ी Q-वैल्यू वाली क्रिया करता है। हालाँकि, लूप के पहले पास में, बॉब की क्रिया को मार्गदर्शन देने के लिए कोई सबसे बड़ी Q-वैल्यू नहीं होगी क्योंकि सभी Q-वैल्यू शुरुआत में शून्य हैं।

यहीं एक्सप्लोरेशन रणनीतियाँ (जैसे रैंडम एक्सप्लोरेशन या एप्सिलॉन-ग्रीडी) काम आती हैं। ये रणनीतियाँ बॉब को तब जानकारी इकट्ठा करने में मदद करती हैं जब Q-टेबल खाली हो।

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

एपिसोड टर्मिनेशन तक चलता है (हर एपिसोड में बॉब कितने भी स्टेप ले सकता है), और फिर हम फिर से शुरू करते हैं। हर अगला एपिसोड एक समृद्ध Q-टेबल के साथ होगा, जिससे बॉब और समझदार होता जाएगा।

यहाँ शामिल चरणों का हाई-लेवल ओवरव्यू है:

  1. हम Q-टेबल इनिशियलाइज़ करते हैं और आरंभिक मानों से भरते हैं।
  2. हम एक एपिसोड शुरू करते हैं।
  3. एजेंट क्रिया करता है।
  4. हम प्राप्त रिवार्ड को मापते हैं।
  5. एक नया स्टेट प्राप्त होता है।
  6. नए स्टेट के लिए नई Q-वैल्यू निकाली जाती है।
  7. एपिसोड विफलता, जीत या टाइम-आउट में से किसी पर समाप्त होता है।
  8. एनवायरनमेंट रीसेट होता है।
  9. हम मनचाही संख्या के एपिसोड्स के लिए चरण 2-8 दोहराते हैं।

एक और दो जैसे चरण सीधे हो सकते हैं, लेकिन बाकी को अधिक व्याख्या चाहिए।

एजेंट क्रिया कैसे चुनता है?

टाइम स्टेप 1 पर, जब बॉब अपनी पहली क्रिया करेगा, वह रैंडम होगी, क्योंकि सभी Q-वैल्यू शून्य हैं। बाद के टाइम स्टेप्स में, बॉब को एक्सप्लोरेशन और एक्सप्लॉइटेशन के बीच संतुलन पर विचार करना होगा।

इसमें मदद के लिए, हम बॉब को एप्सिलॉन नामक एक हाइपरपैरामीटर देते हैं जिसका मान छोटा होता है—आमतौर पर 0.1। फिर हम बॉब से कहते हैं कि 0 और 1 के बीच एक रैंडम नंबर जनरेट करे, और अगर यह नंबर एप्सिलॉन से छोटा है, तो वह अपनी Q-वैल्यू की परवाह किए बिना कोई रैंडम क्रिया चुनेगा।

अगर नंबर एप्सिलॉन से बड़ा है, तो बॉब सबसे बड़ी Q-वैल्यू वाली क्रिया चुनेगा। इस तरह, बॉब एप्सिलॉन (0.1 या 10%) समय में एक्सप्लोर करेगा और (1 - एप्सिलॉन या 0.9 या 90%) समय में एक्सप्लॉइट करेगा।

इसे ही एप्सिलॉन-ग्रीडी पॉलिसी कहते हैं। पॉलिसीज़ तय करती हैं कि एजेंट क्रिया कैसे करता है और Q-वैल्यूज़ कैसे निकाली जाती हैं।

रिवार्ड कैसे मापा जाता है?

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

लेकिन अधिकतर समय, कोई रिवार्ड नहीं होगा क्योंकि बॉब सोएगा, चलेगा या खेलेगा।

Q-टेबल को कैसे अपडेट करें?

Q-वैल्यू की गणना का सूत्र डरावना लग सकता है, इसलिए पहले इसे पूरा देखें और फिर चरण-दर-चरण समझें:

The official formula of Q-learning.

आइए सूत्र की शुरुआत पर विचार करें:

The first component of Q-learning's formula

यह भाग कहता है, "पिछले स्टेट और क्रिया के आधार पर, नई Q-वैल्यू की गणना इस प्रकार की जाती है (... )।"

नीचे वाला भाग वर्तमान (जल्द ही पुराना होने वाला) Q-वैल्यू है, जिसे एजेंट ने क्रिया करने के लिए उपयोग किया था।

अब अंतिम भाग पर विचार करें:

St+1 वह नया स्टेट है, जो At क्रिया करने से मिला। तो यह भाग उस नए स्टेट में सभी क्रियाओं (a) में से सबसे बड़ी Q-वैल्यू ढूँढ रहा है। हम उस मान को γ (गामा, डिस्काउंट फैक्टर) नामक पैरामीटर से गुणा करते हैं और प्राप्त परिणाम को मिले रिवार्ड में जोड़ते हैं।

अगर हम गामा को 1 के क़रीब रखते हैं, तो भविष्य के रिवार्ड्स को अधिक वज़न मिलता है। अगर हम इसे शून्य की ओर घटाते हैं, तो हम वर्तमान रिवार्ड Rt+1 पर अधिक जोर देते हैं। यानी, गामा एक और पैरामीटर है, जिससे हम एक्सप्लोरेशन और एक्सप्लॉइटेशन में संतुलन बना सकते हैं।

अंत में, हमारे पास अल्फा (α) है, जो ट्रेनिंग स्पीड को नियंत्रित करता है और 0 से 1 के बीच रहता है। 1 के क़रीब मान Q-वैल्यू अपडेट्स को बड़ा बनाते हैं, इसलिए एजेंट तेज़ी से सीखता है—प्लस साइन के दाईं ओर वाले हिस्से का प्रभाव बढ़ता है। इसके विपरीत, 0 के क़रीब मान बाईं ओर वाले हिस्से (वर्तमान Q-वैल्यू) का वज़न बढ़ाते हैं।

लर्निंग रेट से ट्रेनिंग स्पीड को नियंत्रित करने से यह सुनिश्चित होता है कि एजेंट बहुत तेज़ी से आगे न बढ़े और पुरानी जानकारी न भूल जाए। यह भी सुनिश्चित करता है कि वह बहुत धीमे न सीखे, जिससे महत्वपूर्ण जानकारी छूट सकती है।

Q-लर्निंग को समझने का यह सबसे कठिन भाग है, और उम्मीद है कि आपको इसके काम करने का मोटा अंदाज़ा मिल गया होगा।

Python Gymnasium में रीइन्फोर्समेंट लर्निंग

जैसा कि हर चीज़ के साथ होता है, पायथन में भी रीइन्फोर्समेंट लर्निंग समस्याएँ हल करने के लिए फ़्रेमवर्क हैं। इनमें सबसे लोकप्रिय है Gymnasium, जिसमें पहले से ही 2000 से अधिक एनवायरनमेंट बने हुए आते हैं (सभी का विस्तृत दस्तावेज़ मौजूद है)।

$ pip install "gymnasium[atari]"
$ pip install autorom[accept-rom-license]
$ AutoROM --accept-license

import gymnasium as gym
env = gym.make("ALE/Breakout-v5")

जिस एनवायरनमेंट को हमने अभी लोड किया है, उसे Breakout कहते हैं। यह कुछ ऐसा दिखता है:

यहाँ उद्देश्य है कि बोर्ड (एजेंट) ट्रायल-एंड-एरर के जरिए सभी ईंटों को खत्म करना सीख ले। खेल के नियम दंड और रिवार्ड निर्धारित करते हैं।

हम लेख का समापन इस तरह करेंगे कि आप अपने इंटरैक्शन एपिसोड्स कैसे चला सकते हैं और ऊपर जैसा GIF बनाकर एजेंट की प्रगति को कैसे देख सकते हैं, यह दिखाएँगे।

यह रहा इंटरैक्शन लूप का कोड:

epochs = 0

frames = []  # for animation
done = False

env = gym.make("ALE/Breakout-v5", render_mode="rgb_array")
observation, info = env.reset()

while not done:
    action = env.action_space.sample()
    observation, reward, terminated, truncated, info = env.step(action)

    # Put each rendered frame into dict for animation
    frames.append(
        {
            "frame": env.render(),
            "state": observation,
            "action": action,
            "reward": reward,
        }
    )

    epochs += 1
    if epochs == 1000:
        break

हमने अभी एक हज़ार टाइम स्टेप्स चलाए हैं, यानी एजेंट ने 1000 क्रियाएँ कीं। हालाँकि, ये सभी क्रियाएँ पूरी तरह रैंडम हैं—यह पिछली गलतियों से कुछ नहीं सीख रहा। इसे जाँचने के लिए, हम frames वेरिएबल का उपयोग करके एक GIF बना सकते हैं:

from moviepy.editor import ImageSequenceClip
# !pip install moviepy - if you don’t have moviepy

def create_gif(frames: dict, filename, fps=100):
    """
    Creates a GIF animation from a list of RGBA NumPy arrays.

    Args:
        frames: A list of RGBA NumPy arrays representing the animation frames.
        filename: The output filename for the GIF animation.
        fps: The frames per second of the animation (default: 10).
    """
    rgba_frames = [frame["frame"] for frame in frames]

    clip = ImageSequenceClip(rgba_frames, fps=fps)
    clip.write_gif(filename, fps=fps)

# Example usage
create_gif(frames, "animation.gif") #saves the GIF locally

नोट: अगर आपको "RuntimeError: No ffmpeg exe could be found" त्रुटि मिले, तो moviepy इम्पोर्ट करने से पहले ये दो लाइनें जोड़कर देखें:

from moviepy.config import change_settings
change_settings({"FFMPEG_BINARY": "/usr/bin/ffmpeg"})

हमारी पहली स्निपेट ने हर टाइम स्टेप के लिए एनवायरनमेंट की स्टेट को RGBA ऐरेज़ के रूप में लौटाया, और वे frames में संग्रहीत हैं। moviepy लाइब्रेरी का उपयोग करके सभी फ्रेम्स को एक साथ रखकर, हम पहले दिखा हुआ GIF बना सकते हैं:

एक अतिरिक्त बात के रूप में, अगर आप बहुत सारे टाइम स्टेप्स चलाते हैं, तो GIF तेज़ करने के लिए fps पैरामीटर समायोजित कर सकते हैं।

अब जबकि हम देख रहे हैं कि एजेंट केवल रैंडम क्रियाएँ कर रहा है, तो अब कुछ एल्गोरिदम आज़माने का समय है। आप यह चरण-दर-चरण इस कोर्स Reinforcement Learning with Gymnasium in Python में कर सकते हैं, जहाँ आप Q-लर्निंग, SARSA और अन्य कई एल्गोरिदम का अन्वेषण करेंगे।

ज़रूर उस फ़ंक्शन का उपयोग करें जो हमने अभी बनाया है, ताकि अपने एजेंट्स की प्रगति को एनिमेट कर सकें—और मज़ा लें!

निष्कर्ष

रीइन्फोर्समेंट लर्निंग, कंप्यूटर विज्ञान और मशीन लर्निंग की सबसे दिलचस्प चीज़ों में से एक है। इस ट्यूटोरियल में, हमने RL की आधारभूत अवधारणाएँ सीखीं—एजेंट्स और एनवायरनमेंट से लेकर Q-लर्निंग जैसे मॉडल-फ्री एल्गोरिदम तक।

हालाँकि, ऐसे वर्ल्ड-क्लास एजेंट बनाना जो शतरंज या वीडियो गेम जैसी जटिल समस्याएँ हल कर सकें, समय और अभ्यास मांगता है। तो, यहाँ कुछ संसाधन हैं जो रास्ते में आपकी मदद कर सकते हैं:

पढ़ने के लिए धन्यवाद!

Bexruz (Bex) Tuychiev

लेखक

Bexruz (Bex) Tuychiev

मैं 2 से अधिक वर्षों के अनुभव वाला डेटा साइंस कंटेंट क्रिएटर हूँ और Medium पर सबसे बड़े फॉलोइंग्स में से एक रखता हूँ। मुझे एआई और एमएल पर विस्तार से लेख लिखना पसंद है, जिसमें हल्का-सा व्यंग्यात्मक अंदाज रहता है—क्योंकि कुछ तो करना पड़ता है ताकि वे कम उबाऊ लगें। मैंने 130 से अधिक लेख और एक DataCamp कोर्स तैयार किया है, और एक और बन रहा है। मेरा कंटेंट 50 लाख से अधिक लोगों ने देखा है, जिनमें से 20 हज़ार लोग Medium और LinkedIn पर फॉलोअर्स बन गए। 

विषय