proximal policy optimization
En policy-gradient-algoritme der stabiliserer træning ved at begrænse opdateringernes størrelse til et lille område omkring den nuværende policy.
Kort fortalt
En metode til at lære en agent at handle optimalt ved at tage små, forsigtige skridt i retning af bedre adfærd.
- Kategori
- træning
- Niveau
- øvet
Betydninger
1- 1
En policy-gradient-metode i reinforcement learning der bruger en klippet surrogate objektivfunktion for at forhindre for store policy-opdateringer, hvilket gør træningen mere stabil.
- PPO blev brugt til at træne OpenAI's agent i Dota 2. — OpenAI, 2018
- Det klippede objektiv i PPO forhindrer destruktive store opdateringer. — Schulman et al., 2017
Hvornår bruges det
PPO bruges i reinforcement learning, især når man træner neurale netværk til robotstyring, spil eller dialogmodeller, og det er kendt for at være pålideligt og nemt at implementere.
Formel
L^CLIP(θ) = E_t[ min(r_t(θ) A_t, clip(r_t(θ), 1-ε, 1+ε) A_t) ] hvor r_t(θ) = π_θ(a_t|s_t) / π_θ_old(a_t|s_t)Kodeeksempel
import torch
def ppo_update(policy, old_policy, states, actions, advantages, epsilon=0.2):
# Compute probability ratio
log_probs = policy.log_prob(states, actions)
old_log_probs = old_policy.log_prob(states, actions)
ratio = torch.exp(log_probs - old_log_probs)
# Clipped objective
surr1 = ratio * advantages
surr2 = torch.clamp(ratio, 1 - epsilon, 1 + epsilon) * advantages
loss = -torch.min(surr1, surr2).mean()
# Gradient step
optimizer.zero_grad()
loss.backward()
optimizer.step()Kort eksempel på PPO-opdatering med klippet objektiv i PyTorch.
Oprindelse
Ordet 'proximal' betyder nærliggende; her refererer det til at opdateringen holdes tæt på den gamle policy. Introduceret af Schulman et al. i 2017.