$ cd ../
Deep RL — Policy Gradients: REINFORCE vs PPO — bash

user@devops:~$ cat README.md

Deep RL — Policy Gradients: REINFORCE vs PPO

# Descripción

Dos familias de algoritmos de policy gradient implementadas desde cero en PyTorch puro (sin stable-baselines3 ni rllib) y comparadas sobre CartPole-v1 de Gymnasium. REINFORCE con baseline (Williams 1992) actualiza la política con el gradiente de log π(a|s) · (G_t − V(s_t)) usando el retorno completo de cada episodio y la función de valor como baseline para reducir varianza. PPO (Schulman et al. 2017), el estándar moderno de RL, estima ventajas con GAE(λ=0.95), recorta el ratio de la política a [1−ε, 1+ε] con su objective clipped, añade bonus de entropía para exploración, entrena 4 épocas de minibatches por rollout y recolecta datos con 4 entornos paralelos. Ambos comparten la misma red MLP 64-64 (cabezas de política softmax y valor) y el mismo umbral de solved (reward medio ≥ 475): REINFORCE resuelve en 85 129 env steps (1450 episodios, 104.5s) y PPO en 51 200 env steps (iteración 25, 24.3s) — PPO es 4.3x más rápido en wall-clock y 1.66x más eficiente en muestras. Hallazgos: la alta varianza de REINFORCE provoca colapsos periódicos del rendimiento (eval de 235 a 50 entre los episodios 1200-1250) que PPO evita gracias al clipping; la clip fraction de PPO alcanza el 39.8% en las primeras iteraciones y cae al estabilizarse. 9 visualizaciones: curvas de aprendizaje (raw + EMA), evaluación final, entropía de la política, diagnóstico interno de PPO (policy loss, value loss, clip fraction), probabilidades de acción en un episodio (antes vs después de entrenar), distribución estocástica de returns, ventajas GAE (iteración 1 vs entrenada) y tabla resumen.

# Características principales

$ REINFORCE con baseline desde cero: gradiente de log π(a|s) · (G_t − V(s)) con el retorno completo del episodio

$ PPO desde cero: objective clipped [1−ε, 1+ε], GAE(λ=0.95), bonus de entropía, minibatches y 4 entornos paralelos

$ Misma red compartida (MLP 64-64, cabezas de política softmax + valor) e hiperparámetros base para comparación justa

$ Ambos resuelven CartPole-v1 (reward ≥ 475): REINFORCE en 85 129 steps / 104.5s, PPO en 51 200 steps / 24.3s

$ PPO 4.3x más rápido en wall-clock y 1.66x más eficiente en muestras que REINFORCE

$ Evaluación final ~500 en ambos (greedy); distribución estocástica de returns en histograma

$ 9 visualizaciones: curvas de aprendizaje, entropía, pérdidas + clip fraction de PPO, probs de acción, ventajas GAE, tabla resumen

$ Sin stable-baselines3 ni rllib: todo el pipeline en PyTorch puro sobre Gymnasium

# Galería

Terminal del proyecto
Deep RL — Policy Gradients: REINFORCE vs PPO - Terminal del proyecto
Curvas de aprendizaje: REINFORCE vs PPO
Deep RL — Policy Gradients: REINFORCE vs PPO - Curvas de aprendizaje: REINFORCE vs PPO
Evaluación final
Deep RL — Policy Gradients: REINFORCE vs PPO - Evaluación final
Entropía de la política (exploración)
Deep RL — Policy Gradients: REINFORCE vs PPO - Entropía de la política (exploración)
Diagnóstico interno de PPO
Deep RL — Policy Gradients: REINFORCE vs PPO - Diagnóstico interno de PPO
Probabilidades de acción en un episodio
Deep RL — Policy Gradients: REINFORCE vs PPO - Probabilidades de acción en un episodio
Distribución de returns
Deep RL — Policy Gradients: REINFORCE vs PPO - Distribución de returns
Ventajas GAE: iter 1 vs entrenada
Deep RL — Policy Gradients: REINFORCE vs PPO - Ventajas GAE: iter 1 vs entrenada
Tabla resumen comparativa
Deep RL — Policy Gradients: REINFORCE vs PPO - Tabla resumen comparativa

# Tecnologías utilizadas

Python PyTorch Gymnasium NumPy scikit-learn Matplotlib