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
Instrucțiuni pentru exercițiu
- Inițializează un array
selections_percentagecu 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}")