REINFORCE एल्गोरिदम को ट्रेन करना
अब आप REINFORCE का उपयोग करके अपना Lunar Lander ट्रेन करने के लिए तैयार हैं! आपको REINFORCE ट्रेनिंग लूप इम्प्लीमेंट करना है, जिसमें REINFORCE लॉस की गणना भी शामिल है.
क्योंकि लॉस की गणना के स्टेप्स इनर और आउटर दोनों लूप्स में फैले हुए हैं, इस बार आप calculate_loss() फंक्शन का उपयोग नहीं करेंगे.
एपिसोड पूरा होने पर, आप उन दोनों मात्राओं का उपयोग करके लॉस निकाल सकते हैं.
संदर्भ के लिए, REINFORCE लॉस फंक्शन का एक्सप्रेशन यह है:
आप फिर से describe_episode() फंक्शन का उपयोग करेंगे ताकि हर एपिसोड में आपका एजेंट कैसा कर रहा है, यह प्रिंट हो सके.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Deep Reinforcement Learning
अभ्यास निर्देश
- चुनी गई action की log probability को एपिसोड की log probabilities में जोड़ें.
- एपिसोड रिटर्न में वर्तमान स्टेप के डिस्काउंटेड रिवॉर्ड को इन्क्रीमेंट करें.
- REINFORCE एपिसोड लॉस की गणना करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
for episode in range(50):
state, info = env.reset()
done = False
episode_reward = 0
step = 0
episode_log_probs = torch.tensor([])
R = 0
while not done:
step += 1
action, log_prob = select_action(policy_network, state)
next_state, reward, terminated, truncated, _ = env.step(action)
done = terminated or truncated
episode_reward += reward
# Append to the episode action log probabilities
episode_log_probs = torch.cat((____, ____))
# Increment the episode return
R += (____ ** step) * ____
state = next_state
# Calculate the episode loss
loss = ____ * ____.sum()
optimizer.zero_grad()
loss.backward()
optimizer.step()
describe_episode(episode, reward, episode_reward, step)