Phase 10 - Lesson 09
IA Constitucional y Automejora
This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.
RLHF necesita humanos en el bucle. La IA Constitucional reemplaza a la mayoría de ellos con el propio modelo. Escribe una lista de principios, haz que el modelo critique sus propias salidas frente a esos principios y entrénalo con las críticas. DeepSeek-R1 llevó esto más lejos en 2025: permite que el modelo genere millones de trazas de razonamiento, califícalas con una regla y ejecuta GRPO en el resultado. La mayor parte del "trabajo de alineación" en un modelo de frontera de 2026 es la alineación del modelo mismo. Esta lección construye ambos bucles.
Type: Build Languages: Python (stdlib + numpy) Prerequisites: Phase 10, Lessons 06-08 (SFT, RLHF, DPO) Time: ~45 minutos
Objetivos de Aprendizaje
- Implementar el bucle de dos etapas de la IA Constitucional: autocrítica más autorrevisión, y luego entrenamiento de preferencia en los pares revisados
- Derivar el objetivo de GRPO (optimización de política relativa al grupo de DeepSeek-R1) y contrastarlo con la línea base de la función de valor de PPO
- Generar trazas de razonamiento verificables con recompensas de resultado basadas en reglas y calificarlas sin un modelo de recompensa separado
- Decidir cuándo la automejora supera a los datos de preferencia humana y cuándo colapsa en la búsqueda de modo (mode seeking)
El Problema
Construiste RLHF en la Lección 07 y DPO en la Lección 08. Ambos dependen de la misma entrada costosa: pares de preferencias humanas. El pipeline de la era InstructGPT de Anthropic utilizó aproximadamente 33,000 comparaciones. Llama 2 Chat utilizó más de 1.5 millones. Claude 3 utilizó más. Estos datos son lentos, costosos y están sesgados hacia lo que los anotadores creían el día en que realizaban la calificación.
El artículo de la IA Constitucional de 2022 planteó una pregunta simple. ¿Qué pasa si el modelo genera las etiquetas de preferencia por sí mismo? Dale una lista de principios escritos -- la "constitución" -- y haz que critique sus propias respuestas. Las críticas se convierten en la señal de entrenamiento.
En 2024, DeepSeek llevó la idea más lejos. Demostraron que para cualquier tarea con un resultado verificable (matemáticas con una respuesta conocida, código que pasa o falla las pruebas, un juego que se gana o se pierde), puedes omitir por completo al crítico. Genera muchas soluciones candidatas. Califica cada una con una regla determinista. Ejecuta un algoritmo de gradiente de política sobre las recompensas. DeepSeek-R1 se entrenó de esta manera con casi ningún dato de preferencia humana y alcanzó el rendimiento de razonamiento de la clase o1.
Estos dos bucles -- IA Constitucional para el comportamiento subjetivo y RL basado en reglas para el comportamiento verificable -- son las recetas de alineación dominantes de 2026. El presupuesto de preferencia humana que solía destinarse a RLHF ahora paga un paso mucho más pequeño: elegir la constitución y elegir las reglas de recompensa.
El Concepto
El Bucle de la IA Constitucional
Bai et al. (2022) estructuraron el pipeline en dos etapas.
Etapa 1: Aprendizaje Supervisado a partir de la Retroalimentación de la IA (SL-CAI). Comienza con un modelo SFT que sea útil pero posiblemente dañino. Solicítale peticiones potencialmente dañinas. Para cada respuesta, pídele al mismo modelo que critique su respuesta frente a un principio constitucional, y luego la revise. Realiza un ajuste fino en las respuestas revisadas. El conjunto de datos son pares (prompt, respuesta_revisada).
Etapa 2: Aprendizaje por Refuerzo a partir de la Retroalimentación de la IA (RLAIF). Muestra pares de respuestas. Pídele al modelo que juzgue cuál sigue mejor la constitución. Las preferencias por pares entrenan un modelo de recompensa. Luego ejecuta PPO o DPO en el modelo usando esa recompensa. La diferencia clave con respecto a RLHF: las preferencias provienen del modelo, no de humanos.
graph TD
subgraph SL["Stage 1: SL-CAI"]
P1["Prompt dañino"] --> R1["Respuesta inicial\n(posiblemente dañina)"]
R1 --> C1["Modelo critica\nfrente al principio"]
C1 --> REV["Modelo revisa\nrespuesta"]
REV --> SFT["SFT en\n(prompt, revisado)"]
end
subgraph RL["Stage 2: RLAIF"]
P2["Prompt"] --> S1["Muestra de respuesta A"]
P2 --> S2["Muestra de respuesta B"]
S1 --> J["Modelo juzga\nA vs B vía constitución"]
S2 --> J
J --> RM["Conjunto de datos de preferencia"]
RM --> TRAIN["Entrenamiento DPO / PPO"]
end
SL --> RL
style P1 fill:#1a1a2e,stroke:#e94560,color:#fff
style REV fill:#1a1a2e,stroke:#51cf66,color:#fff
style P2 fill:#1a1a2e,stroke:#e94560,color:#fff
style TRAIN fill:#1a1a2e,stroke:#51cf66,color:#fff
La constitución es la palanca. El original de Anthropic tenía 16 principios (luego expandido). Un principio se lee como "Por favor, elija la respuesta que tenga menos probabilidades de ser objetable para cualquier persona de una amplia variedad de orígenes culturales". Eliges el principio para cada paso, a veces al azar, a veces basado en la categoría del prompt.
Lo Que la Constitución Realmente Hace
La constitución mueve el contrato de alineación de los datos al texto. Cambiar el comportamiento bajo RLHF significa volver a etiquetar miles de pares. Cambiar el comportamiento bajo CAI significa editar un párrafo. Esta es la principal victoria práctica.
Tiene un costo. Los autojuicios del modelo son tan buenos como su calibración inicial. Si el modelo SFT tiene puntos ciegos -- por ejemplo, no puede reconocer el fraseo manipulador -- el paso de crítica heredará esos puntos ciegos. CAI comprime el bucle de alineación pero no puede amplificar la señal más allá del techo del modelo base. Es por eso que cada pipeline de CAI de producción todavía usa algunos datos de preferencia humana, típicamente del 5 al 10% del volumen del RLHF puro.
GRPO: Optimización de Política Relativa al Grupo
DeepSeek introdujo GRPO en el artículo DeepSeekMath (2024) y lo utilizó como la columna vertebral de DeepSeek-R1 (2025). GRPO es una variante de PPO que elimina la función de valor.
Recuerda el objetivo de PPO (de la Lección 07):
L_PPO = E[min(r(theta) * A, clip(r(theta), 1-eps, 1+eps) * A)]
donde A es la ventaja, típicamente estimada con GAE usando una red de valor aprendida V(s). La red de valor es un segundo modelo del mismo tamaño que la política. Duplica la memoria e introduce su propio bucle de entrenamiento.
GRPO descarta la función de valor. Para cada prompt, muestrea un grupo de G respuestas (típicamente G=16 o 64). Se calcula la recompensa para cada respuesta y luego se normaliza dentro del grupo:
A_i = (r_i - mean(r_1, ..., r_G)) / std(r_1, ..., r_G)
La ventaja es la puntuación z (z-score) de la recompensa de la respuesta en relación con sus hermanas. Sin función de valor. El grupo actúa como su propia línea base.
L_GRPO = E[min(r(theta) * A_group, clip(r(theta), 1-eps, 1+eps) * A_group)] - beta * KL(pi || pi_ref)
La penalización de KL contra el modelo de referencia sigue estando ahí, al igual que en PPO. La relación de recorte (clip ratio) sigue estando ahí. Lo que desaparece es el crítico independiente.
Por qué GRPO Importa para el Raciocinio
Para las tareas de razonamiento, la recompensa suele ser esparcida y binaria: la respuesta final es correcta o incorrecta. Una función de valor entrenada en recompensas binarias esparcidas es un desperdicio -- no puede aprender estimaciones intermedias útiles porque casi todos los estados tienen el mismo retorno esperado hasta el paso final. La normalización grupal de GRPO te brinda una señal relativa inmediata: entre 16 intentos en el mismo problema de matemáticas, ¿qué intentos estuvieron por encima del promedio para este problema?
Esta es la forma exacta de señal que obtienes de las recompensas basadas en reglas:
- Matemáticas: sympy o un comprobador simbólico decide si la respuesta final coincide.
- Código: una suite de pruebas decide si pasa o falla.
- Formato: una expresión regular (regex) decide si la respuesta está en la etiqueta XML requerida.
- Pruebas de varios pasos: un asistente de pruebas (Lean, Coq) decide la validez.
DeepSeek-R1-Zero se entrenó con solo dos recompensas: precisión en benchmarks de matemáticas y conformidad de formato (respuesta dentro de las etiquetas <answer>). Sin preferencias humanas. Sin modelo crítico. El "momento aha" que describió el artículo de DeepSeek -- el modelo aprendiendo espontáneamente a autoverificarse y retroceder (backtrack) -- surgió de GRPO únicamente sobre recompensas de reglas esparcidas.
Modelos de Recompensa de Proceso vs Modelos de Recompensa de Resultado
Aún tienes una opción de diseño: recompensar la respuesta final (Modelo de Recompensa de Resultado, ORM) o recompensar cada paso intermedio (Modelo de Recompensa de Proceso, PRM).
| Eje | ORM | PRM |
|---|---|---|
| Señal por traza | 1 número | N números (uno por paso) |
| Fuente de supervisión | Comprobación de respuesta final | Etiquetas a nivel de paso o autojuicio |
| Costo de entrenamiento | Barato | Costoso |
| Asignación de crédito | Esparcida, ruidosa | Densa, dirigida |
| Riesgo de hacking de recompensa | Menor | Mayor (el modelo optimiza artefactos de PRM) |
| Utilizado por | DeepSeek-R1, R1-Zero | OpenAI o1 (presuntamente), Math-Shepherd |
El consenso de 2024-2025 fue que los ORM más GRPO escalan mejor que los PRM. Los PRM son más eficientes en muestras por token pero requieren costosos datos etiquetados a nivel de paso y tienden a colapsar en comportamentos de atajo (escribir pasos que se ven bien para el PRM pero que no avanzan en la demostración). Para la mayoría de los equipos, ORM + GRPO es lo primero que se debe intentar.
Automejora: El Multiplicador de Retroalimentación
Una vez que tienes el patrón de dos bucles (crítica/revisión y RL relativo al grupo con recompensas de reglas), puedes encadenarlos.
- Comienza con un modelo SFT.
- Genera muchas respuestas candidatas por prompt.
- Califícalas con una recompensa basada en reglas (para tareas verificables) o un crítico constitucional (para tareas subjetivas).
- Conserva los mejores candidatos como nuevos datos SFT o como pares de preferencias.
- Realiza un ajuste fino. Ve al paso 2 con el modelo mejorado.
DeepSeek llamó a esto "ajuste fino por muestreo de rechazo" (rejection sampling fine-tuning) cuando se aplicó después de R1-Zero. Anthropic llamó a una versión anterior de esto "destilación de IA constitucional". El patrón es: cada iteración amplifica la señal que ya está en el modelo. No añade señal nueva. Si el modelo no puede resolver la clase de problema X en absoluto, ninguna cantidad de automejora creará esa capacidad.
El peligro es el colapso de modo (mode collapse). Los datos autogenerados siempre tienen una distribución más estrecha que el corpus de entrenamiento. Después de 3 a 5 rondas de autodestilación, los modelos típicamente pierden diversidad en tareas creativas, se vuelven demasiado confiados y muestran una "voz de IA" característica (frases repetidas, estructura formulada). Los pipelines de producción mezclan datos autogenerados con una pequeña fracción de datos humanos frescos para mantener la integridad de la distribución.
graph LR
M0["Modelo SFT v0"] --> G["Generar G respuestas\npor prompt"]
G --> S["Calificar con regla\no constitución"]
S --> F["Filtrar / clasificar"]
F --> T["Ajuste fino\n(SFT o GRPO)"]
T --> M1["Modelo SFT v1"]
M1 -.-->|iterar| G
H["Datos humanos\n(pequena fracción)"] --> T
style M0 fill:#1a1a2e,stroke:#e94560,color:#fff
style M1 fill:#1a1a2e,stroke:#51cf66,color:#fff
style H fill:#1a1a2e,stroke:#0f3460,color:#fff
Cuándo Usar Qué
- CAI Pura: Comportamiento subjetivo (tono, seguridad, estilo de rechazo). Tienes una constitución bien definida. No tienes resultados verificables claros.
- GRPO + ORM: Tareas verificables (matemáticas, código, extracción estructurada). Puedes comprobar la corrección de forma económica. La recompensa es esparcida y binaria.
- DPO en pares autogenerados: Híbrido. Utiliza la constitución para producir pares de preferencias y luego entrena con DPO (Lección 08) en lugar de PPO/GRPO.
- RLHF Completo: Sigue siendo adecuado cuando necesitas compensaciones de múltiples objetivos que ni una regla ni una constitución corta pueden expresar.
La mayoría de los pipelines de frontera de 2026 ejecutan los cuatro. CAI para capas de seguridad. GRPO para la fase de post-entrenamiento de razonamiento. DPO para el pulido de preferencias. Pequeñas fases de RLHF para comportamientos residuales que se resisten a los otros métodos.
Constrúyelo
El código implementa tres cosas en Python puro + numpy. Un bucle de autocrítica de IA Constitucional. Un comprobador de recompensa basado en reglas para aritmética simple. Un entrenador minimalista de GRPO que se ejecuta en un modelo de lenguaje diminuto de la Lección 04.
Paso 1: La Constitución
Una lista de principios. En producción, cada línea sería más rica y estaría etiquetada por categoría. Para la lección, mantenla corta.
CONSTITUTION = [
"The response must directly answer the question asked, without hedging.",
"The response must not include unnecessary filler or padding.",
"If the question has a single numeric answer, state the number plainly.",
"The response must not refuse a reasonable, benign request.",
]
Paso 2: Autocrítica y Revisión
En un sistema real, el propio modelo critica. En la lección simulamos un crítico con una rúbrica escrita a mano para que el pipeline se ejecute sin una llamada de LLM.
def critique(response: str, principle: str) -> dict:
problems = []
if len(response.split()) > 40 and "plainly" in principle:
problems.append("answer buried in extra prose")
if response.strip().lower().startswith(("i can't", "i cannot", "as an ai")):
problems.append("unwarranted refusal")
if response.count(",") > 4:
problems.append("too much hedging")
return {"principle": principle, "problems": problems}
def revise(response: str, critique_result: dict) -> str:
if "answer buried" in " ".join(critique_result["problems"]):
return response.split(".")[-2].strip() + "."
if "unwarranted refusal" in " ".join(critique_result["problems"]):
return "Here is the answer: " + response.split(":")[-1].strip()
return response
La función de revisión es un sustituto. Con un LLM real, sería un segundo prompt: "Dada la crítica, reescribe la respuesta."
Paso 3: Recompensas Basadas en Reglas
Para tareas verificables, reemplaza al crítico por completo. Este comprobador califica respuestas aritméticas.
import re
def reward_math(prompt: str, response: str) -> float:
try:
expected = eval(prompt.replace("What is ", "").replace("?", "").strip())
except Exception:
return 0.0
numbers = re.findall(r"-?\d+", response)
if not numbers:
return 0.0
return 1.0 if int(numbers[-1]) == expected else 0.0
def reward_format(response: str) -> float:
return 1.0 if re.search(r"<answer>.*</answer>", response) else 0.0
Dos reglas determinísticas. Sin datos de entrenamiento. Sin etiquetas humanas. La recompensa combinada es reward_math + 0.1 * reward_format, lo que penaliza la falta de formato sin silenciar la corrección.
Paso 4: Ventaja Relativa al Grupo
Dada una lista de recompensas para un grupo de respuestas al mismo prompt, calcula la puntuación z:
import numpy as np
def group_relative_advantage(rewards: list[float]) -> np.ndarray:
r = np.array(rewards, dtype=float)
if r.std() < 1e-8:
return np.zeros_like(r)
return (r - r.mean()) / (r.std() + 1e-8)
Si cada muestra del grupo tiene la misma recompensa, la ventaja es cero y no fluye señal de gradiente. Esto es una característica. Te dice que el prompt es trivialmente fácil o imposiblemente difícil para la política actual, y el paso debe omitirlo.
Paso 5: Actualización GRPO
Un paso, gradiente simbólico. En producción, esto sería una pasada de torch autograd. Aquí mostramos la regla de actualización directamente.
def grpo_step(policy_logprobs: np.ndarray, ref_logprobs: np.ndarray,
advantages: np.ndarray, beta: float = 0.01, clip_eps: float = 0.2) -> dict:
ratios = np.exp(policy_logprobs - ref_logprobs)
unclipped = ratios * advantages
clipped = np.clip(ratios, 1 - clip_eps, 1 + clip_eps) * advantages
policy_loss = -np.minimum(unclipped, clipped).mean()
kl = (ref_logprobs - policy_logprobs).mean()
total_loss = policy_loss + beta * kl
return {
"policy_loss": float(policy_loss),
"kl": float(kl),
"total_loss": float(total_loss),
"mean_ratio": float(ratios.mean()),
}
Este es el sustituto recortado de PPO con un cambio: las ventajas provienen de puntuaciones z relativas al grupo, no de una función de valor. No hay V(s) que entrenar. Sin GAE. El grupo es la línea base.
Paso 6: Ronda de Automejora
Une las piezas. Muestrea un grupo, califica cada respuesta con la regla, calcula las ventajas e informa las métricas que alimentarías en un optimizador real.
def self_improvement_round(prompts: list[str], policy_sampler, group_size: int = 8) -> dict:
metrics = []
for prompt in prompts:
responses = [policy_sampler(prompt) for _ in range(group_size)]
rewards = [reward_math(prompt, r) + 0.1 * reward_format(r) for r in responses]
advantages = group_relative_advantage(rewards)
best = responses[int(np.argmax(rewards))]
metrics.append({
"prompt": prompt,
"mean_reward": float(np.mean(rewards)),
"best_reward": float(np.max(rewards)),
"std_reward": float(np.std(rewards)),
"best_response": best,
"advantages": advantages.tolist(),
})
return {"per_prompt": metrics,
"overall_mean": float(np.mean([m["mean_reward"] for m in metrics]))}
Úsalo
Ejecutar code/main.py ejecuta ambos bucles de extremo a extremo. El bucle CAI produce un pequeño conjunto de pares (inicial, revisado) sobre los que podrías realizar un ajuste fino. El bucle GRPO produce estadísticas de recompensa por prompt para problemas aritméticos, mostrando cómo las ventajas relativas al grupo permiten que un muestreador débil mejore sin una función de valor o etiquetas humanas.
Los números no son el punto. En una ejecución real con un modelo entrenado, la media de la recompensa debería subir a lo largo de las rondas, la desviación estándar de la recompensa debería mantenerse positiva (si colapsa a cero, la política ha sufrido un colapso de modo y deberías detenerte), y la KL con respecto a la referencia debería crecer lentamente. Esas tres curvas -- media de recompensa hacia arriba, desviación estándar estable, KL acotada -- son la verificación de estado en producción para un pipeline GRPO o CAI.
Envíalo
Esta lección produce outputs/skill-self-improvement-auditor.md. Aliméntalo con una propuesta de pipeline de automejora y aplicará las puertas no negociables: una regla de recompensa que sea realmente verificable, un presupuesto de KL contra la referencia, un piso de diversidad y una cuota de datos humanos. Se niega a aprobar un bucle que afirme ser "pura automejora" sin ningún fundamento externo.
Ejercicios
Reemplaza al crítico codificado a mano en el Paso 2 con una llamada de LLM. Utiliza cualquier modelo de chat local. Mide con qué frecuencia la crítica y la revisión realmente mejoran la respuesta en lugar de dejarla sin cambios.
Añade un tercer principio constitucional sobre la factualidad. Ejecuta el pipeline en prompts que requieran afirmaciones factuales (capitales, fechas) y mide cuántas revisiones eliminan errores factuales en lugar de introducir nuevos errores.
Implementa DPO en los pares de preferencias producidos por la etapa 2 de CAI. Toma 20 prompts, genera dos respuestas para cada uno, haz que el crítico elija un ganador por par y luego ejecuta la pérdida de DPO de la Lección 08. Compara con la ruta de GRPO en los mismos datos.
Añade regularización de entropía al objetivo de GRPO. El término
-alpha * entropy(policy)con alpha=0.01 fomenta un muestreo diverso. Mide si retrasa el colapso de modo a lo largo de 5 rondas de automejora.Construye un calificador de recompensa de proceso para un problem aritmético de dos pasos. Dado "¿Cuánto es (3+4)*5?", el modelo debe mostrar el paso intermedio 3+4=7. Califica el paso intermedio por separado de la respuesta final y compara GRPO ponderado por PRM con GRPO ponderado únicamente por ORM a lo largo de 10 rondas.
Términos Clave
| Término | Lo que dice la gente | Lo que realmente significa |
|---|---|---|
| IA Constitucional | "El modelo se alinea a sí mismo" | Un pipeline de dos etapas (autocrítica + RLAIF) que reemplaza la mayoría de las etiquetas de preferencias humanas con autojuicios del modelo frente a una constitución escrita |
| RLAIF | "RLHF sin humanos" | Aprendizaje por Refuerzo a partir de la Retroalimentación de la IA (Reinforcement Learning from AI Feedback) -- PPO o DPO sobre preferencias generadas por el propio modelo |
| GRPO | "PPO sin función de valor" | Optimización de Política Relativa al Grupo (Group-Relative Policy Optimization) -- muestrea G respuestas por prompt, usa recompensas grupales con puntuación z como ventajas |
| ORM | "Recompensar la respuesta" | Modelo de Recompensa de Resultado (Outcome Reward Model) -- una única recompensa escalar solo en la respuesta final |
| PRM | "Recompensar cada paso" | Modelo de Recompensa de Proceso (Process Reward Model) -- recompensa en cada paso intermedio de razonamiento, a menudo entrenado a partir de datos etiquetados a nivel de paso |
| Recompensa basada en reglas | "Calificador determinista" | Un verificador (regex, sympy, suite de pruebas) que devuelve una puntuación binaria o numérica sin un modelo entrenado |
| Ajuste fino por muestreo de rechazo | "Quedarse con los ganadores, reentrenar" | Muestrea muchas respuestas, filtra las de mayor recompensa, añádelas a los datos SFT, reentrena |
| Colapso de modo | "El modelo dejó de ser diverso" | La política posterior al entrenamiento se concentra en una región estrecha del espacio de respuestas; medido como la caída de la desviación estándar de la recompensa en un grupo |
| Presupuesto de KL | "Qué tan lejos te puedes desviar" | La divergencia KL total del modelo de referencia que el optimizador puede acumular antes de que se detenga el entrenamiento |
| Momento R1 | "El modelo aprendió a retroceder" | El comportamiento informado por DeepSeek donde una política entrenada solo con recompensas de resultado desarrolló espontáneamente autoverificación y retroceso (backtracking) en su cadena de pensamiento |
Lectura Adicional
- Bai et al., 2022 -- "Constitutional AI: Harmlessness from AI Feedback" -- el artículo original de CAI de Anthropic con el pipeline de dos etapas SL-CAI + RLAIF
- Shao et al., 2024 -- "DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models" -- introduce GRPO
- DeepSeek-AI, 2025 -- "DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning" -- R1 y R1-Zero, GRPO + recompensas de reglas a escala
- Lightman et al., 2023 -- "Let's Verify Step by Step" -- PRM800K de OpenAI y el caso de los modelos de recompensa de proceso
- Wang et al., 2024 -- "Math-Shepherd: Verify and Reinforce LLMs Step-by-step without Human Annotations" -- PRM autoetiquetado mediante rollouts de Monte Carlo
- Huang et al., 2024 -- "Large Language Models Cannot Self-Correct Reasoning Yet" -- el contraponto escéptico sobre la automejora sin fundamento externo