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
Pokyny k cvičení
- Inicializuj pole
selections_percentagenulami 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_percentagev 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}")