Python Data Science Program
📓 Abrir notebook en GitHub

Clase 162 — Policy gradients

Parte: 2 — Deep Learning · Fuente: Géron, cap. 18 § Policy Gradients + Sutton & Barto, cap. 13. ⏱️ Duración estimada: 70 min.

🎯 Objetivo

Implementar policy gradientREINFORCE (Williams 1992)—: parametrizar la policy con una red neuronal π_θ(a|s), optimizar directamente la expected return via gradiente. Es el método más simple de RL que usa redes y la base conceptual de PPO/A2C/A3C (clase 138).

📚 Resultados de aprendizaje

Al finalizar, el estudiante podrá:

🗺️ Temas

📖 Definiciones y características

📂 Dataset / recursos

🧪 Ejercicios

  1. Policy network: Dense(32) → Dense(32) → Dense(2, softmax) para CartPole.
  2. Rollout: ejecutar 1 episodio, guardar (s, a, r) por timestep.
  3. Returns: calcular G_t para cada timestep con γ=0.99.
  4. Gradient step: loss = -Σ log π(a_t|s_t) · G_t; backward; apply.
  5. Con baseline: agregar V(s) head, restar de G antes del gradient.

📝 Homework verificable

REINFORCE en CartPole:

  1. Policy Dense(64) → Dense(64) → Dense(2, softmax).
  2. Train 500 episodios.
  3. Reportar return medio por época.
  4. Comparar con/sin baseline.

Criterio de aceptación: episode return llega a ≥ 195 (resuelto) en ≤ 300 episodios; baseline acelera convergencia.

⚠️ Errores comunes

Síntoma / mensaje Causa y cómo arreglar
Alta varianza en gradientes Inherente a REINFORCE. Fix: baseline, batch de varios episodios.
Policy collapse a una acción LR alto o sin entropy bonus. Fix: bajar LR, agregar -β · H(π) a la loss.
Recompensas muy chicas → updates débiles Normalizar G (mean=0, std=1) por episode.
Action probs nan Inputs sin normalizar + softmax. Fix: clip o normalizar inputs.
El env tiene rewards muy variables → entrenamiento inestable Probar con env más simple primero.

❓ Preguntas frecuentes

❓ ¿REINFORCE en producción?

Casi no — pero es la base. PPO es el default industrial moderno (clase 138).

❓ ¿On-policy o off-policy?

REINFORCE es on-policy (entrena con datos generados por la policy actual). Off-policy (DQN, SAC) reutiliza datos viejos.

❓ ¿Cómo elijo γ?

0.99 default. Más alto = más visión a largo plazo, pero más varianza. Para tareas episódicas cortas, 0.95-0.99.

❓ ¿Entropy regularization?

Agregar -β · H(π) a la loss promueve exploración (policy no determinística temprano). Estándar.

❓ ¿Cómo veo si converge?

Plot del return promedio por epoch (smoothed). Sube → converge.

🔗 Referencias

📥 Material descargable

➡️ Siguiente clase

Clase 163 — Markov Decision Processes