Kom igångKom igång gratis

Utvärdera konvergens i ett multi-armed bandit-problem

Att utvärdera hur väl olika strategier presterar och konvergerar i ett multi-armed bandit-problem är avgörande för att förstå deras effektivitet. Genom att analysera hur ofta varje arm väljs över tid kan vi följa inlärningsprocessen och bedöma strategins förmåga att identifiera och utnyttja den bästa armen. I den här övningen visualiserar du andelen val för varje arm över iterationerna för att bedöma konvergensen hos en epsilon-girig strategi.

Arrayen selected_arms, som visar vilken arm som valdes i varje iteration, har redan laddats in åt dig.

Den här övningen är en del av kursen

Reinforcement Learning med Gymnasium i Python

Visa kurs

Övningsinstruktioner

  • Initiera en array selections_percentage med nollor, med dimensioner som spårar varje bandits valandel över tid.
  • Beräkna selections_percentage över tid genom att ta den kumulativa summan av val för varje bandit över iterationerna och dela med iterationsnumret.
  • Plotta de kumulativa valandelarna för varje bandit för att visualisera hur ofta respektive bandit väljs över iterationerna.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

# 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}")
Redigera och kör kod