DRL bucle de entrenamiento

Para permitir que el agente experimente el entorno repetidamente, tienes que establecer un bucle de entrenamiento.

Muchos algoritmos de DRL tienen en común esta estructura central:

  1. Recorre los episodios
  2. Recorre en bucle los pasos de cada episodio
  3. En cada paso, elige una acción, calcula la pérdida y actualiza la red

Se te proporcionan las funciones select_action() y calculate_loss() que permiten ejecutar el código. También tienes a tu disposición las direcciones Network y optimizer definidas en el ejercicio anterior.

Este ejercicio forma parte del curso

Aprendizaje profundo por refuerzo en Python

Ver curso

Instrucciones de ejercicio

  • Asegúrate de que el bucle exterior (sobre episodios) se ejecuta durante diez episodios.
  • Asegúrate de que el bucle interno (sobrepasar los pasos) se ejecuta hasta que se complete el episodio.
  • Realiza la acción seleccionada por select_action() en el entorno env.
  • Al final de una iteración del bucle interno, actualiza el estado antes de iniciar el paso siguiente.

Ejercicio interactivo práctico

Pruebe este ejercicio completando este código de muestra.

env = gym.make("LunarLander-v2")
# Run ten episodes
for episode in ____:
    state, info = env.reset()
    done = False    
    # Run through steps until done
    while ____:
        action = select_action(network, state)        
        # Take the action
        next_state, reward, terminated, truncated, _ = ____
        done = terminated or truncated        
        loss = calculate_loss(network, state, action, next_state, reward, done)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()        
        # Update the state
        state = ____
    print(f"Episode {episode} complete.")