การแก้ปัญหา 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 = ____