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

Решение задачи многорукого бандита

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

Переменные epsilon, min_epsilon и epsilon_decay уже заданы заранее. Функция epsilon_greedy() также импортирована.

Это упражнение является частью курса

Обучение с подкреплением с Gymnasium на Python

Посмотреть курс

Инструкции к упражнению

  • Используйте функцию create_multi_armed_bandit(), чтобы инициализировать задачу 10-рукого бандита. Функция вернёт true_bandit_probs, counts, values, rewards и selected_arms.
  • Выберите рычаг для нажатия с помощью функции epsilon_greedy().
  • Смоделируйте reward на основе истинных вероятностей бандита.
  • Уменьшайте значение epsilon так, чтобы оно не опускалось ниже значения min_epsilon.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Create a 10-armed bandit
true_bandit_probs, counts, values, rewards, selected_arms = ____

for i in range(n_iterations): 
  	# Select an arm
    arm = ____
    # Compute the received reward
    reward = ____
    rewards[i] = reward
    selected_arms[i] = arm
    counts[arm] += 1
    values[arm] += (reward - values[arm]) / counts[arm]
    # Update epsilon
    epsilon = ____
Редактировать и запускать код