Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Initialiseer een array selections_percentage met nullen, met afmetingen om het selectiepercentage van elke bandit in de tijd bij te houden.
  • Bereken selections_percentage in 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}")
Code bewerken en uitvoeren