<EbeneX/>
Grundlagen Grundlagen · Updated 11. März 2026

PPO (Proximal Policy Optimization)

Definition

Ein Reinforcement-Learning-Algorithmus, der bei RLHF zum Einsatz kommt – trainiert LLMs basierend auf menschlichem Feedback, stabil und effizient.

Experte 3 Min. Lesezeit EN: Proximal Policy Optimization

Einfach erklärt

PPO (Proximal Policy Optimization) ist der Algorithmus, der LLMs beibringt, “gute” Antworten zu geben. Nach dem Pre-Training lernt das Modell durch PPO, welche Antworten Menschen bevorzugen.

Der RLHF-Prozess mit PPO:

1. Pre-Training
   Modell lernt Sprache aus Texten

2. Supervised Fine-Tuning (SFT)
   Modell lernt Instruktionen zu befolgen

3. Reward Model Training
   Separates Modell lernt, Antworten zu bewerten

4. PPO Training
   Modell optimiert sich auf hohe Reward-Scores

Warum “Proximal”?

PPO macht nur kleine Änderungen pro Trainingsschritt:

Ohne Clipping:
Alte Policy → [großer Sprung] → Neue Policy
             ↑ Kann instabil sein, "vergisst" Gelerntes

Mit PPO Clipping:
Alte Policy → [kleiner Schritt] → Neue Policy
             ↑ Stabil, behält Gelerntes bei

Die Kernidee:

  • Vergleiche neue Policy mit alter Policy
  • Wenn Änderung zu groß → abschneiden (clip)
  • So bleibt Training stabil

Technischer Deep Dive

PPO-Algorithmus (vereinfacht)

def ppo_update(model, old_model, prompts, rewards):
    for prompt in prompts:
        # Generiere Antwort mit aktuellem Modell
        response = model.generate(prompt)
        
        # Berechne Wahrscheinlichkeiten
        new_log_prob = model.log_prob(response)
        old_log_prob = old_model.log_prob(response)
        
        # Ratio zwischen neuer und alter Policy
        ratio = exp(new_log_prob - old_log_prob)
        
        # Advantage (wie viel besser als erwartet?)
        advantage = rewards[response] - baseline
        
        # Clipped Objective
        unclipped = ratio * advantage
        clipped = clip(ratio, 1-epsilon, 1+epsilon) * advantage
        
        # Nimm das Minimum (pessimistisch)
        loss = -min(unclipped, clipped)
        
        # Update
        loss.backward()
        optimizer.step()

Die PPO-Loss-Funktion

L_PPO = E[min(r_t * A_t, clip(r_t, 1-ε, 1+ε) * A_t)]

Wobei:
- r_t = π_new(a|s) / π_old(a|s)  (Ratio)
- A_t = Advantage (Reward - Baseline)
- ε = Clipping-Parameter (typisch 0.1-0.2)

Warum Minimum?

  • Wenn Advantage positiv: Verhindert zu große Erhöhung
  • Wenn Advantage negativ: Verhindert zu große Verringerung
  • Ergebnis: Konservative, stabile Updates

PPO für LLMs (RLHF)

from trl import PPOTrainer, PPOConfig

# Konfiguration
config = PPOConfig(
    learning_rate=1e-5,
    batch_size=64,
    ppo_epochs=4,
    cliprange=0.2,
    vf_coef=0.1,
)

# Trainer
trainer = PPOTrainer(
    config=config,
    model=model,
    ref_model=ref_model,  # Frozen copy
    tokenizer=tokenizer,
    reward_model=reward_model,
)

# Training Loop
for batch in dataloader:
    prompts = batch["prompts"]
    
    # Generiere Responses
    responses = trainer.generate(prompts)
    
    # Berechne Rewards
    rewards = reward_model(prompts, responses)
    
    # PPO Update
    stats = trainer.step(prompts, responses, rewards)

Hyperparameter

ParameterTypischer WertBeschreibung
cliprange0.1-0.2Wie stark darf Policy sich ändern?
ppo_epochs2-4Updates pro Batch
learning_rate1e-5 - 1e-6Lernrate
kl_coef0.1-0.2KL-Divergenz-Penalty
vf_coef0.1Value Function Loss Weight

PPO vs. DPO

AspektPPODPO
Reward ModelBenötigtNicht benötigt
KomplexitätHochNiedrig
Training ZeitLangKurz
StabilitätGut (mit Tuning)Sehr gut
FlexibilitätHochBegrenzt
Online LearningJaNein

Wann PPO, wann DPO?

PPO wenn:

  • Reward Model bereits existiert
  • Online-Feedback möglich
  • Komplexe Reward-Strukturen
  • Maximale Kontrolle nötig

DPO wenn:

  • Schnelles Training wichtig
  • Nur Präferenzdaten vorhanden
  • Einfachheit bevorzugt
  • Ressourcen begrenzt

PPO ist wie ein vorsichtiger Fahrschüler: Er macht kleine, kontrollierte Verbesserungen bei jedem Versuch, statt wilde Manöver – so lernt er zuverlässig, ohne das Auto zu schrotten.

Standard-Algorithmus für RLHF bei LLMs (GPT, Claude, etc.)

Macht kleine, stabile Updates statt großer, riskanter Änderungen

Balance zwischen Exploration (Neues probieren) und Exploitation (Bewährtes nutzen)

RLHF für LLMs

Training von ChatGPT, Claude etc. auf menschliche Präferenzen

Game AI

Training von Agenten in Spielen (OpenAI Five, AlphaStar)

Robotik

Roboter lernen Bewegungen durch Trial and Error

Empfehlungssysteme

Optimierung basierend auf User-Feedback

Warum PPO statt anderer RL-Algorithmen?

PPO ist stabil, einfach zu tunen und skaliert gut. Andere Algorithmen (TRPO, A3C) sind entweder komplizierter oder instabiler. PPO ist der 'sweet spot'.

Was ist der Unterschied zwischen PPO und DPO?

PPO braucht ein separates Reward Model und ist aufwändiger. DPO trainiert direkt auf Präferenzdaten ohne Reward Model – einfacher, aber weniger flexibel.

Ist PPO noch State-of-the-Art?

Für RLHF ja, aber DPO gewinnt an Popularität wegen Einfachheit. PPO bleibt relevant für komplexere Szenarien und wenn ein Reward Model ohnehin existiert.

Wie lange dauert PPO-Training?

Für LLMs: Tage bis Wochen auf großen GPU-Clustern. Der aufwändigste Teil von RLHF. Deshalb ist DPO attraktiv – deutlich schneller.

Dein persönliches Share-Bild für Instagram – 1080×1080px, bereit zum Posten.