НачатьНачать бесплатно

DQN с буфером воспроизведения опыта

Теперь вы добавите механизм воспроизведения опыта (Experience Replay) для обучения агента с помощью глубокой Q-сети. Вы будете использовать ту же среду Lunar Lander, что и при построении базовой DQN.

На каждом шаге вместо того, чтобы обновлять сеть только на основе последнего перехода, буфер воспроизведения опыта позволяет агенту учиться на случайном батче недавних наблюдений. Это существенно улучшает способность агента изучать среду.

Классы QNetwork и ReplayBuffer из предыдущих упражнений доступны вам и созданы следующим образом:

  • q_network = QNetwork(8, 4)
  • replay_buffer = ReplayBuffer(10000)

Функция describe_episode() также доступна — она описывает метрики по итогам каждого эпизода.

Это упражнение является частью курса

Глубокое обучение с подкреплением на Python

Посмотреть курс

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

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)
Редактировать и запускать код