Phase 09 - Lesson 12

RL para Juegos — AlphaZero, MuZero y la Era del Razonamiento de LLMs

This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.

1992: TD-Gammon venció a campeones humanos en el backgammon con TD puro. 2016: AlphaGo venció a Lee Sedol. 2017: AlphaZero dominó el ajedrez, shogi y Go desde cero. 2024: DeepSeek-R1 demostró que la misma receta, con GRPO reemplazando a PPO, funciona para el razonamiento. Los juegos son el benchmark que impulsa cada avance en esta fase.

Tipo: Build Lenguajes: Python Prerrequisitos: Phase 9 · 05 (DQN), Phase 9 · 08 (PPO), Phase 9 · 09 (RLHF), Phase 9 · 10 (MARL) Tiempo: ~120 minutos

El Problema

Los juegos tienen todo lo que RL desea. Recompensa limpia (victoria/derrota). Episodios infinitos (reinicializaciones de auto-juego). Simulación perfecta (el juego es el simulador). Espacios de acción discretos o continuos pequeños. Estructura multiagente que fuerza la robustez adversarial.

Y los juegos son cómo se probó cada gran avance de RL. TD-Gammon (backgammon, 1992). Atari-DQN (2013). AlphaGo (2016). AlphaZero (2017). OpenAI Five (Dota 2, 2019). AlphaStar (StarCraft II, 2019). MuZero (modelo aprendido, 2019). AlphaTensor (multiplicación de matrices, 2022). AlphaDev (algoritmos de ordenación, 2023). DeepSeek-R1 (razonamiento matemático, 2025) — la demostración más reciente de que las técnicas de RL para juegos funcionan en texto.

Este proyecto final examina las tres arquitecturas históricas — AlphaZero, MuZero y GRPO — a través de una única perspectiva unificadora: auto-juego + búsqueda + mejora de políticas. Cada una generaliza la anterior; GRPO, en particular, es la receta de AlphaZero aplicada al razonamiento de LLMs, con tokens como acciones y la verificación matemática como señal de victoria.

El Concepto

AlphaZero ↔ MuZero ↔ GRPO: mismo bucle, diferentes entornos

El bucle unificador.

while True:
    trajectory = self_play(current_policy, search)     # play game against self
    policy_target = search.improved_policy(trajectory) # search improves raw policy
    policy_net.update(policy_target, value_target)     # supervised on search output

AlphaZero (2017). Silver et al. Dado un juego (ajedrez, shogi, Go) con reglas conocidas:

  • Red de política-valor: una torre f_θ(s) → (p, v). p es un prior sobre movimientos legales. v es el resultado esperado del juego.
  • Búsqueda en Árbol de Monte Carlo (MCTS): en cada movimiento, expande un árbol de posibles continuaciones. Usa (p, v) como el prior + bootstrap. Selecciona nodos por UCB (PUCT): a* = argmax Q(s, a) + c · p(a|s) · √N(s) / (1 + N(s, a)).
  • Auto-juego: juega partidas agente-contra-agente. En el movimiento t, la distribución de visitas de MCTS π_t se convierte en el objetivo de entrenamiento de la política.
  • Pérdida: L = (v - z)² - π · log p + c · ||θ||². z es el resultado del juego (+1 / 0 / -1).

Cero conocimiento humano. Cero heurísticas diseñadas a mano. Una única receta que dominó el ajedrez, shogi y Go después de unas pocas decenas de millones de partidas de auto-juego cada uno.

MuZero (2019). Schrittwieser et al. Elimina el requisito de que las reglas sean conocidas.

  • En lugar de un entorno fijo, aprende un modelo de dinámica latente (h, g, f):
    • h(s): codifica la observación en un estado latente.
    • g(s_latent, a): predice el siguiente estado latente + recompensa.
    • f(s_latent): predice el prior de la política + valor.
  • MCTS se ejecuta en el espacio latente aprendido. Misma búsqueda, mismo bucle de entrenamiento.
  • Funciona en Go, ajedrez, shogi y Atari: un solo algoritmo, sin conocimiento de las reglas.

Stochastic MuZero (2022). Agrega dinámica estocástica y nodos de azar; se extiende a juegos de la clase del backgammon.

Muesli, Gumbel MuZero (2022-2024). Mejoras en la eficiencia de muestreo y búsqueda determinista.

GRPO (2024-2025). Receta de DeepSeek-R1. Mismo bucle con estructura estilo AlphaZero, aplicado al razonamiento de modelos de lenguaje:

  • "Juego": responder a un problema de matemáticas / programación / razonamiento. "Victoria" = el verificador (el caso de prueba pasa, la respuesta numérica coincide) devuelve 1.

  • Política: el LLM. Acciones: tokens. Estado: prompt + respuesta hasta el momento.

  • Sin crítico (estilo PPO V_φ). En su lugar, para cada prompt, se muestran G completaciones de la política. Se calcula la recompensa para cada una. Usa la ventaja relativa al grupo A_i = (r_i - mean_r) / std_r como señal para la actualización al estilo REINFORCE.

  • Penalización KL respecto a la política de referencia para evitar el desvío (como en RLHF).

  • Pérdida completa:

    L_GRPO(θ) = -E_{q, {o_i}} [ (1/G) Σ_i A_i · log π_θ(o_i | q) ] + β · KL(π_θ || π_ref)

Sin modelo de recompensa, sin crítico, sin MCTS. La línea de base relativa al grupo reemplaza a los tres. Iguala o supera la calidad de PPO-RLHF en benchmarks de razonamiento con una fracción del cómputo.

La receta de R1 al completo. DeepSeek-R1 (DeepSeek 2025) son dos modelos en un mismo artículo:

  • R1-Zero. Comienza desde el modelo base DeepSeek-V3. Sin SFT. Aplica GRPO directamente con dos componentes de recompensa: recompensa de precisión (basada en reglas — ¿se analizó la respuesta final al número correcto? / ¿pasó el código las pruebas unitarias?) y recompensa de formato (¿envolvió la completación su cadena de pensamiento en las etiquetas <think>…</think>?). A lo largo de miles de pasos, la longitud promedio de la respuesta crece de ~100 a ~10,000 tokens y las puntuaciones en benchmarks de matemáticas suben a niveles cercanos a o1-preview. El modelo aprende a razonar desde cero. La desventaja: sus cadenas de pensamiento a menudo son ilegibles, mezclan idiomas y carecen de pulido estilístico.
  • R1. Corrige los problemas de legibilidad de R1-Zero con un pipeline de cuatro etapas:
    1. SFT de arranque en frío (Cold-start). Recopila unos pocos miles de demostraciones de CoT larga con un formato limpio. Aplica ajuste fino supervisado (SFT) al modelo base con ellas. Esto proporciona un punto de partida legible.
    2. GRPO orientado al razonamiento. Aplica GRPO con las recompensas de precisión+formato más una recompensa de consistación de idioma (language-consistency) para evitar la alternancia de código (code-switching).
    3. Muestreo de rechazo + SFT ronda 2. Muestra ~600K trayectorias de razonamiento del checkpoint de RL, conserva solo aquellas con respuestas finales correctas y CoT legible, y las combina con ~200K ejemplos de SFT que no son de razonamiento (escritura, preguntas y respuestas, autoconocimiento). Ajusta finamente el modelo base de nuevo.
    4. GRPO de espectro completo. Una ronda más de RL que cubre tanto el razonamiento (recompensas basadas en reglas) como la alineación general (recompensas basadas en preferencias de utilidad/inocuidad).

El resultado iguala a o1 en AIME y MATH-500 en pesos abiertos, y es lo suficientemente pequeño como para destilarse. El mismo artículo también lanza seis modelos densos destilados (Qwen-1.5B a través de Llama-70B) mediante SFT en las trazas de razonamiento de R1, sin RL en el estudiante. La destilación de un maestro de RL fuerte supera consistentemente al RL desde cero a la escala del estudiante.

Por qué GRPO en lugar de PPO para el razonamiento. Tres razones en el artículo de DeepSeekMath (feb. 2024): (1) no hay red de valor que entrenar, lo que reduce la memoria a la mitad; (2) la línea de base grupal maneja de forma natural la recompensa dispersa al final de la trayectoria que producen las tareas de razonamiento; (3) la normalización por prompt hace que las ventajas sean comparables en problemas de dificultades sumamente diferentes, algo que el crítico único de PPO no puede lograr.

Libre de búsqueda vs basado en búsqueda. Los juegos se han bifurcado:

  • Juegos de información perfecta con horizontes largos (Go, ajedrez): siguen basados en búsqueda. AlphaZero / MuZero dominan.
  • Razonamiento de LLM: todavía no hay MCTS en producción; GRPO en rollouts completos, best-of-N para cómputo de inferencia. Los modelos de recompensa de proceso (PRM) insinúan que se está volviendo a agregar la búsqueda a nivel de pasos.

Constrúyelo

El código en code/main.py implementa GRPO en miniatura: un bandit con múltiples grupos de muestras. El algoritmo es el mismo que en un LLM; solo la política y el entorno son más simples. Enseña la pérdida y la ventaja relativa al grupo, que es la innovación de 2025.

Paso 1: un entorno verificador diminuto

QUESTIONS = [
    {"prompt": "q1", "correct": 3},
    {"prompt": "q2", "correct": 1},
]

def verify(prompt_idx, answer_token):
    return 1.0 if answer_token == QUESTIONS[prompt_idx]["correct"] else 0.0

En el GRPO real, el verificador ejecuta pruebas unitarias o comprueba la igualdad matemática.

Paso 2: política: softmax sobre K tokens de respuesta por prompt

def policy_probs(theta, p_idx):
    return softmax(theta[p_idx])

Equivalente a la salida de la última capa de un LLM condicionado a un prompt.

Paso 3: muestreo de grupo y ventaja relativa al grupo

def grpo_step(theta, p_idx, G=8, beta=0.01, lr=0.1, rng=None):
    probs = policy_probs(theta, p_idx)
    samples = [sample(probs, rng) for _ in range(G)]
    rewards = [verify(p_idx, s) for s in samples]
    mean_r = sum(rewards) / G
    std_r = stddev(rewards) + 1e-8
    advs = [(r - mean_r) / std_r for r in rewards]

    for a, A in zip(samples, advs):
        grad = onehot(a) - probs
        for i in range(len(probs)):
            theta[p_idx][i] += lr * A * grad[i]
    # KL penalty: pull theta toward reference
    for i in range(len(probs)):
        theta[p_idx][i] -= beta * (theta[p_idx][i] - reference[p_idx][i])

La ventaja relativa al grupo es el truco de DeepSeek de 2024. No se necesita crítico. La "línea de base" es la media del grupo, y la normalización utiliza la desviación estándar del grupo.

Paso 4: comparar con la línea de base de REINFORCE (libre de valor)

Misma configuración, mismo cómputo, REINFORCE simple. GRPO converge más rápido y de manera más estable.

Paso 5: observar la entropía y KL

Mismos diagnósticos que en RLHF: KL promedio respecto a la referencia, entropía de la política, recompensa a lo largo del tiempo. Una vez que se estabilizan, el entrenamiento ha terminado.

Errores Comunes (Pitfalls)

  • Hackeo de recompensa (Reward hacking) mediante la manipulación del verificador. GRPO herda el riesgo de RLHF: si el verificador es erróneo o explotable, el LLM encontrará la forma de aprovecharlo. Los verificadores robustos (múltiples casos de prueba, pruebas formales) son importantes.
  • Tamaño de grupo demasiado pequeño. La varianza de la línea de base del grupo se comporta como 1/√G. Por debajo de G = 4, la señal de ventaja es ruidosa; la opción estándar es G = 8 a 64.
  • Sesgo de longitud. Las completaciones de LLM de diferentes longitudes tienen diferentes log-probabilidades. Se debe normalizar por cantidad de tokens, usar log-prob a nivel de secuencia o truncar a la longitud máxima.
  • Bucles puros de auto-juego. El entrenamiento al estilo AlphaZero puede quedar atrapado en bucles de dominancia en juegos de suma general. Se mitiga mediante conjuntos diversos de oponentes (juego de liga, Lección 10).
  • Incompatibilidad entre búsqueda y política. AlphaZero entrena la política para imitar la salida de la búsqueda. Si la red de política es demasiado pequeña para representar la distribución de la búsqueda, el entrenamiento se estanca.
  • Piso computacional mínimo. MuZero / AlphaZero requieren un cómputo masivo. Una sola ablación suele requerir cientos de horas-GPU. Existen demostraciones en miniatura (por ejemplo, AlphaZero en Conecta Cuatro) para el aprendizaje.
  • Cobertura del verificador. Las pruebas unitarias que pasan para una solución con errores refuerzan el error. Diseñe verificadores que detecten casos extremos.

Úsalo

El panorama de RL para juegos en 2026, por dominio:

Dominio Método dominante
Juegos de tablero de suma cero para dos jugadores (Go, ajedrez, shogi) AlphaZero / MuZero / KataGo
Juegos de cartas con información imperfecta (póker) CFR + aprendizaje profundo (DeepStack, Libratus, Pluribus)
Atari / juegos de píxeles Muesli / MuZero / IMPALA-PPO
Estrategia multijogador a gran escala (Dota, StarCraft) PPO + auto-juego + liga (OpenAI Five, AlphaStar)
Razonamiento matemático/código de LLM GRPO (DeepSeek-R1, Qwen-RL, réplicas abiertas)
Alineación de LLM DPO / RLHF-PPO (no GRPO; el verificador es de preferencia, no verificable)
Robótica PPO + DR (no es RL de juegos, pero utiliza las mismas herramientas de gradiente de política)
Problemas combinatorios Variantes de AlphaZero (AlphaTensor, AlphaDev)

La receta — auto-juego, mejora aumentada por búsqueda, destilación de políticas — abarca texto, píxeles y control físico. GRPO es la variante más joven; vienen más en camino.

Entrégalo

Guárdalo como outputs/skill-game-rl-designer.md:

---
name: game-rl-designer
description: Design a game-RL or reasoning-RL training pipeline (AlphaZero / MuZero / GRPO) for a given domain.
version: 1.0.0
phase: 9
lesson: 12
tags: [rl, alphazero, muzero, grpo, self-play]
---

Given a target (perfect-info game / imperfect-info / Atari / LLM reasoning / combinatorial), output:

1. Environment fit. Known rules? Markov? Stochastic? Multi-agent? Informs AlphaZero vs MuZero vs GRPO.
2. Search strategy. MCTS (PUCT with learned prior), Gumbel-sampled, best-of-N, or none.
3. Self-play plan. Symmetric self-play / league / offline data / verifier-generated.
4. Target signal. Game outcome / verifier reward / preference / learned model. Include robustness plan.
5. Diagnostics. Win rate vs baseline, ELO curve, verifier pass rate, KL to reference.

Refuse AlphaZero on imperfect-info games (route to CFR). Refuse GRPO without a trusted verifier. Refuse any game-RL pipeline without a fixed baseline opponent set (self-play ELO is uncalibrated otherwise).

Ejercicios

  1. Fácil. Implementa el bandit de GRPO en code/main.py. Entrena en 2 prompts × 4 tokens de respuesta cada uno. Debe converger en < 1,000 actualizaciones con G=8.
  2. Medio. Integra PPO (recortado/clipped) y REINFORCE estándar. Compara la eficiencia de muestreo y la varianza de la recompensa con GRPO en el mismo bandit.
  3. Difícil. Extiéndelo a una "cadena de razonamiento" de longitud 2: el agente emite dos tokens y el verificador recompensa al par. Mide cómo maneja GRPO la asignación de créditos en secuencias de dos pasos. (Sugerencia: calcula la ventaja grupal por secuencia completa, propágala a ambas posiciones de tokens).

Términos Clave

Término Lo que dice la gente Lo que realmente significa
MCTS "Búsqueda en árbol con red aprendida" Búsqueda en Árbol de Monte Carlo; selección UCB1/PUCT con priors (p, v) aprendidos.
AlphaZero "Auto-juego + MCTS" Red de política-valor entrenada para coincidir con las visitas de MCTS y el resultado del juego.
MuZero "AlphaZero con modelo aprendido" Mismo bucle pero en el espacio latente a través de dinámicas aprendidas.
GRPO "PPO sin crítico" Group Relative Policy Optimization; REINFORCE con línea de base de la media del grupo + KL.
PUCT "El UCB de AlphaZero" Q + c · p · √N / (1 + N_a) — equilibra la estimación del valor con el prior.
Auto-juego "Agente contra su versión anterior" Estándar para suma cero; señal de entrenamiento simétrica.
Juego de liga "Auto-juego basado en población" Versiones pasadas + actual + explotadores muestreados como oponentes.
Recompensa del verificador "RL verificable" La recompensa proviene de un comprobador determinista (pasan las pruebas, la respuesta coincide).
Recompensa de proceso "PRM" Evalúa cada paso del razonamiento, no solo la respuesta final.

Lecturas Adicionales

0 lifetime access. Curriculum based on AI Engineering from Scratch by Rohit Ghumare (MIT, used under attribution).