Every-Visit Monte Carlo implementieren
Die Every-Visit-Monte-Carlo-Methode unterscheidet sich von der First-Visit-Variante dadurch, dass Werte jedes Mal aktualisiert werden, wenn ein Zustands-Aktions-Paar auftritt, und nicht nur beim ersten Auftreten. Dieser Ansatz liefert eine umfassende Bewertung der Policy, weil er alle verfügbaren Informationen aus den Episoden nutzt. Gleichzeitig kann er jedoch mehr Varianz in die Wertschätzungen bringen, da alle Stichproben einfließen – unabhängig davon, wann sie in der Episode auftreten. Deine Aufgabe ist es, die Implementierung der Funktion every_visit_mc() zu vervollständigen, die die Aktionswertfunktion Q über num_episodes Episoden schätzt.
Die Wörterbücher returns_sum und returns_count mit Zustands-Aktions-Paaren als Schlüsseln wurden bereits initialisiert und zusammen mit der Funktion generate_episode() für dich geladen.
Diese Übung ist Teil des Kurses
Reinforcement Learning mit Gymnasium in Python
Anleitung zur Übung
- Erzeuge eine Episode mit der Funktion
generate_episode(). - Aktualisiere die Returns und deren Zähler für jedes Zustands-Aktions-Paar innerhalb einer Episode.
- Berechne die geschätzten Q-Werte.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
Q = np.zeros((num_states, num_actions))
for i in range(100):
# Generate an episode
episode = ____
# Update the returns and their counts
for j, (state, action, reward) in ____:
returns_sum[(state, action)] += sum(____)
returns_count[(state, action)] += ____
# Update the Q-values for visited state-action pairs
nonzero_counts = ____
Q[nonzero_counts] = ____
render_policy(get_policy())