0Pricing
Learn AI with Python · Lektion

Policy-Gradient-Verfahren: REINFORCE

Policy-Gradient-Theorem, REINFORCE-Algorithmus, Abziehen einer Baseline, Varianzreduktion.

Policy-Gradient-Verfahren: REINFORCE ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Wertbasiertes gegenüber policybasiertem RL

Einige RL-Verfahren lernen den Wert von Aktionen und handeln anschließend gierig. Policy-Gradient-Verfahren lernen stattdessen die Policy direkt: eine Funktion, die Aktionswahrscheinlichkeiten ausgibt. Dadurch lassen sich kontinuierliche Aktionen und stochastische Policies auf natürliche Weise verarbeiten.

Die Policy pi(a|s)

Eine parametrisierte Policy pi(a|s, theta) bildet einen Zustand auf eine Wahrscheinlichkeitsverteilung über Aktionen ab. Ihre Parameter theta werden durch ein neuronales Netzwerk dargestellt. Beim Training wird theta so angepasst, dass Aktionen mit höherer Belohnung bevorzugt werden.

class Policy(nn.Module):
    def __init__(self, obs_dim, n_actions):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(obs_dim, 128), nn.ReLU(),
            nn.Linear(128, n_actions)
        )
    def forward(self, s):
        return torch.softmax(self.net(s), dim=-1)

Aktionen sampeln

Da die Policy eine Verteilung ist, sampeln Sie eine Aktion, anstatt stets das Maximum auszuwählen. Das Sampeln ermöglicht Exploration und macht die Policy stochastisch.

probs = policy(state)
dist = torch.distributions.Categorical(probs)
action = dist.sample()
log_prob = dist.log_prob(action)

Eine Trajektorie durchlaufen

Eine Episode (Trajektorie) ist die Folge von Zuständen, Aktionen und Belohnungen vom Anfang bis zum Ende. Sie sammeln eine vollständige Trajektorie, indem Sie in der Umgebung handeln, bis sie terminiert.

states, actions, rewards, log_probs = [], [], [], []
state, _ = env.reset()
done = False
while not done:
    probs = policy(torch.tensor(state).float())
    dist = torch.distributions.Categorical(probs)
    a = dist.sample()
    state, r, term, trunc, _ = env.step(a.item())
    rewards.append(r); log_probs.append(dist.log_prob(a))
    done = term or trunc

Der diskontierte Return G_t

Der Return G_t ist die gesamte zukünftige Belohnung ab dem Zeitpunkt t, diskontiert mit gamma, sodass näher liegende Belohnungen stärker zählen. Er zeigt, wie gut sich die ab Schritt t ausgeführten Aktionen letztlich ausgewirkt haben.

def returns(rewards, gamma=0.99):
    G, out = 0, []
    for r in reversed(rewards):
        G = r + gamma * G
        out.insert(0, G)
    return torch.tensor(out)

Das REINFORCE-Ziel

REINFORCE führt einen Gradientenaufstieg auf dem erwarteten Return durch. Anschaulich bedeutet das: Die Wahrscheinlichkeit von Aktionen, die zu einem hohen Return geführt haben, wird erhöht, während sie für Aktionen mit niedrigem Return verringert wird. Jede Aktion wird mit ihrem G_t gewichtet.

Der Policy Gradient

Der Loss ist -sum(log_prob * G_t). Das negative Vorzeichen wandelt den Gradientenaufstieg in einen Gradientenabstieg um, sodass der Optimierer den Return maximiert. Bei Aktionen mit hohem Return wird ihre Log-Wahrscheinlichkeit erhöht.

G = returns(rewards)
loss = -torch.sum(torch.stack(log_probs) * G)

Die Policy aktualisieren

Führen Sie wie gewohnt Backpropagation durch und machen Sie anschließend einen Optimierungsschritt. Ein Update verwendet eine vollständige Trajektorie, die Sie danach verwerfen (REINFORCE ist on-policy: Es werden nur Daten der aktuellen Policy verwendet).

optimizer.zero_grad()
loss.backward()
optimizer.step()

Das Problem der hohen Varianz

Vanilla REINFORCE ist bekanntermaßen instabil und weist eine hohe Varianz auf: Die Returns unterscheiden sich stark zwischen den Episoden, sodass die Gradienten-Schätzungen verrauscht sind und das Lernen langsam und unregelmäßig verläuft.

Baseline zur Varianzreduktion

Wenn Sie von G_t eine Baseline (z. B. den durchschnittlichen Return) abziehen, reduziert sich die Varianz, ohne den Gradienten zu verzerren. Aktionen werden dafür belohnt, dass sie besser als erwartet waren, nicht nur für einen positiven Return.

baseline = G.mean()
advantage = G - baseline
loss = -torch.sum(torch.stack(log_probs) * advantage)

Warum REINFORCE wichtig ist

REINFORCE bildet die Grundlage aller Policy-Gradient-Verfahren. Seine Schwächen – hohe Varianz und eine geringe Stichprobeneffizienz – motivieren die Actor-Critic- und PPO-Verfahren, die Sie als Nächstes kennenlernen.

Kurzer Test

Testen Sie Ihr Verständnis des Policy Gradient.

Rückblick: REINFORCE

Sie haben gelernt, eine Policy pi(a|s,theta) zu parametrisieren, Trajektorien auszuführen, den diskontierten Return G_t zu berechnen und mit dem Loss -sum(log_prob * G_t) einen Gradientenaufstieg durchzuführen. Sie haben die hohe Varianz von REINFORCE kennengelernt und gesehen, wie eine Baseline sie reduziert.

Häufig gestellte Fragen

Ist die Lektion „Policy-Gradient-Verfahren: REINFORCE“ kostenlos?

Ja — der vollständige Text von „Policy-Gradient-Verfahren: REINFORCE“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Policy-Gradient-Verfahren: REINFORCE“?

Policy-Gradient-Theorem, REINFORCE-Algorithmus, Abziehen einer Baseline, Varianzreduktion. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Learn AI with Python zu starten?

Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Policy-Gradient-Verfahren: REINFORCE“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?

Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Policy-Gradient-Verfahren: REINFORCE
  2. Actor-Critic-Verfahren (A2C)
  3. Proximal Policy Optimization (PPO)
  4. Benutzerdefinierte Gymnasium-Umgebungen
← Zurück zu Learn AI with Python