ÎncepețiÎncepe gratuit

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

Vezi cursul

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)
Editează și rulează codul