ComenzarEmpieza gratis

Evaluar la convergencia en un problema de multi-armed bandit

Evaluar el rendimiento y la convergencia de las estrategias en un problema de multi-armed bandit es clave para entender su eficacia. Analizando con qué frecuencia se elige cada brazo a lo largo del tiempo, podemos inferir el proceso de aprendizaje y la capacidad de la estrategia para identificar y explotar el mejor brazo. En este ejercicio vas a visualizar los porcentajes de selección de cada brazo a lo largo de las iteraciones para evaluar la convergencia de una estrategia epsilon-greedy.

El array selected_arms, que muestra qué brazo se ha tirado en cada iteración, ya está precargado para ti.

Este ejercicio forma parte del curso

Reinforcement Learning con Gymnasium en Python

Ver curso

Instrucciones del ejercicio

  • Inicializa un array selections_percentage con ceros, con dimensiones que permitan seguir el porcentaje de selección de cada bandido a lo largo del tiempo.
  • Obtén selections_percentage en el tiempo calculando la suma acumulada de selecciones para cada bandido a lo largo de las iteraciones y dividiéndola por el número de iteración.
  • Representa los porcentajes acumulados de selección de cada bandido para visualizar con qué frecuencia se elige cada uno a lo largo de las iteraciones.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# 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}")
Editar y ejecutar código