시작하기무료로 시작하기

경험 재현을 활용한 DQN

이제 Experience Replay를 도입해 Deep Q Network로 에이전트를 학습해 보겠습니다. 이전에 Barebone DQN을 만들 때와 같은 Lunar Lander 환경을 사용합니다.

각 단계에서 가장 최근 전이로부터의 학습만으로 네트워크를 업데이트하는 대신, Experience Replay 버퍼를 사용하면 최근 경험에서 무작위 배치를 뽑아 학습할 수 있습니다. 이는 환경을 학습하는 능력을 크게 향상시킵니다.

이전 연습에서 사용한 QNetworkReplayBuffer 클래스가 다음과 같이 인스턴스화되어 제공됩니다:

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

또한 각 에피소드가 끝날 때 지표를 요약해 주는 describe_episode() 함수도 다시 제공됩니다.

이 연습은 강의의 일부입니다

Python으로 배우는 Deep Reinforcement Learning

강의 보기

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

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)
코드 편집 및 실행