แก้ปัญหา CliffWalking ด้วยกลยุทธ์ epsilon-greedy แบบลดค่าตามเวลา
เพื่อพัฒนากลยุทธ์ epsilon-greedy ให้มีประสิทธิภาพมากขึ้น จึงมีการนำ decay factor เข้ามาใช้เพื่อค่อยๆ ลดอัตราการสำรวจ (epsilon) ลงเรื่อยๆ ขณะที่ agent เรียนรู้สภาพแวดล้อมมากขึ้น แนวทางนี้ส่งเสริมการสำรวจในช่วงต้นของการเรียนรู้ และเปลี่ยนมาใช้ประโยชน์จากความรู้ที่สะสมไว้เมื่อ agent คุ้นเคยกับสภาพแวดล้อมมากขึ้น ในแบบฝึกหัดนี้ จะนำกลยุทธ์ดังกล่าวไปใช้แก้ปัญหาในสภาพแวดล้อม CliffWalking
สภาพแวดล้อมได้รับการกำหนดค่าเริ่มต้นแล้ว และเข้าถึงได้ผ่านตัวแปร env ตัวแปร epsilon, min_epsilon และ epsilon_decay ได้ถูกกำหนดไว้ให้แล้ว รวมถึงฟังก์ชัน epsilon_greedy() และ update_q_table() ได้รับการนำเข้ามาให้เรียบร้อยแล้ว
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Reinforcement Learning with Gymnasium ใน Python
คำแนะนำการฝึกหัด
- สร้าง training loop แบบครบวงจร โดยเลือก
actionดำเนินการ action นั้น สะสมrewardที่ได้รับลงในepisode_rewardและอัปเดต Q-table - ลดค่า
epsilonโดยใช้อัตราepsilon_decayโดยให้แน่ใจว่าค่าจะไม่ต่ำกว่าmin_epsilon
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
rewards_decay_eps_greedy = []
for episode in range(total_episodes):
state, info = env.reset()
episode_reward = 0
for i in range(max_steps):
# Implement the training loop
action = ____
new_state, reward, terminated, truncated, info = ____
episode_reward += ____
____
state = new_state
rewards_decay_eps_greedy.append(episode_reward)
# Update epsilon
epsilon = ____
print("Average reward per episode: ", np.mean(rewards_decay_eps_greedy))