रोबोट और वर्ल्ड मॉडलमध्यमपाठ 2607 मिनट का पाठ

सिमुलेशन और सिम-टू-रियल

असली रोबोट्स को ट्रेन करना धीमा और महंगा होता है। सिमुलेटर की मदद से रोबोट अनगिनत बार प्रैक्टिस कर सकते हैं। मुश्किल काम यह है कि जो कुछ उसने सीखा, उसे असली दुनिया में काम करने लायक बनाया जाए।

पाठ वीडियो में

60 सेकंड में

सिमुलेशन और सिम-टू-रियल

असली रोबोट्स को ट्रेन करना धीमा और महंगा होता है। सिमुलेटर की मदद से रोबोट अनगिनत बार प्रैक्टिस कर सकते हैं। मुश्किल काम यह है कि जो कुछ उसने सीखा, उसे असली दुनिया में काम करने…

1/4
आसान शब्दों में
एक पायलट असली विमान उड़ाने से पहले फ्लाइट सिमुलेटर में प्रैक्टिस करता है। सिमुलेटर में क्रैश होने पर कोई खर्च नहीं आता। रोबोट भी कंप्यूटर सिमुलेटर में प्रैक्टिस कर सकते हैं। लेकिन सिमुलेटर कभी भी पूरी तरह असली दुनिया जैसा नहीं होता, इसलिए जब रोबोट बाहर निकलता है तो वह हैरान रह सकता है।
एक सिमुलेटर ऐसा प्रोग्राम होता है जो फ़िज़िक्स की नकल करता है: ग्रैविटी, टकराव, घर्षण, जोड़ और मोटरें। यह उस दृश्य की कैमरा तस्वीरें भी बना सकता है। सिमुलेटर के अंदर, रोबोट किसी काम को बिना कुछ तोड़े-फोड़े, असली समय से बहुत तेज़ी से, एक साथ कई कंप्यूटरों पर बार-बार आज़मा सकता है।

सिमुलेट क्यों करें?

  • रफ़्तार: रोबोट की कई कॉपियाँ एक ही समय में असली रफ़्तार से कहीं तेज़ी से प्रैक्टिस कर सकती हैं।
  • सुरक्षा: गिरने या टकराने से किसी को चोट नहीं लगती।
  • लागत: कोई भी मोटर घिसकर खराब नहीं होती।
  • पूरी जानकारी: सिमुलेटर को ठीक-ठीक पता होता है कि कौन सी चीज़ कहाँ है, जिससे रिवॉर्ड और लेबल तय करना आसान हो जाता है।

एक पेज में रीइन्फ़ोर्समेंट लर्निंग

सिमुलेटर का इस्तेमाल अक्सर रीइन्फ़ोर्समेंट लर्निंग (RL) के साथ किया जाता है। किसी एक्सपर्ट की नकल करने के बजाय, रोबोट रिवॉर्ड के ज़रिए गलतियों से सीखता है (trial and error): रिवॉर्ड एक नंबर होता है जो बताता है कि वह कितना अच्छा प्रदर्शन कर रहा है।
शब्दमतलबग्रिड-वर्ल्ड का उदाहरण
स्टेट (State)इस समय की स्थितिरोबोट किस खाने पर है
एक्शन (Action)रोबोट क्या कर सकता हैऊपर, नीचे, बाएँ या दाएँ जाना
रिवॉर्ड (Reward)हर एक्शन के बाद मिलने वाला स्कोरलक्ष्य पर पहुँचने पर +10, हर कदम के लिए -1
पॉलिसी (Policy)एक्शन चुनने का नियम"इस खाने में, दाएँ चलो"
एपिसोड (Episode)शुरू से अंत तक की एक कोशिशशुरुआती खाने से लेकर लक्ष्य तक
रोबोट को एक्सप्लोरिंग (यह पता लगाने के लिए नए एक्शन आज़माना कि उनसे क्या होता है) और एक्सप्लॉइटिंग (जो पहले से काम कर रहा है उसका इस्तेमाल करना) के बीच संतुलन बनाना होता है। Q-learning नाम का एक आसान तरीका यह याद रखने के लिए एक टेबल रखता है कि हर स्टेट में कौन सा एक्शन कितना अच्छा है, और हर कदम के बाद उन नंबरों को थोड़ा बदलता है:
The Q-learning update, in one linepython
# new estimate = old estimate + learning_rate * (what we just saw - old estimate)
Q[s, a] = Q[s, a] + alpha * (reward + gamma * best_Q_of_next_state - Q[s, a])
यहाँ alpha यह तय करता है कि कितनी तेज़ी से सीखना है और gamma (0 और 1 के बीच) यह तय करता है कि भविष्य के रिवॉर्ड कितने मायने रखते हैं। असली रोबोट्स में टेबल में समाने से कहीं ज़्यादा स्टेट्स होते हैं, इसलिए वे टेबल के बजाय न्यूरल नेटवर्क का इस्तेमाल करते हैं, लेकिन रिवॉर्ड से सीखने का तरीका वही रहता है। आप लैब में इसका एक पूरा छोटा उदाहरण चलाकर देखेंगे।
सावधान रहें
रिवॉर्ड तय करने में गलती होना आसान है। अगर आप सफ़ाई करने वाले रोबोट को "कैमरे में कोई गंदगी न दिखने" पर रिवॉर्ड देते हैं, तो वह गंदगी से मुँह मोड़ना सीख सकता है। यह वही कमियों का फायदा उठाने वाली समस्या है जिसका ज़िक्र Specification gaming: finding the loophole में किया गया है।

रियलिटी गैप

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

डोमेन रैंडमाइज़ेशन

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

    सिमुलेटर बनाएँ

    रोबोट, चीज़ों और दृश्य को जितना हो सके उतना बेहतर मॉडल करें।
  2. 2

    रैंडमाइज़ करें

    हर एपिसोड में फ़िज़िक्स और विज़ुअल्स में अलग-अलग बदलाव करें।
  3. 3

    ट्रेन करें

    कई एपिसोड्स में RL, नकल (imitation), या दोनों का इस्तेमाल करें।
  4. 4

    असली दुनिया में टेस्ट करें

    सुरक्षित जगह पर धीरे-धीरे शुरुआत करें, और रोबोट को रोकने का इंतज़ाम रखें।
  5. 5

    कमियों को सुधारें

    नापें कि क्या गड़बड़ हुई और सिमुलेटर या रैंडमाइज़ेशन को बेहतर बनाएँ।

गैप को पार करने के अन्य तरीके

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

और देखें और पढ़ें

लैब

Python में एक छोटा ग्रिड-वर्ल्ड जहाँ एक रोबोट Q-learning के ज़रिए लक्ष्य तक पहुँचना सीखता है, साथ ही रियलिटी गैप पर दो प्रयोग।

~35 min

समस्या

शुरुआती कोड को gridbot.py के रूप में सेव करें और इसे python3 gridbot.py से चलाएँ। इसके लिए सिर्फ़ स्टैंडर्ड Python की ज़रूरत है। रोबोट दो दीवारों वाले 4 x 4 ग्रिड में लक्ष्य तक पहुँचने के लिए गलतियों से सीखता है। इसे 6 कदमों का सबसे छोटा रास्ता खोजना चाहिए।

  1. इसे चलाएँ और प्रिंट हुए रास्ते को पढ़ें। इसे कागज़ पर बनाएँ।
  2. range(500) को बदलकर range(5) करें। क्या यह अब भी अच्छा रास्ता खोज पाता है? क्यों या क्यों नहीं?
  3. कदम के रिवॉर्ड को -1.0 से बदलकर 0.0 करें। अलग-अलग सीड के साथ इसे कुछ बार चलाएँ। क्या बदलता है, और क्यों? (संकेत: gamma अभी भी लक्ष्य के पास होने पर उसका महत्व बढ़ा देता है।)
  4. रियलिटी गैप प्रयोग। हमेशा की तरह ट्रेन करें। फिर, केवल आखिरी वॉक में, दुनिया को "फिसलन भरी" बना दें: आखिरी लूप को इस तरह बदलें कि 0.2 संभावना के साथ रोबोट इसके बजाय कोई रैंडम एक्शन ले। क्या यह अब भी लक्ष्य तक पहुँचता है? क्या रास्ता लंबा हो जाता है?
  5. रैंडमाइज़ेशन प्रयोग। अब ट्रेनिंग के दौरान भी step को फिसलन भरा बना दें। क्या सीखा हुआ रास्ता बदलता है? यह डोमेन रैंडमाइज़ेशन जैसा कैसे है, इस पर दो वाक्य लिखें।

प्रैक्टिस लैब

कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।

आउटपुट

कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1हर कदम के लिए -1 का रिवॉर्ड रोबोट को छोटे रास्ते चुनने पर क्यों मजबूर करता है?दिखाएं

हर अतिरिक्त कदम कुल रिवॉर्ड में से 1 घटा देता है, इसलिए उसी लक्ष्य तक जाने वाला लंबा रास्ता कम रिवॉर्ड दिलाता है। Q-values इसे सीख लेती हैं, और ग्रीडी पॉलिसी ऐसे ऐक्शन चुनती है जो कम कदमों में लक्ष्य तक पहुँचाते हैं। 0 के स्टेप रिवॉर्ड के साथ भी, डिस्काउंट gamma जल्दी मिलने वाले रिवॉर्ड को ज़्यादा कीमती बनाता है, इसलिए आमतौर पर छोटे रास्तों को ही पसंद किया जाता है, लेकिन इसका असर कमज़ोर होता है और सीखने की रफ़्तार धीमी हो सकती है।

Q2एक पॉलिसी को पूरी तरह से अनुमान लगाने योग्य ग्रिड में ट्रेन किया जाता है, फिर असली ग्रिड फिसलन भरा निकलता है। भले ही लक्ष्य और दीवारें अपनी जगह से नहीं हिलीं, फिर भी यह बुरी तरह फेल क्यों हो सकती है?दिखाएं

पॉलिसी ने केवल अपने सामान्य रास्ते वाले खानों (squares) पर ही करना सीखा, क्योंकि उसे शायद ही कभी किसी और चीज़ की ज़रूरत पड़ी थी। जब कोई फिसलन उसे किसी असामान्य खाने पर धकेल देती है, तो वहाँ उसकी सीखी हुई वैल्यूज़ कमज़ोर हो सकती हैं, इसलिए उसके फ़ैसले भी खराब हो सकते हैं। इसके अलावा, जो रास्ता दीवारों के करीब से गुज़रता है, वह बिना फिसलन के ठीक हो सकता है लेकिन फिसलन के साथ जोखिम भरा होता है। यह छोटे रूप में रियलिटी गैप (reality gap) है: ट्रेनिंग वाली दुनिया असली दुनिया से ज़्यादा आसान थी।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

क्या सिमुलेटर किसी वीडियो गेम जैसा ही होता है?

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

सीधे असली रोबोट पर रीइन्फ़ोर्समेंट लर्निंग क्यों नहीं करते?

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

क्या डोमेन रैंडमाइज़ेशन हमेशा काम करता है?

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

क्या मैं रोबोट के बिना रीइन्फ़ोर्समेंट लर्निंग आज़मा सकता हूँ?

हाँ। इस पाठ की लैब सादे Python में एक छोटा सा ग्रिड-वर्ल्ड रोबोट चलाती है। ओपन-सोर्स सिमुलेटर और RL टूलकिट भी मौजूद हैं; अपने कंप्यूटर पर चलने वाले टूल को चुनने के लिए उनके मौजूदा डॉक्यूमेंटेशन देखें।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें