Optimización de política proximal (PPO)
Objetivo sustituto recortado, estimación de ventaja GAE y PPO con stable-baselines3.
Optimización de política proximal (PPO) es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Por qué PPO?
PPO es el algoritmo de RL de referencia en la actualidad: estable, eficiente en cuanto a muestras y fácil de ajustar. Resuelve un problema fundamental de los gradientes de política —las actualizaciones demasiado grandes que destruyen la política— al limitar cuánto puede cambiar la política en cada actualización.
El peligro de las actualizaciones grandes
Una sola actualización de la política, si es demasiado grande, puede hacer que el rendimiento se desplome y, como RL se basa en la política actual, la recuperación es difícil. PPO mantiene cada actualización proximal (cercana) a la política actual para evitar riesgos.
La razón de probabilidades
PPO realiza un seguimiento de la razón entre las probabilidades nuevas y antiguas de las acciones: ratio = pi_new(a|s) / pi_old(a|s). Una razón cercana a 1 significa que la política apenas cambió; una alejada de 1 significa que hubo un cambio importante.
ratio = torch.exp(new_log_prob - old_log_prob)El objetivo sustituto recortado
La característica distintiva de PPO es el objetivo sustituto recortado. Multiplica la razón por la ventaja, pero recorta la razón al intervalo [1-eps, 1+eps], eliminando el incentivo para alejar demasiado la política.
clipped = torch.clamp(ratio, 1 - eps, 1 + eps)
objective = torch.min(ratio * adv, clipped * adv)
loss = -objective.mean()El umbral de recorte epsilon
eps (normalmente 0.2) es el umbral de recorte. Limita cuánto puede alejarse la razón de 1, de modo que, incluso si la ventaja es grande, la actualización de la política se mantiene acotada y estable.
eps = 0.2 # allow at most +/-20% change in probabilityPor qué funcionan min() y el recorte
Tomar el min del objetivo recortado y el no recortado hace que el límite sea pesimista: las mejoras que superan el intervalo de recorte no proporcionan ninguna recompensa adicional, por lo que el optimizador no tiene motivos para excederse.
Estimación generalizada de la ventaja
PPO estima las ventajas con GAE, que combina retornos de varios pasos mediante los parámetros gamma y lambda. GAE equilibra el sesgo y la varianza para proporcionar estimaciones de la ventaja uniformes y fiables.
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 advVarios epochs por lote
A diferencia de REINFORCE, PPO reutiliza cada lote de datos recopilados durante varios epochs de optimización. El recorte hace que esto sea seguro y mejora considerablemente la eficiencia en el uso de muestras.
for _ in range(n_epochs):
# recompute ratio and clipped loss on the same batch
optimizer.zero_grad()
loss.backward()
optimizer.step()PPO con Stable-Baselines3
En la práctica, rara vez se programa PPO manualmente. Stable-Baselines3 proporciona una implementación probada. Créelo indicando el tipo de política, el entorno y el nivel de verbosidad; después, llame a learn.
from stable_baselines3 import PPO
model = PPO("MlpPolicy", env, verbose=1)
model.learn(total_timesteps=100_000)Uso del agente entrenado
Después del entrenamiento, use predict para obtener acciones para nuevas observaciones. Establezca deterministic=True durante la evaluación para elegir la acción más probable en lugar de tomar una muestra.
obs, _ = env.reset()
action, _ = model.predict(obs, deterministic=True)
model.save("ppo_agent")Por qué PPO predomina
PPO combina actualizaciones recortadas estables, ventajas GAE y reutilización de datos en un algoritmo robusto y general que funciona en muchas tareas con un ajuste mínimo, por lo que se utiliza en todo tipo de aplicaciones, desde la robótica hasta RLHF.
Comprobación rápida
Compruebe su comprensión de PPO.
Resumen: PPO
Aprendió el objetivo sustituto recortado de PPO, que utiliza la razón de probabilidades y un umbral de recorte eps para limitar las actualizaciones; también aprendió a usar GAE para estimar la ventaja y a reutilizar los datos durante varios epochs. Lo ejecutó fácilmente con PPO("MlpPolicy", env, verbose=1) en Stable-Baselines3.
Preguntas frecuentes
¿La lección «Optimización de política proximal (PPO)» es gratis?
Sí — el texto completo de «Optimización de política proximal (PPO)» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «Optimización de política proximal (PPO)»?
Objetivo sustituto recortado, estimación de ventaja GAE y PPO con stable-baselines3. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Optimización de política proximal (PPO)»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Métodos de gradiente de política: REINFORCE
- Métodos actor-crítico (A2C)
- Optimización de política proximal (PPO)
- Entornos personalizados de Gymnasium