경험 재현을 활용한 DQN
이제 Experience Replay를 도입해 Deep Q Network로 에이전트를 학습해 보겠습니다. 이전에 Barebone DQN을 만들 때와 같은 Lunar Lander 환경을 사용합니다.
각 단계에서 가장 최근 전이로부터의 학습만으로 네트워크를 업데이트하는 대신, Experience Replay 버퍼를 사용하면 최근 경험에서 무작위 배치를 뽑아 학습할 수 있습니다. 이는 환경을 학습하는 능력을 크게 향상시킵니다.
이전 연습에서 사용한 QNetwork와 ReplayBuffer 클래스가 다음과 같이 인스턴스화되어 제공됩니다:
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)