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
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)