RLHF (Reinforcement Learning from Human Feedback)
Eine Trainingsmethode, bei der ein KI-Modell durch menschliches Feedback lernt, hilfreiche, harmlose und ehrliche Antworten zu generieren.
Ein Reinforcement-Learning-Algorithmus, der bei RLHF zum Einsatz kommt – trainiert LLMs basierend auf menschlichem Feedback, stabil und effizient.
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:
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()
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?
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)
| Parameter | Typischer Wert | Beschreibung |
|---|---|---|
cliprange | 0.1-0.2 | Wie stark darf Policy sich ändern? |
ppo_epochs | 2-4 | Updates pro Batch |
learning_rate | 1e-5 - 1e-6 | Lernrate |
kl_coef | 0.1-0.2 | KL-Divergenz-Penalty |
vf_coef | 0.1 | Value Function Loss Weight |
| Aspekt | PPO | DPO |
|---|---|---|
| Reward Model | Benötigt | Nicht benötigt |
| Komplexität | Hoch | Niedrig |
| Training Zeit | Lang | Kurz |
| Stabilität | Gut (mit Tuning) | Sehr gut |
| Flexibilität | Hoch | Begrenzt |
| Online Learning | Ja | Nein |
PPO wenn:
DPO wenn:
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
PPO ist stabil, einfach zu tunen und skaliert gut. Andere Algorithmen (TRPO, A3C) sind entweder komplizierter oder instabiler. PPO ist der 'sweet spot'.
PPO braucht ein separates Reward Model und ist aufwändiger. DPO trainiert direkt auf Präferenzdaten ohne Reward Model – einfacher, aber weniger flexibel.
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.
Für LLMs: Tage bis Wochen auf großen GPU-Clustern. Der aufwändigste Teil von RLHF. Deshalb ist DPO attraktiv – deutlich schneller.