Đánh giá hội tụ trong bài toán multi-armed bandit
Đánh giá hiệu suất và mức độ hội tụ của các chiến lược trong bài toán multi-armed bandit là chìa khóa để hiểu hiệu quả của chúng. Bằng cách phân tích tần suất mỗi tay gạt được chọn theo thời gian, bạn có thể suy luận quá trình học và khả năng của chiến lược trong việc nhận diện và khai thác tay gạt tốt nhất. Bài tập này yêu cầu trực quan hóa tỷ lệ lựa chọn của từng tay gạt qua các vòng lặp để đánh giá sự hội tụ của chiến lược epsilon-greedy.
Mảng selected_arms cho biết tay gạt nào được kéo ở mỗi vòng lặp đã được nạp sẵn cho bạn.
Bài tập này là một phần của khóa học
Reinforcement Learning với Gymnasium trong Python
Hướng dẫn bài tập
- Khởi tạo một mảng
selections_percentagetoàn số 0, với kích thước để theo dõi tỷ lệ lựa chọn của từng bandit theo thời gian. - Tính
selections_percentagetheo thời gian bằng cách lấy tổng tích lũy số lần chọn cho mỗi bandit qua các vòng lặp và chia cho số vòng lặp tương ứng. - Vẽ biểu đồ tỷ lệ lựa chọn tích lũy cho từng bandit để trực quan hóa tần suất mỗi bandit được chọn qua các vòng lặp.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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}")