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

การแก้ปัญหา multi-armed bandit

แบบฝึกหัดนี้จะนำกลยุทธ์ epsilon-greedy มาใช้แก้ปัญหา 10-armed bandit โดย epsilon จะค่อย ๆ ลดลงตามเวลาเพื่อเปลี่ยนจากการสำรวจ (exploration) ไปสู่การใช้ประโยชน์ (exploitation)

epsilon, min_epsilon และ epsilon_decay ถูกกำหนดไว้ให้แล้ว รวมถึงฟังก์ชัน epsilon_greedy() ที่ได้นำเข้ามาให้เรียบร้อยแล้ว

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

Reinforcement Learning with Gymnasium ใน Python

ดูคอร์ส

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

  • ใช้ฟังก์ชัน create_multi_armed_bandit() เพื่อเริ่มต้นปัญหา 10-armed bandit ซึ่งจะคืนค่า true_bandit_probs, counts, values, rewards และ selected_arms
  • เลือกแขนที่จะดึงโดยใช้ฟังก์ชัน epsilon_greedy()
  • จำลอง reward จากความน่าจะเป็นที่แท้จริงของ bandit
  • ลดค่า epsilon ลงตามเวลา โดยให้แน่ใจว่าค่าไม่ต่ำกว่า min_epsilon

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

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

# Create a 10-armed bandit
true_bandit_probs, counts, values, rewards, selected_arms = ____

for i in range(n_iterations): 
  	# Select an arm
    arm = ____
    # Compute the received reward
    reward = ____
    rewards[i] = reward
    selected_arms[i] = arm
    counts[arm] += 1
    values[arm] += (reward - values[arm]) / counts[arm]
    # Update epsilon
    epsilon = ____
แก้ไขและรันโค้ด