Proximal Policy Optimization (PPO)
Clipped Surrogate Objective, GAE-Schätzung des Advantages, PPO mit stable-baselines3.
Proximal Policy Optimization (PPO) ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 3 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.
Warum PPO?
PPO ist heute der Standardalgorithmus für RL: stabil, stichprobeneffizient und einfach zu justieren. Er behebt ein grundlegendes Problem von Policy-Gradient-Verfahren – zu große Updates, die die Policy zerstören –, indem er begrenzt, wie stark sich die Policy pro Update ändern darf.
Die Gefahr großer Updates
Ein einziges übermäßig großes Policy-Update kann die Leistung einbrechen lassen, und da RL on-policy ist, ist die Erholung schwierig. PPO hält jedes Update proximal (also nahe) an der aktuellen Policy, um auf der sicheren Seite zu bleiben.
Das Wahrscheinlichkeitsverhältnis
PPO verfolgt das Verhältnis der neuen zu den alten Aktionswahrscheinlichkeiten: ratio = pi_new(a|s) / pi_old(a|s). Ein Verhältnis nahe 1 bedeutet, dass sich die Policy kaum geändert hat; ein Wert weit von 1 weist auf eine große Änderung hin.
ratio = torch.exp(new_log_prob - old_log_prob)Das geclippte Ziel
Das charakteristische Merkmal von PPO ist das geclippte Surrogat-Ziel. Es multipliziert das Verhältnis mit der Advantage, clippt das Verhältnis jedoch auf [1-eps, 1+eps]. Dadurch entfällt der Anreiz, die Policy zu stark zu verändern.
clipped = torch.clamp(ratio, 1 - eps, 1 + eps)
objective = torch.min(ratio * adv, clipped * adv)
loss = -objective.mean()Der Clip-Schwellenwert epsilon
eps (typischerweise 0.2) ist der Clip-Schwellenwert. Er begrenzt, wie weit sich das Verhältnis von 1 entfernen darf. Selbst bei einer großen Advantage bleibt das Policy-Update dadurch begrenzt und stabil.
eps = 0.2 # allow at most +/-20% change in probabilityWarum min() und Clipping funktionieren
Wenn Sie das min aus dem gecl ersten und dem ungeclippten Ziel nehmen, wird die Begrenzung pessimistisch: Verbesserungen außerhalb des Clip-Bereichs bringen keine zusätzliche Belohnung, sodass der Optimierer keinen Grund hat, über das Ziel hinauszuschießen.
Generalisierte Advantage-Schätzung
PPO schätzt Advantages mit GAE, das mehrstufige Returns mithilfe der Parameter gamma und lambda kombiniert. GAE bildet einen Kompromiss zwischen Bias und Varianz und liefert dadurch gleichmäßige, zuverlässige Advantage-Schätzungen.
def gae(rewards, values, gamma=0.99, lam=0.95):
adv, gae_acc = [], 0
for t in reversed(range(len(rewards))):
delta = rewards[t] + gamma * values[t+1] - values[t]
gae_acc = delta + gamma * lam * gae_acc
adv.insert(0, gae_acc)
return advMehrere Epochen pro Batch
Im Gegensatz zu REINFORCE verwendet PPO jeden Batch der gesammelten Daten für mehrere Optimierungsepochen erneut. Das Clipping macht dies sicher und verbessert die Stichprobeneffizienz erheblich.
for _ in range(n_epochs):
# recompute ratio and clipped loss on the same batch
optimizer.zero_grad()
loss.backward()
optimizer.step()PPO mit Stable-Baselines3
In der Praxis implementieren Sie PPO nur selten selbst. Stable-Baselines3 stellt eine erprobte Implementierung bereit. Erzeugen Sie sie mit dem Policy-Typ, der Umgebung und der Ausführlichkeit und rufen Sie anschließend learn auf.
from stable_baselines3 import PPO
model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=100_000)Den trainierten Agenten verwenden
Verwenden Sie nach dem Training predict, um Aktionen für neue Beobachtungen zu erhalten. Setzen Sie für die Evaluierung deterministic=True, damit die wahrscheinlichste Aktion ausgewählt wird, anstatt eine Aktion zu samplen.
obs, _ = env.reset()
action, _ = model.predict(obs, deterministic=True)
model.save("ppo_agent")Warum PPO dominiert
PPO kombiniert stabile geclippte Updates, GAE-Advantages und die Wiederverwendung von Daten zu einem robusten, vielseitig einsetzbaren Algorithmus, der mit minimaler Abstimmung bei vielen Aufgaben funktioniert. Deshalb kommt er in so unterschiedlichen Bereichen wie Robotik und RLHF zum Einsatz.
Kurzer Test
Testen Sie Ihr Verständnis von PPO.
Rückblick: PPO
Sie haben das geclippte Surrogat-Ziel von PPO kennengelernt, das mithilfe des Wahrscheinlichkeits-verhältnisses und eines Clip-Schwellenwerts eps Updates begrenzt, außerdem GAE zur Schätzung der Advantage und die Wiederverwendung von Daten über mehrere Epochen. Sie haben PPO mit PPO("MlpPolicy", env, verbose=1) in Stable-Baselines3 problemlos ausgeführt.
Häufig gestellte Fragen
Ist die Lektion „Proximal Policy Optimization (PPO)“ kostenlos?
Ja — der vollständige Text von „Proximal Policy Optimization (PPO)“ 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 „Proximal Policy Optimization (PPO)“?
Clipped Surrogate Objective, GAE-Schätzung des Advantages, PPO mit stable-baselines3. 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 3 von 4.
Wie lange dauert die Lektion „Proximal Policy Optimization (PPO)“?
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
- Policy-Gradient-Verfahren: REINFORCE
- Actor-Critic-Verfahren (A2C)
- Proximal Policy Optimization (PPO)
- Benutzerdefinierte Gymnasium-Umgebungen