Convergentie beoordelen in een multi-armed bandit
Het evalueren van de prestaties en convergentie van strategieën in een multi-armed bandit-probleem is cruciaal om hun effectiviteit te begrijpen. Door te analyseren hoe vaak elke arm in de tijd wordt geselecteerd, kun je het leerproces en het vermogen van de strategie afleiden om de beste arm te vinden en te benutten. In deze oefening visualiseer je de selectietarieven van elke arm over iteraties om de convergentie van een epsilon-greedystrategie te beoordelen.
De array selected_arms, die laat zien welke arm in elke iteratie is getrokken, is alvast voor je ingeladen.
Deze oefening maakt deel uit van de cursus
Reinforcement Learning met Gymnasium in Python
Oefeninstructies
- Initialiseer een array
selections_percentagemet nullen, met afmetingen om het selectiepercentage van elke bandit in de tijd bij te houden. - Bereken
selections_percentagein de tijd door de cumulatieve som van selecties voor elke bandit over iteraties te nemen en te delen door het iteratienummer. - Plot de cumulatieve selectiepercentages voor elke bandit om te visualiseren hoe vaak elke bandit in de loop van de iteraties wordt gekozen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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}")