การ implement Every-Visit Monte Carlo
วิธี Every-Visit Monte Carlo แตกต่างจากแบบ First-Visit ตรงที่มีการอัปเดตค่าทุกครั้งที่คู่ state-action ปรากฏขึ้น ไม่ใช่เฉพาะครั้งแรกที่พบเท่านั้น แม้แนวทางนี้จะช่วยให้ประเมินนโยบายได้ครอบคลุมยิ่งขึ้นโดยใช้ข้อมูลทั้งหมดจาก episode แต่ก็อาจทำให้ค่าประมาณมีความแปรปรวนสูงขึ้น เนื่องจากนำตัวอย่างทุกชิ้นมาใช้โดยไม่คำนึงว่าจะเกิดขึ้นตรงจุดใดใน episode งานของคุณคือเติมโค้ดส่วนที่เหลือของฟังก์ชัน every_visit_mc() ซึ่งทำหน้าที่ประมาณค่า action-value function Q ใน num_episodes episode
ดิกชันนารี returns_sum และ returns_count ที่มีคู่ state-action เป็น key ได้รับการกำหนดค่าเริ่มต้นและโหลดไว้ให้แล้ว พร้อมกับฟังก์ชัน generate_episode()
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
Reinforcement Learning with Gymnasium ใน Python
คำแนะนำการฝึกหัด
- สร้าง episode โดยใช้ฟังก์ชัน
generate_episode() - อัปเดตผลตอบแทนและจำนวนครั้งของแต่ละคู่ state-action ภายใน episode
- คำนวณค่าประมาณ Q-values
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
Q = np.zeros((num_states, num_actions))
for i in range(100):
# Generate an episode
episode = ____
# Update the returns and their counts
for j, (state, action, reward) in ____:
returns_sum[(state, action)] += sum(____)
returns_count[(state, action)] += ____
# Update the Q-values for visited state-action pairs
nonzero_counts = ____
Q[nonzero_counts] = ____
render_policy(get_policy())