НачатьНачать бесплатно

Оценка сходимости в задаче многорукого бандита

Оценка эффективности и сходимости стратегий в задаче многорукого бандита необходима для понимания того, насколько хорошо они работают. Анализируя, как часто выбирается каждый рычаг с течением времени, можно судить о процессе обучения и способности стратегии находить и использовать наилучший вариант. В этом упражнении вы визуализируете процентное соотношение выборов каждого рычага по итерациям, чтобы оценить сходимость стратегии эпсилон-жадного выбора.

Массив 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}")
Редактировать и запускать код