ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Inicialize um array selections_percentage com zeros, com dimensões para acompanhar o percentual de seleção de cada bandit ao longo do tempo.
  • Obtenha selections_percentage ao 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}")
Editar e executar o código