CommencerCommencer gratuitement

Évaluer la convergence dans un bandit manchot multi-bras

Évaluer la performance et la convergence des stratégies dans un problème de bandit manchot multi-bras est essentiel pour comprendre leur efficacité. En analysant la fréquence à laquelle chaque bras est sélectionné au fil du temps, nous pouvons déduire le processus d’apprentissage et la capacité de la stratégie à identifier et exploiter le meilleur bras. Dans cet exercice, vous allez visualiser, au fil des itérations, le pourcentage de sélection de chaque bras afin d’évaluer la convergence d’une stratégie epsilon-greedy.

Le tableau selected_arms, qui indique quel bras a été tiré à chaque itération, a été préchargé pour vous.

Cet exercice fait partie du cours

Reinforcement Learning avec Gymnasium en Python

Afficher le cours

Instructions

  • Initialisez un tableau selections_percentage rempli de zéros, avec des dimensions permettant de suivre le pourcentage de sélection de chaque bandit au cours du temps.
  • Calculez selections_percentage au fil du temps en obtenant la somme cumulée des sélections pour chaque bandit à chaque itération, puis en divisant par le numéro d’itération.
  • Tracez les pourcentages de sélection cumulés pour chaque bandit afin de visualiser la fréquence de choix de chaque bandit au cours des itérations.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# 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}")
Modifier et exécuter le code