Решение задачи многорукого бандита
В этом упражнении вы реализуете стратегию эпсилон-жадного выбора для решения задачи 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 = ____