DQN mit Erlebniswiedergabe
Du wirst nun Experience Replay einführen, um einen Agenten mit einem Deep Q Network zu trainieren. Du verwendest die gleiche Lunar Lander-Umgebung wie beim Bau deines Barebones DQN.
Anstatt bei jedem Schritt nur die Erkenntnisse aus dem letzten Übergang zu verwenden, um das Netzwerk zu aktualisieren, ermöglicht der Erfahrungswiederholungspuffer dem Agenten, aus einem zufälligen Stapel der letzten Erfahrungen zu lernen. Das verbessert seine Fähigkeit, etwas über die Umwelt zu lernen, erheblich.
Die Klassen QNetwork
und ReplayBuffer
aus den vorherigen Übungen stehen dir zur Verfügung und wurden wie folgt instanziiert:
q_network = QNetwork(8, 4)
replay_buffer = ReplayBuffer(10000)
Die Funktion describe_episode()
ist auch wieder verfügbar, um am Ende jeder Episode Metriken zu beschreiben.
Diese Übung ist Teil des Kurses
Deep Reinforcement Learning in Python
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
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)