Začněte nyníZačněte zdarma

Trénink algoritmu REINFORCE

Teď je čas natrénovat Lunar Lander pomocí algoritmu REINFORCE! Zbývá ti implementovat trénovací smyčku REINFORCE včetně výpočtu loss funkce.

Protože výpočet loss funkce zasahuje do vnitřní i vnější smyčky, tentokrát funkci calculate_loss() nepoužiješ.

Jakmile je epizoda dokončena, můžeš obě tyto hodnoty využít k výpočtu loss.

Pro přehled, tady je výraz pro loss funkci algoritmu REINFORCE:

Funkci describe_episode() znovu použiješ k výpisu průběhu učení agenta v každé epizodě.

Toto cvičení je součástí kurzu

Deep Reinforcement Learning v Pythonu

Zobrazit kurz

Pokyny k cvičení

  • Přidej logaritmickou pravděpodobnost vybrané akce do seznamu log pravděpodobností epizody.
  • Přičti diskontovanou odměnu aktuálního kroku k výnosu epizody.
  • Vypočítej loss epizody podle algoritmu REINFORCE.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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)
Upravit a spustit kód