Konvergenz in einem Multi-Armed-Bandit beurteilen
Die Leistung und Konvergenz von Strategien im Multi-Armed-Bandit-Problem zu bewerten, ist entscheidend, um ihre Wirksamkeit zu verstehen. Indem wir analysieren, wie häufig jeder Arm im Zeitverlauf ausgewählt wird, können wir auf den Lernprozess und die Fähigkeit der Strategie schließen, den besten Arm zu erkennen und auszunutzen. In dieser Übung visualisierst du die Auswahlprozente der einzelnen Arme über mehrere Iterationen, um die Konvergenz einer epsilon-gierigen Strategie zu beurteilen.
Das Array selected_arms, das zeigt, welcher Arm in jeder Iteration gezogen wurde, wurde bereits für dich geladen.
Diese Übung ist Teil des Kurses
Reinforcement Learning mit Gymnasium in Python
Anleitung zur Übung
- Initialisiere ein Array
selections_percentagemit Nullen, mit Dimensionen, die den Auswahlprozentsatz jedes Banditen im Zeitverlauf abbilden. - Ermittle
selections_percentageüber die Zeit, indem du die kumulative Summe der Auswahlen für jeden Banditen über die Iterationen berechnest und durch die Iterationsnummer teilst. - Zeichne die kumulativen Auswahlprozente für jeden Banditen, um zu visualisieren, wie oft jeder Bandit über die Iterationen gewählt wird.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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}")