Zum Inhalt springen
coden

Policy Gradient und PPO: die Strategie direkt lernen

Eine stochastische Strategie als Netz, REINFORCE und das Policy-Gradient-Theorem, Baseline und Vorteil, Actor-Critic, PPO mit Clipping von Grund auf geschrieben am Pendel auf dem Wagen, was ohne Clipping passiert, und wie PPO Sprachmodelle feinabgestimmt hat.

12 Minuten Matěj Žalmánek 2026-10-16

Serie KI-Grundlagen Teil 49 von 52
  1. Landkarte der künstlichen Intelligenz: was was ist und wie alles zusammenpasst
  2. Eine kurze Geschichte der künstlichen Intelligenz: von Turing bis zu Sprachmodellen
  3. Daten, Modell, Training, Inferenz: die Grundbegriffe an einem einzigen Beispiel
  4. Mathematische Notation lesen: Symbole, Indizes, Summen und Quantoren
  5. Mengen und Relationen: der Baukasten, aus dem Definitionen in der KI bestehen
  6. Funktionen und Abbildungen: warum jedes KI-Modell eine Funktion ist
  7. Logik und Beweise: die Regeln, nach denen KI schließt
  8. Graphen und Bäume: die Struktur, auf der Suche und neuronale Netze stehen
  9. Lineare Algebra für maschinelles Lernen: Vektoren, Matrizen und warum KI vor allem multipliziert
  10. Ableitungen, Gradient und Kettenregel: wie ein Modell herausfindet, in welche Richtung es lernen soll
  11. Gradientenabstieg: wie ein Modell lernt
  12. Was ist Wahrscheinlichkeit: vom Würfelwurf zu den Kolmogorow-Axiomen
  13. Bedingte Wahrscheinlichkeit und der Satz von Bayes: wie du deine Einschätzung änderst, wenn du etwas Neues erfährst
  14. Zufallsvariable und Verteilungsfunktion: eine Funktion, die alles über eine Verteilung verrät
  15. Dichtefunktion und Wahrscheinlichkeitsfunktion: warum eine stetige Zufallsvariable in einem Punkt die Wahrscheinlichkeit null hat
  16. Erwartungswert, Varianz und Kovarianz: wo eine Verteilung liegt, wie breit sie ist und was womit zusammenhängt
  17. Überblick über Wahrscheinlichkeitsverteilungen: Bernoulli-, Binomial-, Poisson-, Gleich-, Normal- und Exponentialverteilung
  18. Gesetz der großen Zahlen und zentraler Grenzwertsatz: Warum sich Durchschnitte so vorhersagbar verhalten
  19. Statistik und Parameterschätzung: Maximum Likelihood, MAP und Konfidenzintervalle
  20. Informationstheorie: Entropie, Kreuzentropie und KL-Divergenz — woher Verlustfunktionen kommen
  21. Zustandsraumsuche: BFS, DFS, UCS und A* mit Animationen
  22. Spiele und Gegner: Minimax, Alpha-Beta-Suche und Monte Carlo Tree Search
  23. Constraint Satisfaction: Backtracking, Constraint-Propagierung und AC-3 an Sudoku und einer Karte tschechischer Regionen
  24. Logik und wissensbasierte Systeme: Vorwärts- und Rückwärtsverkettung, Resolution und Expertensysteme
  25. Planung: STRIPS, die Blockwelt, Heuristiken aus Relaxierung und Planung in KI-Agenten
  26. Lokale Suche und simulierte Abkühlung: ein Handlungsreisender durch die tschechischen Regionalhauptstädte
  27. Genetische Algorithmen: Population, Kreuzung, Mutation und Selektion am Rucksack für die Wanderung
  28. Evolutionsstrategien und genetische Programmierung: von der 1/5-Erfolgsregel zum Keplerschen Gesetz
  29. Ameisenkolonieoptimierung: wie eine Pheromonspur einen kurzen Weg findet
  30. Partikelschwarmoptimierung: Trägheit, eigene Erfahrung und die Erfahrung des Schwarms
  31. Neuroevolution: Evolution der Gewichte und der Gestalt neuronaler Netze und der Algorithmus NEAT
  32. Fuzzy-Mengen und Zugehörigkeitsfunktionen: wie man „etwas warm“ aufschreibt
  33. Fuzzy-Logik und Wahrscheinlichkeit: warum „etwas warm“ nicht „wahrscheinlich warm“ bedeutet
  34. Fuzzy-Logik: t-Normen, Implikationen und WENN–DANN-Regeln
  35. Fuzzy-Regelung: Mamdani und Sugeno vom Ventilator bis zum Pendel auf dem Wagen
  36. Fuzzy-Clustering: der Algorithmus fuzzy c-means und Punkte zwischen den Clustern
  37. Neuro-Fuzzy-Systeme (ANFIS): Fuzzy-Regeln, die aus Daten lernen
  38. Markow-Ketten: Übergangsmatrix, stationäre Verteilung und PageRank
  39. Hidden-Markov-Modelle: der Viterbi-Algorithmus und das unehrliche Kasino
  40. Bayessche Netze: warum das Gras nass ist und was das für den Rasensprenger bedeutet
  41. Der Kalman-Filter: wie man aus ungenauen Messungen schätzt, wo ein Auto ist und wie schnell es fährt
  42. Arten des maschinellen Lernens: überwacht, unüberwacht, halbüberwacht und mehr
  43. Prompts, Kontext und RAG: wie man einem Modell die richtigen Informationen gibt
  44. Variational Autoencoder (VAE): neue Bilder aus einem stetigen latenten Raum
  45. Generative Adversarial Networks (GAN): der Fälscher gegen den Detektiv
  46. Diffusionsmodelle: wie aus reinem Rauschen ein Bild wird
  47. Markow-Entscheidungsprozesse: Zustände, Aktionen, Belohnungen und Bellman-Gleichungen
  48. Q-Learning und DQN: den Wert von Aktionen lernen, von der Tabelle bis zum neuronalen Netz
  49. Policy Gradient und PPO: die Strategie direkt lernen
  50. Wie ein KI-Agent funktioniert: ein Sprachmodell in einer Schleife mit Werkzeugen
  51. Programmieren mit KI-Agenten: Auftrag, Tests und Kontrolle
  52. Bewertung und Sicherheit von KI-Systemen: wie man misst und wie man überwacht

Der ganze Lehrplan der Serie 52 von 83 Themen fertig

Was du mitnimmst
  • Wie eine Strategie direkt aus Ergebnissen gelernt wird, ohne Wertetabelle.
  • Warum es hilft, eine Baseline abzuziehen, und was der Vorteil ist.
  • Warum das Clipping in PPO so wichtig ist und wie es mit RLHF zusammenhängt.

Vorher gut zu wissen: Q-Learning und DQN: den Wert von Aktionen lernen, von der Tabelle bis zum neuronalen Netz, Markow-Entscheidungsprozesse: Zustände, Aktionen, Belohnungen und Bellman-Gleichungen

DQN aus dem letzten Teil lernt, wie gut jede Aktion ist, und die Strategie ergibt sich daraus erst indirekt: Wähle die Aktion mit dem größten Wert. Die zweite große Familie von Methoden geht den direkten Weg: Das Netz bekommt den Zustand und gibt Wahrscheinlichkeiten der Aktionen zurück, und wir verschieben diese Wahrscheinlichkeiten so, dass gute Aktionen häufiger werden. Aus dieser Familie stammt PPO — der Algorithmus, der Robotern das Laufen beibrachte, Profis im Spiel Dota 2 schlug und hinter dem Feintuning von ChatGPT stand. In diesem Teil schreiben wir ihn von Grund auf und vergleichen ihn mit einfacheren Vorgängern.

Er baut auf den Teilen Q-Learning und DQN, Markow-Entscheidungsprozesse und Softmax auf.

1. Direkt die Strategie lernen

Definition — parametrisierte Strategie

Sei (S, A, P, R, γ) ein MDP (Bezeichnungen aus dem Teil Markow-Entscheidungsprozesse) mit einer endlichen Menge von Aktionen A und einer Anfangsverteilung p(s0) auf S, und seien θ ∈ ℝm Parameter. Eine parametrisierte (stochastische) Strategie ist eine Familie von Strategien (πθ)θ ∈ ℝm, wobei für jedes θ und jedes s ∈ S πθ(· | s) eine Wahrscheinlichkeitsverteilung auf A und πθ(a | s) eine differenzierbare Funktion von θ ist. Für endliches A nimmt man ein Netz fθ : S → ℝ|A| und Softmax seiner Ausgaben:

πθ(a | s) = efθ(s)a/∑b ∈ A efθ(s)b;

bei kontinuierlichen Aktionen gibt das Netz etwa Mittelwert und Varianz einer Normalverteilung zurück. Das Ziel ist der erwartete Ertrag als Funktion der Parameter

J : ℝm → ℝ,   J(θ) = Eπθ[G0],

und gesucht ist θ mit möglichst großem J(θ) per Gradientenaufstieg θ ← θ + α ∇J(θ) mit Lernrate α > 0 (∇ bezeichnet den Gradienten nach θ).

Einfach gesagt

DQN führt eine Tabelle „wie viele Punkte für welchen Zug“ und spielt den Zug mit den meisten Punkten. Eine Strategie sagt stattdessen direkt: „In dieser Lage schieb mit 70 % nach rechts, mit 30 % nach links.“ Die Vorteile: Es funktioniert auch mit kontinuierlichen Aktionen (mit welcher Kraft, in welchem Winkel), der Zufall ist eingebaut, sodass der Agent von selbst ausprobiert, und eine kleine Änderung der Parameter bedeutet eine kleine Änderung des Verhaltens.

Beispiel — der Ertrag eines Versuchs am Pendel auf dem Wagen

Die Belohnung ist +1 für jeden Schritt und der Diskontfaktor γ = 0,99. Bleiben bis zum Ende der Episode T − t Schritte, ist der Ertrag eine geometrische Reihe:

Gt = 1 + γ + γ² + … + γT−t−1 = 1 − γT−t/1 − γ.

Am Anfang einer Episode, die ganze 500 Schritte durchhält: G0 = 1 − 0,99500/0,01 = 99,34. Zwanzig Schritte vor dem Sturz: G = 1 − 0,9920/0,01 = 18,21. Der Schritt direkt vor dem Sturz: G = 1. Der Ertrag ist also immer positiv und übersteigt nie 1/1 − γ = 100 — das wird im Abschnitt über die Baseline nützlich.

2. REINFORCE: verstärke, was geklappt hat

Definition — Policy-Gradient-Theorem und REINFORCE

Policy-Gradient-Theorem. Sei (S, A, P, R, γ) ein MDP mit endlichen S und A und γ ∈ [0, 1], in dem jede Episode s0, a0, r1, s1, …, sT spätestens nach Tmax Schritten endet (T ≤ Tmax), und sei πθ eine parametrisierte Strategie mit πθ(a | s) > 0 für alle s, a, θ. Dann gilt

∇J(θ) = Eπθ[ ∑t=0T−1 γt ∇ log πθ(at | st) · Gt ],   Gt = ∑k=tT−1 γk−t rk+1.

Für γ = 1 verschwindet der Faktor γt, und wir erhalten die Form in der Zerlegung unten. Praktische Implementierungen (auch unsere) lassen ihn auch für γ < 1 weg; dann ist das Ergebnis keine erwartungstreue Schätzung von ∇J(θ) mehr (im Allgemeinen nicht einmal der Gradient irgendeiner Funktion; Chris Nota und Philip Thomas, 2020), weil spätere Schritte der Episode ein größeres Gewicht bekommen, als ihnen laut Satz zusteht — in der Praxis funktioniert es trotzdem gut.

REINFORCE (Ronald Williams, 1992) ist der Algorithmus:

  1. wähle ein anfängliches θ ∈ ℝm (zufällige Gewichte des Netzes) und eine Lernrate α > 0;
  2. spiele mit der Strategie πθ Episoden (bei uns zusammen mindestens 2 000 Schritte);
  3. berechne in jeder Episode von hinten GT = 0 und Gt = rt+1 + γ Gt+1 für t = T − 1, …, 0;
  4. berechne die Gradientenschätzung ĝ = Mittel der Werte ∇ log πθ(at | st) · Gt über alle gespielten Schritte;
  5. θ ← θ + α ĝ, verwirf die Daten und fahre mit Schritt 2 fort, bis das Budget an Schritten in der Umgebung aufgebraucht ist.

Für Softmax π = softmax(z) mit den Ausgaben des Netzes z ∈ ℝ|A| ist der Gradient nach z gleich ∇z log πa = 1a − π, wobei 1a der Vektor mit einer Eins an der Stelle der Aktion a und sonst Nullen ist.

Einfach gesagt

Spiel, schau, wie es ausgegangen ist, und mach jeden Zug, den du gemacht hast, ein Stück wahrscheinlicher — umso mehr, je besser es danach ausging. Züge aus gelungenen Partien werden stärker verstärkt als Züge aus misslungenen. Niemand muss sagen, welcher Zug richtig war; das Ergebnis genügt.

∇J(θ) = Eπθ[ ∑t ∇ log πθ(at | st) · Gt ]

∇J(θ)
die Richtung, in die man die Parameter drehen muss, damit der mittlere Ertrag am schnellsten wächst; direkt berechnen lässt sie sich nicht, weil der Ertrag von θ nur über das zufällige Spielen und die unbekannte Physik der Umgebung abhängt
Eπθ[ ∑t … ]
Mittel über Episoden, die mit der aktuellen Strategie gespielt wurden — deshalb lässt es sich durch ein Mittel über tatsächlich gespielte Partien ersetzen; und deshalb reichen Daten einer anderen Strategie (einer älteren, einer fremden) ohne Korrektur nicht
∇ log πθ(at | st)
die Richtung im Parameterraum, die die gespielte Aktion wahrscheinlicher macht; ∇ log π = ∇π/π teilt durch die Wahrscheinlichkeit, sodass eine häufige Aktion, die in den Daten oft vorkommt, nicht zusätzlich stärker verstärkt wird, nur weil sie häufig ist
Gt
das Gewicht: wie gut es nach der Aktion ausging; nur Belohnungen ab Schritt t, weil eine Aktion Belohnungen, die schon gefallen sind, nicht beeinflussen kann
Der Gradient ist ein gewichtetes Mittel der Richtungen „mach diese Aktion wahrscheinlicher“, das Gewicht ist der Ertrag, der nach ihr kam.
Satz — woher die Formel kommt (der Log-Trick)

Es gelten die Voraussetzungen des Policy-Gradient-Theorems. Eine Episode (Trajektorie) τ = (s0, a0, s1, a1, …, sT) hat unter der Strategie πθ die Wahrscheinlichkeit

Pθ(τ) = p(s0) ∏t=0T−1 πθ(at | st) P(st+1 | st, at)

und sei G(τ) = G0 ihr Ertrag; es gibt endlich viele Trajektorien, also ist J(θ) = ∑τ Pθ(τ) G(τ). Dann gilt

∇J(θ) = ∇ ∑τ Pθ(τ) G(τ) = ∑τ Pθ(τ) · ∇ log Pθ(τ) · G(τ) = Eτ ∼ πθ[ ∇ log Pθ(τ) · G(τ) ],

weil ∇P = P · ∇ log P. Beweis (Skizze): Der Logarithmus macht aus dem Produkt eine Summe, log Pθ(τ) = log p(s0) + ∑t log πθ(at | st) + ∑t log P(st+1 | st, at). Von θ hängt nur die mittlere Summe ab, die Physik der Umgebung P müssen wir also nicht kennen: ∇ log Pθ(τ) = ∑t ∇ log πθ(at | st). Zum Schluss lassen wir bei jedem at die Belohnungen vor Schritt t weg: Sie hängen nicht von at ab, und ihr Beitrag hat deshalb den Erwartungswert null (siehe den Satz im nächsten Abschnitt). Von der Summe ∑k γk rk+1 bleibt so beim Schritt t ∑k ≥ t γk rk+1 = γt Gt übrig, was die Aussage des Policy-Gradient-Theorems ist. ∎

Beispiel — ein Schritt REINFORCE mit Softmax

Zwei Aktionen, Ausgaben des Netzes z = (0; 0), also π = softmax(z) = (0,50; 0,50). Der Agent hat Aktion 1 („nach rechts“) gespielt, und der Ertrag ab diesem Schritt war G = 10. Für Softmax ist ∇z log π(a) = 1a − π, also

∇z log π(1) · G = ((0; 1) − (0,50; 0,50)) · 10 = (−5; 5)

(Farben wie in der Zerlegung der Formel oben; das Ergebnis ist eine Schätzung von ∇J aus einem einzigen Schritt).

Ein Aufstiegsschritt mit α = 0,1: z ← (0; 0) + 0,1 · (−5; 5) = (−0,5; 0,5). Die neue Strategie π = (e−0,5; e0,5)/e−0,5 + e0,5 = (0,269; 0,731). Die Aktion, die geklappt hat, ist jetzt wahrscheinlicher. (In einem echten Netz ändern sich die Gewichte θ, und zu z gelangt der Gradient per Backpropagation; die Richtung ist dieselbe.)

θ = zufällige Gewichte des Strategienetzes
wiederhole:
    spiele ganze Episoden mit der Strategie π_θ, bis es mindestens 2 000 Schritte sind
    für jede Episode von hinten:            # G = 0 nach dem Ende der Episode
        G_t = r_(t+1) + γ · G_(t+1)
    g = Mittel über alle Schritte  ∇ log π_θ(a_t | s_t) · G_t
    θ = θ + α · g                           # Aufstieg; bei uns per Adam-Schritt
    verwirf die Daten — beim nächsten Mal stammen sie von einer anderen Strategie

3. Varianz und Baseline

Definition — Baseline und Vorteil

Sei (S, A, P, R, γ) ein MDP und πθ eine parametrisierte Strategie.

  1. Eine Baseline ist eine beliebige Funktion b : S → ℝ, die nur vom Zustand abhängt, nicht von der Aktion. Die Gradientenschätzung mit Baseline ist ĝ = ∑t ∇ log πθ(at | st) · (Gt − b(st)); nach dem Satz unten hat sie denselben Erwartungswert wie die Schätzung ohne b, nur kann ihre Varianz dadurch deutlich kleiner werden.
  2. Der Vorteil (advantage) der Strategie π ist die Funktion Aπ : S × A → ℝ, Aπ(s, a) = Qπ(s, a) − Vπ(s), wobei Qπ und Vπ die Wertfunktionen aus dem Teil über MDP sind (der Buchstabe A mit Argumenten bezeichnet hier den Vorteil, nicht die Menge der Aktionen). Die beste übliche Wahl der Baseline ist b = Vπθ, in der Praxis von einem zweiten Netz geschätzt; dann ist Gt − b(st) eine Schätzung des Vorteils.
  3. Actor-Critic ist eine Methode, die gleichzeitig eine parametrisierte Strategie πθ („Actor“) und eine Schätzung der Wertfunktion V ≈ Vπθ („Critic“) lernt und die Schätzung des Critics in der Schätzung des Policy Gradient verwendet.
Einfach gesagt

Beim Pendel auf dem Wagen bekommt der Agent +1 für jeden Schritt, also ist jeder Ertrag positiv — REINFORCE verstärkt damit jeden Zug, nur manche stärker. Das Signal „das war besser als sonst“ geht im Rauschen unter. Zieht man das erwartete Niveau ab, wird daraus „dieser Zug ging 20 Punkte besser aus, als in dieser Lage zu erwarten war“ — und schlechtere Züge bekommen ein negatives Vorzeichen.

∇J(θ) = E[ ∑t ∇ log πθ(at | st) · (Gt − b(st)) ],   A(s, a) = Q(s, a) − V(s)

∇ log πθ(at | st)
die Richtung „die gespielte Aktion öfter“, genau wie bei REINFORCE
Gt, Q(s, a)
was nach der Aktion tatsächlich kam (Gt) bzw. wie viel es danach im Mittel bringt (Q ist der Erwartungswert von Gt); für sich genommen fast immer positiv, sodass es eine gute Aktion nicht von einer durchschnittlichen unterscheidet
b(st), V(s)
die Messlatte: wie viel man in dieser Lage unabhängig von der Aktion erwartet; nach dem Abziehen bekommen unterdurchschnittliche Aktionen ein negatives Vorzeichen. Sie darf nur vom Zustand abhängen, nicht von der Aktion — sonst würde der Gradient verzerrt (Satz unten)
A(s, a)
der Vorteil: um wie viel die Aktion a besser ist als die durchschnittliche Aktion der Strategie in s; genau die Information, die wir verstärken wollen
Das Abziehen der Messlatte ändert nicht, wohin der Gradient im Mittel zeigt, es verkleinert nur, wie stark die Schätzung von Stapel zu Stapel zittert.
Satz — die Baseline verzerrt den Gradienten nicht

Sei A eine endliche Menge von Aktionen, πθ eine parametrisierte Strategie mit πθ(a | s) > 0, s ∈ S ein Zustand und b : S → ℝ eine Funktion. Dann gilt

  1. Ea ∼ πθ(· | s)[∇ log πθ(a | s)] = ∑a ∈ A πθ(a | s) ∇ log πθ(a | s) = 0;
  2. Ea ∼ πθ(· | s)[∇ log πθ(a | s) · b(s)] = 0.

Das Abziehen von b(st) von Gt ändert also den Erwartungswert der Gradientenschätzung nicht (es genügt, auf den Zustand st zu bedingen).

Beweis: ∑a πθ(a | s) ∇ log πθ(a | s) = ∑a ∇πθ(a | s) = ∇ ∑a πθ(a | s) = ∇1 = 0. Der Term b(s) ist für festes s eine Konstante und lässt sich vor die Summe ziehen. ∎

Beispiel — gleicher Mittelwert, andere Varianz

Ein Zustand, zwei Aktionen mit π = (0,5; 0,5). Aktion 1 bringt den Ertrag 12, Aktion 0 den Ertrag 10 — beides positiv wie beim Wagen. Die Komponente der Gradientenschätzung nach der Ausgabe z1 ist aus einer einzigen Stichprobe (1a=1 − 0,5) · (G − b) (Farben wie in der Formel oben).

Ohne Baseline (b = 0): Fällt Aktion 1, ist die Schätzung 0,5 · 12 = 6; fällt Aktion 0, ist sie −0,5 · 10 = −5. Mittelwert 6 − 5/2 = 0,5, Varianz (6 − 0,5)² + (−5 − 0,5)²/2 = 30,25.

Mit Baseline b = 11 (mittlerer Ertrag): 0,5 · (12 − 11) = 0,5 und −0,5 · (10 − 11) = 0,5. Der Mittelwert ist immer noch 0,5, die Varianz 0.

Der wahre Gradient ist π1(1 − π1) · (12 − 10) = 0,25 · 2 = 0,5. Beide Schätzungen zeigen im Mittel richtig, aber ohne Messlatte liegt eine einzelne Stichprobe um ±5,5 daneben, mit Messlatte gar nicht. In Wirklichkeit fällt die Varianz nicht auf null (die Erträge sind zufällig und es gibt viele Zustände), aber das Prinzip ist dasselbe.

Wir haben es zu Beginn des Lernens gemessen: 40 unabhängige Stapel zu je 1 000 Schritten derselben zufälligen Strategie, aus jedem ein REINFORCE-Gradient. Schon das Abziehen des mittleren Ertrags (eine konstante Baseline) verkleinert die Summe der Varianzen der Gradientenkomponenten von 0,177 auf 0,131, also um 26 %. Ein gelernter Wert V(s), der gute und schlechte Lagen unterscheidet, hilft noch mehr.

Definition — Summe der Varianzen der Gradientenkomponenten

Sei K ≥ 1 (bei uns K = 40) und seien ĝ(1), …, ĝ(K) ∈ ℝm Gradientenschätzungen aus K unabhängigen Stapeln (Vektoren über alle m Gewichte des Netzes). Für j = 1, …, m bezeichne ḡj = 1/K ∑k=1K ĝj(k) das Mittel der j-ten Komponente. Die Summe der Varianzen der Komponenten ist die Zahl

∑j=1m 1/K ∑k=1K (ĝj(k) − ḡj)².

Das ist die Spur der (empirischen) Kovarianzmatrix der Schätzung — eine einzige Zahl dafür, wie stark die Schätzung zittert. Rückgang: 1 − 0,131/0,177 = 0,26, also 26 %.

Ein gelerntes V braucht auch PPO weiter unten. Den Vorteil schätzt es dabei nicht über die Differenz Gt − V(st), sondern über einen Kompromiss zwischen ihr und der Einschrittschätzung aus dem Teil über Q-Learning:

Ât = ∑l≥0 (γλ)l δt+l,   δt = rt+1 + γ V(st+1) − V(st)

Ât
die Schätzung des Vorteils von Schritt t (GAE, John Schulman u. a., 2015) — das, womit ∇ log π multipliziert wird
δt
TD-Fehler: um wie viel ein einzelner Schritt besser ausging, als V erwartet hatte; eine Einschrittschätzung des Vorteils mit kleiner Varianz, aber verzerrt, wenn V sich irrt
rt+1
die Belohnung, die tatsächlich kam — das einzige Stück Wirklichkeit in δ
V(s)
die gelernte Messlatte; in st+1 ersetzt sie den Rest des Ertrags durch eine Schätzung, in st wird sie als Baseline abgezogen (nach einem Sturz ist V(st+1) = 0)
(γλ)l
wie schnell entferntere Schritte vergessen werden. λ = 0 ergibt nur δt; λ = 1 ergibt nach dem Summieren (die V-Terme heben sich gegenseitig auf) genau Gt − V(st) — unverzerrt, aber mit großer Varianz. Wir haben λ = 0,95
Im Code wird es von hinten in einer Zeile berechnet: Ât = δt + γλ Ât+1.

4. PPO: kleine, sichere Schritte

REINFORCE hat noch eine Schwäche: Jede gespielte Erfahrung nutzt es nur für einen einzigen Gradientenschritt und wirft sie dann weg. Würden wir auf denselben Daten mehr Schritte machen, könnte sich die Strategie von derjenigen entfernen, die die Daten gesammelt hat, und die Gradientenschätzung würde nicht mehr gelten — das Lernen bricht zusammen. PPO passt darauf auf.

Definition — Proximal Policy Optimization (PPO)

Sei πθ eine parametrisierte Strategie, V : S → ℝ eine gelernte Schätzung der Wertfunktion (Critic), ε > 0 (typischerweise ε = 0,2), γ ∈ [0, 1] und λ ∈ [0, 1]. Für x ∈ ℝ bezeichne clip(x, 1 − ε, 1 + ε) = min(max(x, 1 − ε), 1 + ε) die Zahl x, eingeklemmt in das Intervall [1 − ε, 1 + ε]. PPO (Proximal Policy Optimization; John Schulman u. a., OpenAI, 2017) wiederholt diese Schritte:

  1. Setze θold = θ, πold = πθold und sammle mit dieser Strategie einen Stapel von Schritten (st, at, rt+1, st+1).
  2. Berechne für jeden Schritt den TD-Fehler δt = rt+1 + γ V(st+1) − V(st) (nach einem Sturz V(st+1) = 0) und die Schätzung des Vorteils mit der Methode GAE (generalized advantage estimation) Ât = ∑l≥0 (γλ)l δt+l, wobei die Summe mit dem Ende der Episode endet.
  3. Maximiere einige Epochen lang (bei uns 10) mit Gradientenschritten bezüglich θ das geclippte Ziel L(θ) = Et[ min( rt(θ) Ât, clip(rt(θ), 1 − ε, 1 + ε) Ât ) ],   rt(θ) = πθ(at | st)/πold(at | st), wobei Et das Mittel über die Schritte des Stapels (Minibatches) ist und rt(θ) das Wahrscheinlichkeitsverhältnis (nicht mit der Belohnung rt+1 verwechseln); lerne zugleich den Critic V durch Verkleinern des Mittels von (V(st) − yt)², wobei yt = Ât + Vold(st) das in Schritt 2 aus den Werten des Critics vor dem Lernen berechnete Ziel ist.
  4. Verwirf den Stapel und fahre mit Schritt 1 fort, bis das Budget an Schritten in der Umgebung aufgebraucht ist.

Sobald sich die Wahrscheinlichkeit einer Aktion um mehr als den Faktor 1 ± ε in die Richtung ändert, die das Ziel verbessert, verschwindet der Gradient aus dieser Stichprobe.

Einfach gesagt

Der Trainer sagt nach dem Spiel: „Mach das öfter.“ Der Spieler wiederholt es im Training — aber nur so lange, bis er es um ein Fünftel öfter macht als vorher. Weiter lernt er nicht, bis er das nächste Spiel gespielt und herausgefunden hat, ob es immer noch funktioniert. Schritte groß genug, um schnell besser zu werden, klein genug, um nicht durchzudrehen.

−2−1012 00,511,52 Wahrscheinlichkeitsverhältnis r (ohne Einheit) geclipptes Ziel (Vielfache von A)
Geclipptes Ziel von PPO in Abhängigkeit vom Verhältnis r = π_neu / π_alt (ε = 0,2; grün der Bereich 1 ± ε) Vorteil A = +1: über 1 + ε bringt es nichts mehr Vorteil A = −1: unter 1 − ε bringt es nichts mehr

L(θ) = Et[ min( rt(θ) Ât, clip(rt(θ), 1 − ε, 1 + ε) Ât ) ]

L(θ)
das Ersatzziel, das einige Epochen lang auf dem alten Stapel maximiert wird; sein Gradient in θ = θold ist genau der Policy Gradient aus REINFORCE mit Vorteil
rt(θ) = πθ/πold
das Verhältnis der neuen und der alten Wahrscheinlichkeit der gespielten Aktion. Die Daten hat die alte Strategie gesammelt; durch Multiplizieren mit dem Verhältnis lässt sich aus ihnen schätzen, wie sich die neue schlagen würde (Importance Sampling). Am Anfang ist r = 1
Ât
der Vorteil aus GAE: Das Vorzeichen sagt, ob die Aktion verstärkt (+) oder unterdrückt (−) werden soll
clip(r, 1 − ε, 1 + ε)
das Verhältnis, in einen Bereich eingeklemmt (im Diagramm grün); außerhalb des Bereichs ist es konstant, sodass von dort kein Gradient kommt — mit dieser Stichprobe lässt sich die Strategie nicht weiter schieben
min
von zwei Schätzungen die schlechtere (pessimistische): Das Clipping gilt nur dort, wo eine Verbesserung verdächtig gut aussähe. Hat sich die Aktion dagegen verschlechtert, lässt min den ungeclippten Term stehen und korrigiert den Fehler
Verstärke vorteilhafte Aktionen, aber nur, solange sich ihre Wahrscheinlichkeit nicht um mehr als den Faktor 1 ± ε ändert; danach schweigt die Stichprobe.
Beispiel — drei Stichproben und Clipping mit ε = 0,2

Die alte Strategie gab der gespielten Aktion die Wahrscheinlichkeit 0,5. Nach einigen Lernschritten ist es 0,65, also r = 0,65/0,5 = 1,3 und clip(1,3; 0,8; 1,2) = 1,2 (Farben wie in der Zerlegung des geclippten Ziels oben).

Vorteil +2: min(1,3 · 2; 1,2 · 2) = min(2,6; 2,4) = 2,4. Gewonnen hat der geclippte Term, der nicht von θ abhängt — der Gradient aus dieser Stichprobe ist null. Die Aktion ist schon um 30 % häufiger, mehr nicht.

Vorteil −2 (dasselbe Verhältnis): min(1,3 · (−2); 1,2 · (−2)) = min(−2,6; −2,4) = −2,6. Gewonnen hat der ungeclippte Term: Die Strategie hat versehentlich eine schlechte Aktion wahrscheinlicher gemacht, und der Gradient zieht sie deshalb weiter zurück.

Vorteil +2, aber die Wahrscheinlichkeit ist auf 0,35 gefallen: r = 0,35/0,5 = 0,7, min(0,7 · 2 = 1,4; 0,8 · 2 = 1,6) = 1,4. Wieder der ungeclippte Term — eine gute Aktion, die die Strategie unterdrückt hat, kommt zurück. Das Clipping bremst nur Schritte, die das Ziel „zu sehr“ verbessern würden.

wiederhole:
    π_old = π_θ;  sammle 2 000 Schritte mit der Strategie π_old, speichere π_old(a_t | s_t)
    für jede Episode von hinten:                     # V(s_(t+1)) = 0 nach einem Sturz
        δ_t = r_(t+1) + γ · V(s_(t+1)) − V(s_t)
        Â_t = δ_t + γλ · Â_(t+1)                      # GAE, γ = 0,99, λ = 0,95
    ziel_t = Â_t + V(s_t);  normalisiere  auf Mittelwert 0 und Varianz 1
    10-mal (Epoche):
        mische die Schritte und teile sie in Minibatches zu 100
        für jeden Minibatch:
            r_t = π_θ(a_t | s_t) / π_old(a_t | s_t)
            θ: Schritt aufwärts auf dem Mittel von min(r_t · Â_t, clip(r_t, 0,8, 1,2) · Â_t)
            V: Schritt abwärts auf dem Mittel von (V(s_t) − ziel_t)²

5. Experiment: Pendel auf dem Wagen

Dasselbe Pendel auf dem Wagen wie bei DQN, Belohnung +1 für jeden Schritt, die Episode endet mit einem Sturz oder nach 500 Schritten. Die Strategie ist ein Netz 4 → 32 → 32 → 2 mit Softmax, der Zustandswert ein zweites Netz derselben Form. Alle vier Methoden bekommen 100 000 Schritte in der Umgebung, in Stapeln zu 2 000. REINFORCE macht auf einem Stapel einen Gradientenschritt, PPO zehn Epochen mit Minibatches zu 100. Die Variante „ohne Clipping“ ist PPO, bei dem wir das Clipping abgeschaltet haben.

0100200300400500 025 00050 00075 000100 000 Lernschritt (Schritte in der Umgebung) Episodenlänge (Schritte)
Mittlere Episodenlänge während des Lernens (dick das Mittel aus drei Läufen, dünn die einzelnen Läufe) REINFORCEREINFORCE mit BaselinePPOPPO ohne Clipping
Methodewann zuerst Mittel ≥ 475 (Lauf 1 · 2 · 3)am Ende (Lauf 1 · 2 · 3)
REINFORCE— · — · —463 · 333 · 348
REINFORCE mit Baseline90 000 · 80 000 · —488 · 500 · 404
PPO30 000 · 20 000 · 20 000500 · 500 · 500
PPO ohne Clipping100 000 · 30 000 · 50 000494 · 44 · 500

PPO hält den Stab in allen drei Läufen ganze 500 Schritte schon nach 30 000, 20 000, 20 000 Schritten und lässt nicht mehr los. REINFORCE verbessert sich langsam und schafft es bis zum Ende nicht; mit Baseline ist es etwas schneller und erreicht das Ziel in zwei von drei Läufen. Achtung, der Vergleich ist bei der Zahl der Berechnungen nicht ganz fair: PPO macht auf jedem Stapel zehnmal mehr Gradientenschritte. Fair ist er aber bei dem, was beim bestärkenden Lernen am meisten zählt — der Zahl der Erfahrungen, die der Agent in der Welt sammeln muss.

Und was passiert, wenn wir dasselbe wiederholte Lernen auf einem Stapel ohne Clipping laufen lassen? Die Episodenlängen springen auf und ab, Lauf 2 endete bei 44 Schritten. Warum, zeigt, wie weit sich die Strategie bei einer einzigen Aktualisierung von derjenigen entfernt, die die Daten gesammelt hat:

10-410-310-210-1100101 025 00050 00075 000100 000 Lernschritt (Schritte in der Umgebung) KL-Schätzung (Nat, log. Skala)
Abstand der neuen Strategie von der alten nach jedem Stapel (KL-Schätzung, Lauf 1, logarithmisch) PPO ohne Clipping

Bei PPO ist der mittlere Abstand 0,014 Nat und übersteigt nie 0,06. Ohne Clipping sind es im Mittel 5,5 und gelegentlich bis zu 25 Nat — die Strategie macht nach einer einzigen Aktualisierung etwas völlig anderes als die, aus der sie gelernt hat. Die Daten sagen dann nichts über sie aus, und eine Verbesserung ist Glückssache. Das Clipping ist eine kleine Änderung in der Formel, macht aber aus einem instabilen Algorithmus einen zuverlässigen.

Definition — KL-Schätzung zwischen alter und neuer Strategie

Seien πold und πθ Strategien auf einer endlichen Menge von Aktionen A mit πθ(a | s) > 0, und seien (si, ai), i = 1, …, N, die Schritte eines mit der Strategie πold gesammelten Stapels. Die KL-Divergenz aus dem Teil über Informationstheorie, hier mit dem natürlichen Logarithmus (Einheit Nat; 1 Nat = 1/ln 2 ≈ 1,44 Bit), gemittelt über die Zustände, die die alte Strategie besucht, ist

DKL(πold ‖ πθ) = Es[ ∑a ∈ A πold(a | s) log πold(a | s)/πθ(a | s) ] = Es, a ∼ πold[ log πold(a | s) − log πθ(a | s) ]

und ihre Schätzung aus dem Stapel ist

D̂ = 1/N ∑i=1N [ log πold(ai | si) − log πθ(ai | si) ].

Die Aktionen ai hat die alte Strategie gespielt, also ist das Mittel über den Stapel eine erwartungstreue Schätzung. Es ist der mittlere Logarithmus des Verhältnisses, und damit ist e−D̂ das geometrische Mittel des Verhältnisses πθ/πold über die gesammelten Aktionen.

Was das in Zahlen heißt: bei PPO höchstens 0,06 Nat, e−0,06 = 0,94 — Aktionen aus dem alten Stapel sind typischerweise um ein paar Prozent weniger wahrscheinlich, die Daten sagen über die neue Strategie immer noch etwas aus. Ohne Clipping bis zu 24,9 Nat: e−24,9 ≈ 1,5 · 10−11, die neue Strategie würde die Aktionen, aus denen sie gerade gelernt hat, fast nie spielen.

6. PPO und Sprachmodelle

Im Teil über RLHF haben wir erwähnt, dass InstructGPT und das erste ChatGPT mit bestärkendem Lernen feinabgestimmt wurden. Es war genau PPO: Die Strategie ist das Sprachmodell, der Zustand der bisherige Text, die Aktion das nächste Token, und die Belohnung am Ende der Antwort gibt ein Belohnungsmodell, das aus menschlichen Präferenzen gelernt wurde. Die Strafe für das Entfernen vom Ausgangsmodell (KL) spielt dieselbe Rolle wie das Clipping — sie lässt die Strategie nicht dorthin entwischen, wo man der Belohnung nicht trauen kann.

Definition — Belohnung beim Feintuning eines Sprachmodells mit PPO

Sei x eine Anfrage und y = (y1, …, yn) eine Antwort (Folgen von Tokens), erzeugt vom feinabgestimmten Sprachmodell πθ, wobei πθ(y | x) = ∏k=1n πθ(yk | x, y1, …, yk−1). Sei rφ(x, y) ∈ ℝ die Ausgabe des Belohnungsmodells, πref das eingefrorene Modell nach dem Feintuning an Beispielen (SFT) und β > 0 die Stärke der Strafe. PPO bekommt dann die Belohnung

R(x, y) = rφ(x, y) − β · log πθ(y | x)/πref(y | x)

(so schreibt es InstructGPT, Long Ouyang u. a., 2022). Der Erwartungswert des zweiten Terms über die Antworten ist genau β · DKL(πθ ‖ πref). Eine Episode ist eine Antwort, Aktionen sind Tokens, die Belohnung rφ kommt erst nach dem letzten Token; der Rest ist PPO, wie es oben beschrieben ist.

Bei großen Modellen ist PPO aber teuer: Es braucht neben dem Modell auch ein gleich großes Wertnetz. Deshalb entstanden Vereinfachungen. DPO aus dem Teil über RLHF umgeht das bestärkende Lernen ganz. GRPO (DeepSeek, 2024) lässt das Wertnetz weg und nimmt als Baseline die mittlere Belohnung mehrerer Antworten auf dieselbe Frage — genau die konstante Baseline, die wir oben gemessen haben. So lernen Modelle, die über Mathematik und Code „nachdenken“, wo sich die Richtigkeit einer Antwort überprüfen lässt.

Âi = ri − Mittel(r1, …, rG)/sd(r1, …, rG)

Âi
der Vorteil der i-ten Antwort; ihn bekommen alle ihre Tokens, und er geht weiter in das geclippte Ziel von PPO
ri
die Belohnung der i-ten von G Antworten auf dieselbe Frage, etwa 1 = Ergebnis stimmt, 0 = stimmt nicht
Mittel(…)
die Baseline anstelle des Wertnetzes: wie gut das Modell diese Frage gewöhnlich beantwortet — eine leichte Frage hat eine hohe Messlatte, eine schwere eine niedrige
sd(…)
die Standardabweichung der Gruppe, sd(r1, …, rG) = √∑i=1G (ri − r̄)²/G, wobei r̄ der Mittelwert ist; sie gleicht den Maßstab an, damit Fragen mit großer und kleiner Streuung der Belohnungen gleich stark ziehen (wie die Normalisierung der Vorteile in unserem PPO)
GRPO (Zhihong Shao u. a., DeepSeekMath, 2024): Vorteil einer Antwort = um wie viel sie besser ist als die anderen Antworten auf dieselbe Frage.
Beispiel — GRPO-Vorteile für vier Antworten

Das Modell beantwortet eine Aufgabe viermal, richtig nur beim ersten Mal: Belohnungen (1; 0; 0; 0). Mittelwert 0,25, Standardabweichung √0,75² + 3 · 0,25²/4 = √0,1875 = 0,433.

Vorteile (Farben wie in der Formel oben): 1 − 0,25/0,433 = 1,732 für die richtige Antwort und 0 − 0,25/0,433 = −0,577 für jede der drei falschen. Die Summe ist null: Die richtige wird verstärkt, die falschen unterdrückt. Wären alle vier Antworten richtig (oder alle falsch), wären alle Vorteile null und die Frage brächte nichts bei — gelernt wird nur aus Fragen, bei denen das Modell manchmal trifft und manchmal nicht. (Wir teilen durch G; manche Implementierungen teilen durch G − 1, die Zahlen weichen dann leicht ab.)

7. Zusammenfassung

  • Policy Gradient lernt direkt die Wahrscheinlichkeiten der Aktionen; es funktioniert auch für kontinuierliche Aktionen und probiert von selbst aus.
  • REINFORCE verstärkt Aktionen proportional zum Ertrag, der nach ihnen kam; es ist einfach, aber die Gradientenschätzung hat eine große Varianz.
  • Das Abziehen einer Baseline verkleinert die Varianz, ohne den Erwartungswert zu ändern (bei uns schon mit einer Konstante um 26 %); mit einem gelernten V(s) entsteht Actor-Critic.
  • PPO nutzt jeden Stapel mehrmals und hält die Strategie durch Clipping des Wahrscheinlichkeitsverhältnisses nahe an der, die die Daten gesammelt hat.
  • Beim Pendel auf dem Wagen: PPO schafft 500 Schritte nach 20–30 Tausend Schritten in allen Läufen; ohne Clipping entfernt sich die Strategie um bis zu 25 Nat und das Lernen schwankt.
  • PPO hat das erste ChatGPT feinabgestimmt; seine Vereinfachung (GRPO) trainiert heute „nachdenkende“ Modelle.

Willst du es selbst ausprobieren? Lass einen KI-Agenten PPO aus der Bibliothek Stable-Baselines3 auf der Umgebung LunarLander laufen und ε beim Clipping ändern (0,05; 0,2; 0,5) — und zeichnen, wie sich Geschwindigkeit und Stabilität des Lernens ändern.

Siehst du das anders? Schreib an support@coden-app.com.

Ein Agent auf deinem Rechner, vom Telefon aus gesteuert