เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

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)
แก้ไขและรันโค้ด