Оценка сходимости в задаче многорукого бандита
Оценка эффективности и сходимости стратегий в задаче многорукого бандита необходима для понимания того, насколько хорошо они работают. Анализируя, как часто выбирается каждый рычаг с течением времени, можно судить о процессе обучения и способности стратегии находить и использовать наилучший вариант. В этом упражнении вы визуализируете процентное соотношение выборов каждого рычага по итерациям, чтобы оценить сходимость стратегии эпсилон-жадного выбора.
Массив selected_arms, показывающий, какой рычаг был выбран на каждой итерации, уже загружен для вас.
Это упражнение является частью курса
Обучение с подкреплением с 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}")