LoslegenKostenlos loslegen

Training des REINFORCE Algorithmus

Du bist bereit, deinen Lunar Lander mit REINFORCE zu trainieren! Alles, was du brauchst, ist die Implementierung der REINFORCE Trainingsschleife, einschließlich der REINFORCE Verlustberechnung.

Da sich die Schritte zur Verlustberechnung sowohl auf die innere als auch auf die äußere Schleife erstrecken, wirst du dieses Mal keine calculate_loss() Funktion verwenden.

Wenn die Episode abgeschlossen ist, kannst du diese beiden Mengen verwenden, um den Verlust zu berechnen.

Als Referenz ist dies der Ausdruck für die Verlustfunktion REINFORCE:

Du verwendest wieder die Funktion describe_episode(), um auszudrucken, wie dein Agent bei jeder Episode abschneidet.

Diese Übung ist Teil des Kurses

Deep Reinforcement Learning in Python

Kurs anzeigen

Anleitung zur Übung

  • Füge die logarithmische Wahrscheinlichkeit der ausgewählten Aktion zu den logarithmischen Wahrscheinlichkeiten der Episode hinzu.
  • Erhöhe den Episodenertrag um die abgezinste Belohnung des aktuellen Schritts.
  • Berechne den REINFORCE Episodenverlust.

Interaktive Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

for episode in range(50):
    state, info = env.reset()
    done = False
    episode_reward = 0
    step = 0
    episode_log_probs = torch.tensor([])
    R = 0
    while not done:
        step += 1
        action, log_prob = select_action(policy_network, state)                
        next_state, reward, terminated, truncated, _ = env.step(action)
        done = terminated or truncated
        episode_reward += reward
        # Append to the episode action log probabilities
        episode_log_probs = torch.cat((____, ____))
        # Increment the episode return
        R += (____ ** step) * ____
        state = next_state
    # Calculate the episode loss
    loss = ____ * ____.sum()
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    describe_episode(episode, reward, episode_reward, step)
Code bearbeiten und ausführen