ComenzarEmpieza gratis

Entrenamiento del algoritmo REINFORCE

¡Estás listo para entrenar tu Lunar Lander utilizando REINFORCE! Todo lo que necesitas es implementar el bucle de entrenamiento REINFORCE, incluido el cálculo de pérdidas REINFORCE.

Dado que los pasos del cálculo de pérdidas abarcan los bucles interior y exterior, esta vez no utilizarás una función calculate_loss().

Una vez finalizado el episodio, puedes utilizar ambas cantidades para calcular la pérdida.

Como referencia, ésta es la expresión de la función de pérdida REINFORCE:

Utilizarás de nuevo la función describe_episode() para imprimir cómo le va a tu agente en cada episodio.

Este ejercicio forma parte del curso

Aprendizaje profundo por refuerzo en Python

Ver curso

Instrucciones del ejercicio

  • Añade la probabilidad logarítmica de la acción seleccionada a las probabilidades logarítmicas del episodio.
  • Incrementa el retorno del episodio con la recompensa descontada del paso actual.
  • Calcula la pérdida del episodio REINFORCE.

Ejercicio interactivo práctico

Prueba este ejercicio completando el código de muestra.

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 y ejecutar código