Reinforcement learning प्लेग्राउंडमध्यमपाठ 2886 मिनट का पाठ

गलतियों से सीखकर आगे बढ़ना (ट्रायल और एरर)

एजेंट को सही जवाब कोई नहीं बताता। वह कुछ आजमाता है, उसे एक स्कोर मिलता है, और वह धीरे-धीरे अपने काम करने का तरीका बदलता है। इसी को रीइन्फ़ोर्समेंट लर्निंग (reinforcement learning) कहते हैं।

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

60 सेकंड में

गलतियों से सीखकर आगे बढ़ना (ट्रायल और एरर)

एजेंट को सही जवाब कोई नहीं बताता। वह कुछ आजमाता है, उसे एक स्कोर मिलता है, और वह धीरे-धीरे अपने काम करने का तरीका बदलता है। इसी को रीइन्फ़ोर्समेंट लर्निंग (reinforcement learning)…

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

वह लूप जिसका इस्तेमाल इस ट्रैक की हर चीज़ करती है

  1. 1

    देखें

    एजेंट मौजूदा स्थिति को देखता है, जिसे स्टेट (state) कहा जाता है।
  2. 2

    एक्शन लें

    यह कोई एक्शन चुनता है, जैसे "बाईं तरफ चलो" या "यॉर्क बॉल फेंको"।
  3. 3

    फ़ीडबैक पाएं

    एनवायरनमेंट एक नई स्टेट में चला जाता है और एक रिवॉर्ड देता है।
  4. 4

    सीखें

    रिवॉर्ड के आधार पर, एजेंट भविष्य में चुने जाने वाले अपने विकल्पों में थोड़ा बदलाव करता है।
  5. 5

    दोहराएं

    हज़ारों बार। अच्छी आदतें बढ़ती हैं, बुरी आदतें छूटती जाती हैं।

सीखने के तीन तरीके, आमने-सामने

सीखने का तरीकाकंप्यूटर को क्या मिलता हैरोज़मर्रा का उदाहरण
उदाहरणों से सीखना (सुपरवाइज़्ड)सही जवाब के साथ इनपुटआंसर की (answer key) के साथ पुराने परीक्षा के पेपर
पैटर्न खोजना (अनसुपरवाइज़्ड)बिना किसी जवाब के इनपुटफ़ोटो के ढेर को एक जैसे दिखने वाले समूहों में छांटना
रीइन्फ़ोर्समेंट लर्निंगएक्शन लेने के बाद सिर्फ़ एक स्कोरएक ऐसा खेल जहाँ आपको अपने पॉइंट्स दिखते हैं, लेकिन कोई आपको सबसे अच्छी चाल नहीं बताता

यह मुश्किल क्यों है?

  • रिवॉर्ड सिर्फ़ एक नंबर होता है। यह बताता है कि आपने कितना अच्छा किया, यह नहीं कि आपको इसकी जगह क्या करना चाहिए था।
  • रिवॉर्ड देर से मिल सकते हैं। क्रिकेट मैच में नतीजा आखिर में आता है। 120 गेंदों में से किस गेंद ने मैच जिताया?
  • एजेंट के एक्शन तय करते हैं कि वह आगे क्या देखेगा। शुरुआत में चली गई एक खराब चाल खेल के किसी बदतर मोड़ पर ले जा सकती है।
  • सीखने के लिए इसे चीज़ें आज़मानी पड़ती हैं, और कुछ कोशिशें खराब भी होंगी। इसे एक्सप्लोरेशन (exploration) कहते हैं, और इस पर एक अलग पाठ है।

दस लाइनों में ट्रायल और एरर

यहाँ सबसे आसान लर्नर दिया गया है। एक खिलाड़ी गेंद को ठीक 7 मीटर दूर फेंकना चाहता है। अकेला फ़ीडबैक यह है कि गेंद निशाने से कितनी दूर गिरी। खिलाड़ी एक छोटा सा बदलाव आजमाता है, और उसे तभी बनाए रखता है जब स्कोर बेहतर हुआ हो। इसे हिल क्लाइंबिंग (पहाड़ चढ़ना) कहते हैं: हमेशा ऊपर की ओर कदम बढ़ाएं।
Python: learn a throw by trial and errorpython
import random

rng = random.Random(42)          # seeded, so you get the same result every run
TARGET = 7.0

def reward(strength):
    landed = strength * 1.4                  # the game's physics, hidden from the player
    return -abs(landed - TARGET)             # 0 is perfect, more negative is worse

strength = 1.0
best = reward(strength)
for attempt in range(1, 41):
    trial = strength + rng.uniform(-1.0, 1.0)    # try a small change
    r = reward(trial)
    if r > best:                                 # keep it only if it helped
        strength, best = trial, r
    if attempt % 5 == 0:
        print(f"attempt {attempt:2}: strength {strength:.2f}, miss {-best:.2f} m")
खिलाड़ी ने कभी फ़िज़िक्स का फ़ॉर्मूला नहीं सीखा। उसने सिर्फ़ यह सीखा कि कितनी ताकत लगाने पर अच्छा स्कोर मिलता है। यही RL की असली बात है: नतीजा कैसा रहा, इससे यह सीखना कि क्या करना है।
नोट
हिल क्लाइंबिंग इस छोटी सी पहेली के लिए तो काम करती है, लेकिन यह अभी पूरी तरह "असली" RL नहीं है, क्योंकि हर कोशिश बिना किसी स्टेट के एक नई शुरुआत होती है। अगले पाठों में आप स्टेट्स जोड़ेंगे, ताकि सही एक्शन इस बात पर निर्भर करे कि आप कहाँ हैं।

आपने RL के बारे में कहाँ सुना होगा

RL सिस्टम्स ने शतरंज और गो (Go) जैसे बोर्ड गेम इतने अच्छे से खेलना सीख लिया है कि वे दुनिया के टॉप इंसानी खिलाड़ियों को हरा देते हैं, और सिर्फ़ स्क्रीन के पिक्सल देखकर कई वीडियो गेम खेल लेते हैं। इन्हीं आइडियाज़ का इस्तेमाल सिमुलेटर में रोबोट्स को ट्रेन करने और चैटबॉट्स को ज़्यादा मददगार बनाने के लिए किया जाता है। आप इस ट्रैक के आखिर में इनसे मिलेंगे। पहले, आप खुद छोटे-छोटे गेम बनाएंगे।
असली उदाहरण
प्रिया का छोटा भाई बिना कोई नियम पढ़े एक नया मोबाइल गेम सीख लेता है। वह बटन दबाता है, स्कोर देखता है, और एक घंटे के बाद वह जान जाता है कि किन चालों से सिक्के मिलते हैं। वह आपको नियम नहीं समझा सकता, लेकिन वह अच्छा खेलता है। उसने ठीक उसी तरह सीखा जैसे कोई RL एजेंट सीखता है।
यह आज़माएं। TARGET को 10 और स्टेप साइज़ 1.0 को 0.1 में बदलें (दोनों जगहों पर)। क्या खिलाड़ी 40 कोशिशों में अभी भी निशाने के करीब पहुंच पाता है? बहुत छोटे स्टेप साइज़ का क्या नुकसान होता है?

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

लैब

एक ताला तोड़ने वाला (lock-cracking) एजेंट जो केवल स्कोर का इस्तेमाल करके, कुछ सौ कोशिशों में 6-डायल वाला नंबर लॉक खोल देता है।

~20 min

समस्या

एक नंबर लॉक में 6 डायल हैं, जिनमें से हर एक पर 0 से 9 तक के अंक दिखते हैं। इसका मतलब है कि 10 लाख संभावित कोड हैं। ताला आपको यह नहीं बताएगा कि कौन से डायल सही हैं। यह केवल एक स्कोर देता है: कितने डायल सही हैं। वह स्कोर ही आपका एकमात्र रिवॉर्ड है।

  1. Run दबाएं। शुरुआती कोड 600 बार पूरी तरह से तुक्के लगाता है। देखें कि यह किस सबसे अच्छे स्कोर तक पहुँचता है।
  2. crack को फिर से लिखें ताकि यह ट्रायल और एरर से सीखे: एक अंदाज़े से शुरुआत करें, एक बार में एक डायल बदलें, और बदलाव को तभी बनाए रखें जब स्कोर बढ़े।
  3. score को बुलाने के लिए ज़्यादा से ज़्यादा tries का इस्तेमाल करें। जब सभी डायल सही हो जाएं तो पहले ही रुक जाएं।
  4. Check दबाएं। यह आपके crack को तीन ऐसे नए तालों पर टेस्ट करता है जो उसने पहले कभी नहीं देखे।
  5. दो वाक्य लिखें: हर बार नए सिरे से अंदाज़ा लगाने के मुकाबले अच्छे बदलावों को बनाए रखना इतना बेहतर क्यों है?

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

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

आउटपुट

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

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

कठिन सवाल

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

Q1क्या आप बिना किसी तुक्के के, हर बार लगभग 55 कोशिशों में 6-डायल वाला ताला खोल सकते हैं?दिखाएं

हाँ। सभी ज़ीरो से शुरुआत करें और स्कोर नोट करें। पहले डायल के लिए, बाकियों को वैसे ही रखते हुए 1 से 9 तक आज़माएं: जैसे ही वह डायल सही होगा, स्कोर ठीक एक बढ़ जाएगा, और अगर आपने किसी ऐसे डायल को बिगाड़ दिया जो पहले से 0 पर सही था, तो स्कोर एक घट जाएगा। इस तरह आप ज़्यादा से ज़्यादा 10 कोशिशों में हर डायल का पता लगा लेते हैं, कुल मिलाकर लगभग 60 में। यह स्कोर के स्ट्रक्चर का फायदा उठाता है। RL एजेंट आमतौर पर ऐसा नहीं कर पाते क्योंकि असली दुनिया इतनी सीधी-सादी नहीं होती, इसीलिए उन्हें ज़्यादा कोशिशों की ज़रूरत होती है।

Q2हिल क्लाइंबिंग किसी "छोटी पहाड़ी" पर अटक सकती है। क्या इस ताले के साथ ऐसा होगा?दिखाएं

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

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

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

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

यह शब्द मनोविज्ञान (psychology) से लिया गया है, जहाँ इनाम व्यवहार को ढालते हैं। कंप्यूटिंग में, रिवॉर्ड सिर्फ़ एक नंबर होता है जिसे प्रोग्राम बड़ा करने की कोशिश करता है। प्रोग्राम कोई खुशी महसूस नहीं करता। वह बस गणित के नियमों पर चलता है।

एजेंट को सीधा सही जवाब ही क्यों नहीं बता देते?

अक्सर यह किसी को पता ही नहीं होता। खेल की किसी नई स्थिति में सबसे अच्छी चाल क्या है, या किसी रोबोट के लिए बैलेंस बनाने का सबसे बढ़िया तरीका क्या है? हम फिर भी नतीजे को स्कोर दे सकते हैं, इसलिए RL एजेंट को ऐसा अच्छा व्यवहार खोजने देता है जिसे हम खुद कोड में नहीं लिख सकते थे।

क्या RL को बहुत सारी कोशिशों की ज़रूरत होती है?

आम तौर पर हाँ, किसी इंसान को जितनी ज़रूरत होगी उससे कहीं ज़्यादा। इसीलिए कई RL सिस्टम गेम और सिमुलेटर में प्रैक्टिस करते हैं, जहाँ लाखों कोशिशें करना सस्ता होता है और किसी को चोट नहीं लगती।

क्या मुझे इस ट्रैक के लिए किसी बड़े कंप्यूटर की ज़रूरत है?

नहीं। हर लैब छोटे-छोटे गेम्स का इस्तेमाल करती है जो आपके ब्राउज़र में कुछ ही सेकंड में चल जाते हैं। इसके पीछे के विचार वही हैं जो बड़े पैमाने पर इस्तेमाल होते हैं।

पाठ का टेस्ट

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

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