Оцінювання збіжності у задачі про одночасні бандити
Оцінювання продуктивності та збіжності стратегій у задачі про одночасні бандити є критично важливим для розуміння їхньої ефективності. Аналізуючи, як часто з часом обирають кожен важіль, ми можемо зробити висновки про процес навчання та здатність стратегії знаходити й використовувати найкращий важіль. У цій вправі ви візуалізуєте відсоток вибору кожного важеля за ітераціями, щоб оцінити збіжність стратегії epsilon-greedy.
Масив selected_arms, який показує, який важіль було смикнуто на кожній ітерації, уже завантажено для вас.
Ця вправа є частиною курсу
Reinforcement Learning з Gymnasium у Python
Інструкції до вправи
- Ініціалізуйте масив
selections_percentage, заповнений нулями, з розмірами для відстеження відсотка вибору кожного бандита в часі. - Отримайте
selections_percentageу часі, обчисливши накопичену суму виборів для кожного бандита за ітераціями та поділивши на номер ітерації. - Побудуйте графік накопичених відсотків вибору для кожного бандита, щоб візуалізувати, як часто кожного бандита обирають упродовж ітерацій.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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}")