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

การประเมินการลู่เข้าในปัญหา Multi-Armed Bandit

การประเมินประสิทธิภาพและการลู่เข้าของกลยุทธ์ในปัญหา multi-armed bandit เป็นสิ่งสำคัญสำหรับการทำความเข้าใจว่ากลยุทธ์นั้นได้ผลดีเพียงใด การวิเคราะห์ว่าแต่ละแขนถูกเลือกบ่อยแค่ไหนในแต่ละช่วงเวลา ช่วยให้เห็นกระบวนการเรียนรู้และความสามารถของกลยุทธ์ในการระบุและใช้ประโยชน์จากแขนที่ดีที่สุด แบบฝึกหัดนี้จะให้แสดงภาพเปอร์เซ็นต์การเลือกของแต่ละแขนตามจำนวนรอบ เพื่อประเมินการลู่เข้าของกลยุทธ์ epsilon-greedy

อาร์เรย์ selected_arms ที่แสดงว่าแขนใดถูกดึงในแต่ละรอบได้ถูกโหลดไว้ให้แล้ว

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

Reinforcement Learning with Gymnasium ใน Python

ดูคอร์ส

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

  • สร้างอาร์เรย์ selections_percentage ที่มีค่าเริ่มต้นเป็นศูนย์ โดยกำหนดขนาดให้รองรับการติดตามเปอร์เซ็นต์การเลือกของแต่ละ bandit ตามเวลา
  • คำนวณ selections_percentage ตามเวลา โดยหาผลรวมสะสมของการเลือกแต่ละ bandit ในแต่ละรอบ แล้วหารด้วยจำนวนรอบ
  • พล็อตกราฟเปอร์เซ็นต์การเลือกสะสมของแต่ละ bandit เพื่อแสดงให้เห็นว่า bandit แต่ละตัวถูกเลือกบ่อยแค่ไหนตลอดการทำซ้ำ

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

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

# Initialize the selection percentages with zeros
selections_percentage = ____
for i in range(n_iterations):
    selections_percentage[i, selected_arms[i]] = 1
# Compute the cumulative selection percentages 
selections_percentage = np.____(____, axis=____) / np.arange(1, ____).reshape(-1, 1)
for arm in range(n_bandits):
  	# Plot the cumulative selection percentage for each arm
    plt.plot(____, label=f'Bandit #{arm+1}')
plt.xlabel('Iteration Number')
plt.ylabel('Percentage of Bandit Selections (%)')
plt.legend()
plt.show()
for i, prob in enumerate(true_bandit_probs, 1):
    print(f"Bandit #{i} -> {prob:.2f}")
แก้ไขและรันโค้ด