DQN con repetición de experiencia
Ahora introducirás la Reproducción de Experiencias para entrenar a un agente utilizando una Red Q Profunda. Utilizarás el mismo entorno Lunar Lander que utilizaste para construir tu Barebone DQN.
En cada paso, en lugar de utilizar sólo los aprendizajes de la transición más reciente para actualizar la red, el búfer de repetición de experiencias permite al agente aprender de un lote aleatorio de experiencias recientes. Esto mejora considerablemente su capacidad de aprender sobre el entorno.
Las clases QNetwork
y ReplayBuffer
de ejercicios anteriores están a tu disposición y se han instanciado como sigue:
q_network = QNetwork(8, 4)
replay_buffer = ReplayBuffer(10000)
La función describe_episode()
también vuelve a estar disponible para describir métricas al final de cada episodio.
Este ejercicio forma parte del curso
Aprendizaje profundo por refuerzo en Python
Ejercicio interactivo práctico
Pruebe este ejercicio completando este código de muestra.
for episode in range(10):
state, info = env.reset()
done = False
step = 0
episode_reward = 0
while not done:
step += 1
q_values = q_network(state)
action = torch.argmax(q_values).item()
next_state, reward, terminated, truncated, _ = env.step(action)
done = terminated or truncated
# Store the latest experience in the replay buffer
replay_buffer.____
state = next_state
episode_reward += reward
describe_episode(episode, reward, episode_reward, step)