Proximal Policy Optimization (PPO)
Klippebasert surrogatmål, GAE-estimering av fordel og PPO med stable-baselines3.
Proximal Policy Optimization (PPO) er en gratis leksjon i Lær AI med Python på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lær AI med Python, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Hvorfor PPO?
PPO er dagens standardalgoritme for RL: stabil, dataeffektiv og enkel å stille inn. Den løser et grunnleggende problem med policygradienter, nemlig oppdateringer som er for store og ødelegger policyen, ved å begrense hvor mye policyen kan endres per oppdatering.
Faren ved store oppdateringer
Én altfor stor policyoppdatering kan få ytelsen til å kollapse, og fordi RL er on-policy, er det vanskelig å hente seg inn igjen. PPO holder hver oppdatering proksimal (nær) den gjeldende policyen for å være på den sikre siden.
Sannsynlighetsforholdet
PPO følger med på forholdet mellom nye og gamle handlingssannsynligheter: ratio = pi_new(a|s) / pi_old(a|s). Et forhold nær 1 betyr at policyen nesten ikke endret seg, mens et forhold langt fra 1 betyr en stor endring.
ratio = torch.exp(new_log_prob - old_log_prob)Det klippede surrogatmålet
PPOs kjennetegn er det klippede surrogatmålet. Det multipliserer forholdet med advantage, men klipper forholdet til [1-eps, 1+eps], slik at motivasjonen til å endre policyen for mye fjernes.
clipped = torch.clamp(ratio, 1 - eps, 1 + eps)
objective = torch.min(ratio * adv, clipped * adv)
loss = -objective.mean()Klippegrensen epsilon
eps (vanligvis 0.2) er klippegrensen. Den begrenser hvor langt forholdet kan bevege seg fra 1, slik at policyoppdateringen forblir avgrenset og stabil selv når advantage er stor.
eps = 0.2 # allow at most +/-20% change in probabilityHvorfor min() og klipping fungerer
Ved å ta min av det klippede og det uklippede målet blir grensen pessimistisk: Forbedringer utover klippeområdet gir ingen ekstra belønning, så optimalisereren har ingen grunn til å gå for langt.
Generalisert advantage-estimering
PPO estimerer advantage med GAE, som kombinerer avkastning over flere steg ved hjelp av parameterne gamma og lambda. GAE balanserer skjevhet og varians for å gi jevne og pålitelige advantage-estimater.
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 advFlere epoker per batch
I motsetning til REINFORCE bruker PPO hver batch med innsamlede data på nytt i flere optimaliseringsepoker. Klippingen gjør dette trygt og forbedrer dataeffektiviteten betydelig.
for _ in range(n_epochs):
# recompute ratio and clipped loss on the same batch
optimizer.zero_grad()
loss.backward()
optimizer.step()PPO med Stable-Baselines3
I praksis skriver du sjelden PPO for hånd. Stable-Baselines3 tilbyr en utprøvd implementasjon. Opprett den med policytypen, miljøet og verbosity-innstillingen, og kall learn.
from stable_baselines3 import PPO
model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=100_000)Bruke den trente agenten
Etter treningen bruker du predict for å hente handlinger for nye observasjoner. Angi deterministic=True under evaluering for å velge den mest sannsynlige handlingen i stedet for å sample.
obs, _ = env.reset()
action, _ = model.predict(obs, deterministic=True)
model.save("ppo_agent")Hvorfor PPO dominerer
PPO kombinerer stabile klippede oppdateringer, GAE-advantage og gjenbruk av data til en robust og generell algoritme som fungerer på tvers av mange oppgaver med minimal justering. Derfor brukes den til alt fra robotikk til RLHF.
Kunnskapssjekk
Sjekk forståelsen din av PPO.
Oppsummering: PPO
Du har lært om PPOs klippede surrogatmål, som bruker sannsynlighets< strong>forholdet og en klippegrense eps for å begrense oppdateringer, GAE for å estimere advantage og gjenbruk av data over flere epoker. Du kjørte det enkelt med PPO("MlpPolicy", env, verbose=1) i Stable-Baselines3.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 53
- Leksjoner
- 225
Ofte stilte spørsmål
Er leksjonen «Proximal Policy Optimization (PPO)» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lær AI med Python, inkludert «Proximal Policy Optimization (PPO)», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Hva lærer jeg i «Proximal Policy Optimization (PPO)»?
Klippebasert surrogatmål, GAE-estimering av fordel og PPO med stable-baselines3. Du øver på Lær AI med Python med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Lær AI med Python?
Ingen tidligere erfaring er nødvendig. Lær AI med Python på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Proximal Policy Optimization (PPO)»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Lær AI med Python-leksjonen?
Ja. Alle Lær AI med Python-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Policy-gradientmetoder: REINFORCE
- Actor-critic-metoder (A2C)
- Proximal Policy Optimization (PPO)
- Egendefinerte Gymnasium-miljøer