Ocena zbieżności w problemie wielorękiego bandyty
Ocena skuteczności i zbieżności strategii w problemie wielorękiego bandyty jest kluczowa dla zrozumienia ich działania. Analizując, jak często każde ramię jest wybierane w kolejnych iteracjach, można prześledzić proces uczenia się i zdolność strategii do identyfikowania oraz wykorzystywania najlepszego ramienia. W tym ćwiczeniu zwizualizujesz procentowe udziały wyboru każdego ramienia w kolejnych iteracjach, aby ocenić zbieżność strategii epsilon-zachłannej.
Tablica selected_arms, która pokazuje, które ramię zostało wybrane w każdej iteracji, jest już wczytana i gotowa do użycia.
To ćwiczenie jest częścią kursu
Uczenie przez wzmacnianie z Gymnasium w Pythonie
Instrukcje do ćwiczenia
- Zainicjalizuj tablicę
selections_percentagewypełnioną zerami, o wymiarach umożliwiających śledzenie procentowego udziału wyboru każdego bandyty w czasie. - Oblicz wartości
selections_percentagew czasie, wyznaczając skumulowaną sumę wyborów dla każdego bandyty w kolejnych iteracjach i dzieląc ją przez numer iteracji. - Narysuj wykres skumulowanych procentowych udziałów wyboru dla każdego bandyty, aby zwizualizować, jak często każdy z nich jest wybierany w kolejnych iteracjach.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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}")