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

การฝึก PPO algorithm

ตอนนี้จะใช้ training loop แบบ A2C ที่คุ้นเคยเพื่อฝึก PPO algorithm

การ training loop นี้ยังไม่ได้ใช้ประโยชน์จาก clipped surrogate objective function อย่างเต็มที่ ดังนั้นผลลัพธ์ของ algorithm นี้จึงอาจไม่ต่างจาก A2C มากนัก แต่จะช่วยให้เห็นภาพแนวคิดเกี่ยวกับ clipped surrogate objective และ entropy bonus ได้ชัดเจนยิ่งขึ้น

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

Deep Reinforcement Learning ด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • ลบ entropy bonus ออกจาก actor loss โดยใช้ค่า 0.01 สำหรับพารามิเตอร์ \(c_{entropy}\)

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

for episode in range(10):
    state, info = env.reset()
    done = False
    episode_reward = 0
    step = 0
    while not done:    
        step += 1
        action, action_log_prob, entropy = select_action(actor, state)
        next_state, reward, terminated, truncated, _ = env.step(action)
        episode_reward += reward
        done = terminated or truncated
        actor_loss, critic_loss = calculate_losses(critic, action_log_prob, action_log_prob,
                                                   reward, state, next_state, done)
        # Remove the entropy bonus from the actor loss
        actor_loss -= ____ * ____
        actor_optimizer.zero_grad(); actor_loss.backward(); actor_optimizer.step()
        critic_optimizer.zero_grad(); critic_loss.backward(); critic_optimizer.step()
        state = next_state
    describe_episode(episode, reward, episode_reward, step)
แก้ไขและรันโค้ด