IniziaInizia gratis

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

Visualizza il corso

Istruzioni dell'esercizio

  • Inizializza un array selections_percentage di zeri, con dimensioni adatte a tracciare nel tempo la percentuale di selezione di ciascun bandit.
  • Ottieni selections_percentage nel 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 pratico interattivo

Prova a risolvere questo esercizio completando il 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}")
Modifica ed esegui il codice