การฝึก 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)