ComeçarComece gratuitamente

Treinamento do algoritmo REINFORCE

Você está pronto para treinar seu Lunar Lander usando o site REINFORCE! Tudo o que você precisa é implementar o loop de treinamento REINFORCE, incluindo o cálculo de perda REINFORCE.

Como as etapas de cálculo de perda abrangem os loops interno e externo, você não usará uma função calculate_loss() desta vez.

Quando o episódio for concluído, você poderá usar essas duas quantidades para calcular a perda.

Como referência, esta é a expressão da função de perda REINFORCE:

Você usará novamente a função describe_episode() para imprimir o desempenho do seu agente em cada episódio.

Este exercício faz parte do curso

Aprendizado por reforço profundo em Python

Ver Curso

Instruções de exercício

  • Acrescenta a probabilidade de registro da ação selecionada às probabilidades de registro do episódio.
  • Incrementar o retorno do episódio com a recompensa descontada da etapa atual.
  • Calcule a perda do episódio em REINFORCE.

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

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)
Editar e executar código