Создание многорукого бандита
Задача многорукого бандита — классический пример из области обучения с подкреплением. Она описывает ситуацию, в которой агент должен выбирать между несколькими действиями (или «рычагами»), не зная заранее ожидаемого вознаграждения за каждое из них. Со временем агент учится определять, какой рычаг даёт наибольшее вознаграждение, исследуя все доступные варианты. В этом упражнении вы создадите базовую структуру для моделирования задачи многорукого бандита.
Библиотека numpy уже импортирована как np.
Это упражнение является частью курса
Обучение с подкреплением с Gymnasium на Python
Инструкции к упражнению
- Сгенерируйте массив
true_bandit_probsсо случайными вероятностями, отражающими истинную долю успеха для каждого бандита. - Инициализируйте два массива,
countsиvalues, нулями:countsотслеживает, сколько раз был выбран каждый бандит, аvaluesхранит оценку вероятности выигрыша для каждого из них. - Создайте массивы
rewardsиselected_armsдля хранения полученных вознаграждений и выбранных рычагов на каждой итерации.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
def create_multi_armed_bandit(n_bandits):
# Generate the true bandits probabilities
true_bandit_probs = ____
# Create arrays that store the count and value for each bandit
counts = ____
values = ____
# Create arrays that store the rewards and selected arms each episode
rewards = ____
selected_arms = ____
return true_bandit_probs, counts, values, rewards, selected_arms