การประเมินการลู่เข้าในปัญหา 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}")