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
Instrucciones del ejercicio
- Inicializa un array
selections_percentagecon ceros, con dimensiones que permitan seguir el porcentaje de selección de cada bandido a lo largo del tiempo. - Obtén
selections_percentageen 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}")