Bắt đầu ngayBắt đầu miễn phí

Đá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

Xem khóa học

Hướng dẫn bài tập

  • Khởi tạo một mảng selections_percentage toà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_percentage theo 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}")
Chỉnh sửa và Chạy Mã