Avaliando a convergência em um problema de multi-armed bandit
Avaliar o desempenho e a convergência de estratégias em um problema de multi-armed bandit é essencial para entender sua eficácia. Ao analisar com que frequência cada braço é selecionado ao longo do tempo, podemos inferir o processo de aprendizado e a capacidade da estratégia de identificar e explorar o melhor braço. Neste exercício, você vai visualizar os percentuais de seleção de cada braço ao longo das iterações para avaliar a convergência de uma estratégia epsilon-greedy.
O array selected_arms, que mostra qual braço foi puxado em cada iteração, já foi carregado para você.
Este exercício faz parte do curso
Reinforcement Learning com Gymnasium em Python
Instruções do exercício
- Inicialize um array
selections_percentagecom zeros, com dimensões para acompanhar o percentual de seleção de cada bandit ao longo do tempo. - Obtenha
selections_percentageao longo do tempo calculando a soma cumulativa das seleções de cada bandit por iteração e dividindo pelo número da iteração. - Plote os percentuais cumulativos de seleção para cada bandit para visualizar com que frequência cada bandit é escolhido ao longo das iterações.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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}")