DQN กับ Experience Replay
ในแบบฝึกหัดนี้ จะได้นำ Experience Replay มาใช้ในการฝึก Agent ด้วย Deep Q-Network โดยใช้สภาพแวดล้อม Lunar Lander เดิมที่ใช้สร้าง Barebone DQN
ในแต่ละ Step แทนที่จะเรียนรู้จากเฉพาะ Transition ล่าสุด Experience Replay Buffer จะช่วยให้ Agent เรียนรู้จาก Batch ของประสบการณ์ที่สุ่มเลือกมาจากช่วงเวลาที่ผ่านมา ซึ่งช่วยเพิ่มประสิทธิภาพในการเรียนรู้สภาพแวดล้อมได้อย่างมีนัยสำคัญ
คลาส QNetwork และ ReplayBuffer จากแบบฝึกหัดก่อนหน้านี้พร้อมใช้งานแล้ว และถูก Instantiate ไว้ดังนี้:
q_network = QNetwork(8, 4)replay_buffer = ReplayBuffer(10000)
ฟังก์ชัน describe_episode() ก็พร้อมใช้งานเช่นกัน สำหรับแสดงค่า Metric ต่าง ๆ เมื่อสิ้นสุดแต่ละ Episode
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Deep Reinforcement Learning ด้วย 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)