सिमुलेशन और सिम-टू-रियल
असली रोबोट्स को ट्रेन करना धीमा और महंगा होता है। सिमुलेटर की मदद से रोबोट अनगिनत बार प्रैक्टिस कर सकते हैं। मुश्किल काम यह है कि जो कुछ उसने सीखा, उसे असली दुनिया में काम करने लायक बनाया जाए।
60 सेकंड में
सिमुलेशन और सिम-टू-रियल
असली रोबोट्स को ट्रेन करना धीमा और महंगा होता है। सिमुलेटर की मदद से रोबोट अनगिनत बार प्रैक्टिस कर सकते हैं। मुश्किल काम यह है कि जो कुछ उसने सीखा, उसे असली दुनिया में काम करने…
सिमुलेट क्यों करें?
- रफ़्तार: रोबोट की कई कॉपियाँ एक ही समय में असली रफ़्तार से कहीं तेज़ी से प्रैक्टिस कर सकती हैं।
- सुरक्षा: गिरने या टकराने से किसी को चोट नहीं लगती।
- लागत: कोई भी मोटर घिसकर खराब नहीं होती।
- पूरी जानकारी: सिमुलेटर को ठीक-ठीक पता होता है कि कौन सी चीज़ कहाँ है, जिससे रिवॉर्ड और लेबल तय करना आसान हो जाता है।
एक पेज में रीइन्फ़ोर्समेंट लर्निंग
| शब्द | मतलब | ग्रिड-वर्ल्ड का उदाहरण |
|---|---|---|
| स्टेट (State) | इस समय की स्थिति | रोबोट किस खाने पर है |
| एक्शन (Action) | रोबोट क्या कर सकता है | ऊपर, नीचे, बाएँ या दाएँ जाना |
| रिवॉर्ड (Reward) | हर एक्शन के बाद मिलने वाला स्कोर | लक्ष्य पर पहुँचने पर +10, हर कदम के लिए -1 |
| पॉलिसी (Policy) | एक्शन चुनने का नियम | "इस खाने में, दाएँ चलो" |
| एपिसोड (Episode) | शुरू से अंत तक की एक कोशिश | शुरुआती खाने से लेकर लक्ष्य तक |
# 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 के बीच) यह तय करता है कि भविष्य के रिवॉर्ड कितने मायने रखते हैं। असली रोबोट्स में टेबल में समाने से कहीं ज़्यादा स्टेट्स होते हैं, इसलिए वे टेबल के बजाय न्यूरल नेटवर्क का इस्तेमाल करते हैं, लेकिन रिवॉर्ड से सीखने का तरीका वही रहता है। आप लैब में इसका एक पूरा छोटा उदाहरण चलाकर देखेंगे।रियलिटी गैप
डोमेन रैंडमाइज़ेशन
- 1
सिमुलेटर बनाएँ
रोबोट, चीज़ों और दृश्य को जितना हो सके उतना बेहतर मॉडल करें। - 2
रैंडमाइज़ करें
हर एपिसोड में फ़िज़िक्स और विज़ुअल्स में अलग-अलग बदलाव करें। - 3
ट्रेन करें
कई एपिसोड्स में RL, नकल (imitation), या दोनों का इस्तेमाल करें। - 4
असली दुनिया में टेस्ट करें
सुरक्षित जगह पर धीरे-धीरे शुरुआत करें, और रोबोट को रोकने का इंतज़ाम रखें। - 5
कमियों को सुधारें
नापें कि क्या गड़बड़ हुई और सिमुलेटर या रैंडमाइज़ेशन को बेहतर बनाएँ।
गैप को पार करने के अन्य तरीके
- सिस्टम आइडेंटिफिकेशन: असली रोबोट की बारीकी से माप लें (वज़न, घर्षण, देरी) और सिमुलेटर को उसके अनुसार ढालें।
- असली डेटा पर फ़ाइन-ट्यूनिंग: ज़्यादातर ट्रेनिंग सिमुलेशन में करें, फिर थोड़े से असली दुनिया के अभ्यास या डिमॉन्स्ट्रेशन के साथ इसे अडजस्ट करें।
- सरल इनपुट्स: पॉलिसी को सीधे कैमरा इमेज देने के बजाय ऐसी चीज़ें दें जो सिमुलेशन और असलियत दोनों में एक जैसी दिखती हों, जैसे कि जॉइंट एंगल्स।
और देखें और पढ़ें
लैब
Python में एक छोटा ग्रिड-वर्ल्ड जहाँ एक रोबोट Q-learning के ज़रिए लक्ष्य तक पहुँचना सीखता है, साथ ही रियलिटी गैप पर दो प्रयोग।
समस्या
शुरुआती कोड को gridbot.py के रूप में सेव करें और इसे python3 gridbot.py से चलाएँ। इसके लिए सिर्फ़ स्टैंडर्ड Python की ज़रूरत है। रोबोट दो दीवारों वाले 4 x 4 ग्रिड में लक्ष्य तक पहुँचने के लिए गलतियों से सीखता है। इसे 6 कदमों का सबसे छोटा रास्ता खोजना चाहिए।
- इसे चलाएँ और प्रिंट हुए रास्ते को पढ़ें। इसे कागज़ पर बनाएँ।
range(500)को बदलकरrange(5)करें। क्या यह अब भी अच्छा रास्ता खोज पाता है? क्यों या क्यों नहीं?- कदम के रिवॉर्ड को
-1.0से बदलकर0.0करें। अलग-अलग सीड के साथ इसे कुछ बार चलाएँ। क्या बदलता है, और क्यों? (संकेत:gammaअभी भी लक्ष्य के पास होने पर उसका महत्व बढ़ा देता है।) - रियलिटी गैप प्रयोग। हमेशा की तरह ट्रेन करें। फिर, केवल आखिरी वॉक में, दुनिया को "फिसलन भरी" बना दें: आखिरी लूप को इस तरह बदलें कि 0.2 संभावना के साथ रोबोट इसके बजाय कोई रैंडम एक्शन ले। क्या यह अब भी लक्ष्य तक पहुँचता है? क्या रास्ता लंबा हो जाता है?
- रैंडमाइज़ेशन प्रयोग। अब ट्रेनिंग के दौरान भी
stepको फिसलन भरा बना दें। क्या सीखा हुआ रास्ता बदलता है? यह डोमेन रैंडमाइज़ेशन जैसा कैसे है, इस पर दो वाक्य लिखें।
प्रैक्टिस लैब
कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।
कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।
आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1हर कदम के लिए -1 का रिवॉर्ड रोबोट को छोटे रास्ते चुनने पर क्यों मजबूर करता है?दिखाएं
हर अतिरिक्त कदम कुल रिवॉर्ड में से 1 घटा देता है, इसलिए उसी लक्ष्य तक जाने वाला लंबा रास्ता कम रिवॉर्ड दिलाता है। Q-values इसे सीख लेती हैं, और ग्रीडी पॉलिसी ऐसे ऐक्शन चुनती है जो कम कदमों में लक्ष्य तक पहुँचाते हैं। 0 के स्टेप रिवॉर्ड के साथ भी, डिस्काउंट gamma जल्दी मिलने वाले रिवॉर्ड को ज़्यादा कीमती बनाता है, इसलिए आमतौर पर छोटे रास्तों को ही पसंद किया जाता है, लेकिन इसका असर कमज़ोर होता है और सीखने की रफ़्तार धीमी हो सकती है।
Q2एक पॉलिसी को पूरी तरह से अनुमान लगाने योग्य ग्रिड में ट्रेन किया जाता है, फिर असली ग्रिड फिसलन भरा निकलता है। भले ही लक्ष्य और दीवारें अपनी जगह से नहीं हिलीं, फिर भी यह बुरी तरह फेल क्यों हो सकती है?दिखाएं
पॉलिसी ने केवल अपने सामान्य रास्ते वाले खानों (squares) पर ही करना सीखा, क्योंकि उसे शायद ही कभी किसी और चीज़ की ज़रूरत पड़ी थी। जब कोई फिसलन उसे किसी असामान्य खाने पर धकेल देती है, तो वहाँ उसकी सीखी हुई वैल्यूज़ कमज़ोर हो सकती हैं, इसलिए उसके फ़ैसले भी खराब हो सकते हैं। इसके अलावा, जो रास्ता दीवारों के करीब से गुज़रता है, वह बिना फिसलन के ठीक हो सकता है लेकिन फिसलन के साथ जोखिम भरा होता है। यह छोटे रूप में रियलिटी गैप (reality gap) है: ट्रेनिंग वाली दुनिया असली दुनिया से ज़्यादा आसान थी।
अक्सर पूछे जाने वाले सवाल
क्या सिमुलेटर किसी वीडियो गेम जैसा ही होता है?
दोनों में काफ़ी समानताएं हैं: दोनों फ़िज़िक्स इंजन का इस्तेमाल करते हैं और 3D दृश्य बनाते हैं। लेकिन गेम्स को सिर्फ़ खिलाड़ी को दिखने में सही लगना होता है। रोबोट सिमुलेटर में फ़िज़िक्स का इतना सटीक होना ज़रूरी है कि जो वहाँ काम करे, वह असली रोबोट पर भी काम करे।
सीधे असली रोबोट पर रीइन्फ़ोर्समेंट लर्निंग क्यों नहीं करते?
कभी-कभी आसान कामों के लिए लोग ऐसा करते हैं। लेकिन RL को अक्सर बहुत ज़्यादा कोशिशों की ज़रूरत होती है, जिनमें से कई खराब होती हैं। असली रोबोट पर इसमें बहुत समय लगता है, पुर्जे घिस जाते हैं और यह असुरक्षित भी हो सकता है। असली दुनिया की प्रैक्टिस को कम करने के लिए सिमुलेशन, डिमॉन्स्ट्रेशन या दोनों का इस्तेमाल किया जाता है।
क्या डोमेन रैंडमाइज़ेशन हमेशा काम करता है?
नहीं। अगर असली दुनिया में कोई ऐसा प्रभाव है जिसे सिमुलेटर में बिल्कुल शामिल ही नहीं किया गया है, तो बाकी सेटिंग्स के रैंडम बदलाव से वह उसे नहीं सीख पाएगा। बहुत ज़्यादा रैंडमाइज़ेशन काम को इतना कठिन भी बना सकता है कि सीखने की रफ़्तार धीमी हो जाए। यह एक काम का टूल है, कोई गारंटी नहीं।
क्या मैं रोबोट के बिना रीइन्फ़ोर्समेंट लर्निंग आज़मा सकता हूँ?
हाँ। इस पाठ की लैब सादे Python में एक छोटा सा ग्रिड-वर्ल्ड रोबोट चलाती है। ओपन-सोर्स सिमुलेटर और RL टूलकिट भी मौजूद हैं; अपने कंप्यूटर पर चलने वाले टूल को चुनने के लिए उनके मौजूदा डॉक्यूमेंटेशन देखें।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।