Valutare la convergenza in un multi-armed bandit
Valutare le prestazioni e la convergenza delle strategie in un problema di multi-armed bandit è fondamentale per capirne l’efficacia. Analizzando con quale frequenza ogni braccio viene selezionato nel tempo, possiamo dedurre il processo di apprendimento e la capacità della strategia di identificare e sfruttare il braccio migliore. In questo esercizio visualizzerai le percentuali di selezione di ciascun braccio nel corso delle iterazioni per valutare la convergenza di una strategia epsilon-greedy.
L’array selected_arms, che indica quale braccio è stato tirato a ogni iterazione, è già stato caricato per te.
Questo esercizio fa parte del corso
Reinforcement Learning con Gymnasium in Python
Istruzioni dell'esercizio
- Inizializza un array
selections_percentagedi zeri, con dimensioni adatte a tracciare nel tempo la percentuale di selezione di ciascun bandit. - Ottieni
selections_percentagenel tempo calcolando la somma cumulativa delle selezioni per ciascun bandit sulle iterazioni e dividendo per il numero di iterazione. - Traccia le percentuali cumulative di selezione per ciascun bandit, per visualizzare quanto spesso ciascun bandit viene scelto nel corso delle iterazioni.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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}")