Antrenarea algoritmului REINFORCE
Ești pregătit să antrenezi Lunar Lander folosind REINFORCE! Tot ce trebuie să faci este să implementezi bucla de antrenare REINFORCE, inclusiv calculul funcției de pierdere REINFORCE.
Deoarece pașii de calcul ai pierderii se întind atât pe bucla interioară, cât și pe cea exterioară, de data aceasta nu vei folosi o funcție calculate_loss().
Atunci când episodul s-a încheiat, poți folosi ambele cantități pentru a calcula pierderea.
Pentru referință, iată expresia funcției de pierdere REINFORCE:
Vei folosi din nou funcția describe_episode() pentru a afișa performanța agentului la fiecare episod.
Acest exercițiu face parte din cursul
Deep Reinforcement Learning în Python
Instrucțiuni pentru exercițiu
- Adaugă log-probabilitatea acțiunii selectate la log-probabilitățile episodului.
- Incrementează recompensa cumulată a episodului cu recompensa actualizată a pasului curent.
- Calculează pierderea episodului folosind REINFORCE.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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)