DQN z powtarzaniem doświadczeń
Teraz wprowadzisz mechanizm powtarzania doświadczeń (Experience Replay), aby wytrenować agenta przy użyciu głębokiej sieci Q. Użyjesz tego samego środowiska Lunar Lander, co podczas budowania podstawowego DQN.
W każdym kroku, zamiast aktualizować sieć wyłącznie na podstawie ostatniego przejścia, bufor powtarzania doświadczeń pozwala agentowi uczyć się z losowej paczki ostatnich doświadczeń. Znacznie poprawia to zdolność agenta do poznawania środowiska.
Klasy QNetwork i ReplayBuffer z poprzednich ćwiczeń są dostępne i zostały zainicjalizowane w następujący sposób:
q_network = QNetwork(8, 4)replay_buffer = ReplayBuffer(10000)
Funkcja describe_episode() jest również dostępna – służy do wyświetlania metryk na końcu każdego epizodu.
To ćwiczenie jest częścią kursu
Głębokie uczenie ze wzmocnieniem w Pythonie
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)