LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Initialisiere ein Array selections_percentage mit 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}")
Code bearbeiten und ausführen