Začněte nyníZačněte zdarma

Hodnocení konvergence v problému multi-armed bandit

Hodnocení výkonu a konvergence strategií v problému multi-armed bandit je klíčové pro pochopení jejich účinnosti. Analýzou toho, jak často je každé rameno vybíráno v průběhu času, můžeme sledovat proces učení a schopnost strategie identifikovat a využívat nejlepší rameno. V tomto cvičení vizualizuješ procentuální zastoupení výběrů jednotlivých ramen v průběhu iterací a posoudíš, jak dobře epsilon-greedy strategie konverguje.

Pole selected_arms, které zaznamenává, které rameno bylo v každé iteraci vytaženo, je už pro tebe načteno.

Toto cvičení je součástí kurzu

Reinforcement Learning with Gymnasium in Python

Zobrazit kurz

Pokyny k cvičení

  • Inicializuj pole selections_percentage nulami s rozměry potřebnými pro sledování procentuálního zastoupení výběrů každého bandity v čase.
  • Vypočítej selections_percentage v průběhu času tak, že pro každého banditu spočítáš kumulativní součet výběrů přes iterace a vydělíš ho číslem příslušné iterace.
  • Vykresli kumulativní procentuální zastoupení výběrů pro každého banditu, abys vizualizoval/a, jak často je každý bandit vybírán v průběhu iterací.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# 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}")
Upravit a spustit kód