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

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