Évaluer la convergence dans un bandit manchot à plusieurs bras
Évaluer la performance et la convergence des stratégies dans un problème de bandit manchot à plusieurs bras est essentiel pour comprendre leur efficacité. En analysant la fréquence à laquelle chaque bras est choisi au fil du temps, on peut déduire le processus d'apprentissage et la capacité de la stratégie à repérer et exploiter le meilleur bras. Dans cet exercice, vous allez visualiser les pourcentages de sélection de chaque bras au fil des itérations afin d'évaluer la convergence d'une stratégie epsilon-gourmande.
Le tableau selected_arms, qui indique quel bras a été tiré à chaque itération, a été préchargé pour vous.
Cette activité fait partie du cours
Reinforcement Learning avec Gymnasium en Python
Instructions de l’exercice
- Initialisez un tableau
selections_percentagerempli de zéros, avec des dimensions permettant de suivre le pourcentage de sélection de chaque bandit dans le temps. - Obtenez
selections_percentageau fil du temps en calculant la somme cumulée des sélections pour chaque bandit à travers les itérations, 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 à laquelle chaque bandit est choisi au fil des itérations.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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}")