ÎncepețiÎncepe gratuit

Evaluarea convergenței într-o problemă cu mai mulți bandiți

Evaluarea performanței și a convergenței strategiilor într-o problemă cu mai mulți bandiți (multi-armed bandit) este esențială pentru a înțelege cât de eficiente sunt acestea. Analizând cât de frecvent este ales fiecare braț de-a lungul timpului, putem deduce procesul de învățare și capacitatea strategiei de a identifica și exploata cel mai bun braț. În acest exercițiu vei vizualiza procentele de selecție ale fiecărui braț de-a lungul iterațiilor, pentru a evalua convergența unei strategii epsilon-greedy.

Arrayul selected_arms, care indică ce braț a fost ales la fiecare iterație, a fost preîncărcat pentru tine.

Acest exercițiu face parte din cursul

Reinforcement Learning cu Gymnasium în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Inițializează un array selections_percentage cu zerouri, cu dimensiunile necesare pentru a urmări procentul de selecție al fiecărui bandit în timp.
  • Calculează selections_percentage în timp, obținând suma cumulativă a selecțiilor pentru fiecare bandit de-a lungul iterațiilor și împărțind la numărul iterației curente.
  • Reprezintă grafic procentele cumulative de selecție pentru fiecare bandit, pentru a vizualiza cât de des este ales fiecare de-a lungul iterațiilor.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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}")
Editează și rulează codul