Phase 09 - Lesson 10
RL Multiagente
This lesson includes a graded coding exercise that runs in your browser, unlocked with lifetime access.
El RL de agente único asume que el entorno es estacionario. Si se colocan dos agentes de aprendizaje en el mismo mundo, esa suposición se rompe: cada agente es parte del entorno del otro, y ambos están cambiando. El RL multiagente es el conjunto de trucos para lograr que el aprendizaje converja cuando la suposición de Markov ya no se cumple.
Tipo: Build Idiomas: Python Prerrequisitos: Phase 9 · 04 (Q-learning), Phase 9 · 06 (REINFORCE), Phase 9 · 07 (Actor-Critic) Tiempo: ~45 minutos
El Problema
Un robot que aprende a navegar por una habitación es un problema de RL de agente único. Un equipo de fútbol no lo es. AlphaStar vs oponentes de StarCraft no lo es. Un mercado de agentes de pujas no lo es. Dos autos que negocian una parada de cuatro vías no lo es. Muchos problemas de la vida real de muchos a muchos no lo son.
En cada escenario multiagente, desde la perspectiva de cualquier agente individual, los otros agentes son parte del entorno. A medida que aprenden y cambian su comportamiento, el entorno se vuelve no estacionario. La propiedad de Markov — "el próximo estado depende solo del estado actual y de mi acción" — se viola porque el próximo estado también depende de lo que eligieron los otros agentes, y sus políticas son objetivos móviles.
Esto rompe las pruebas de convergencia tabulares (la garantía de Q-learning asume un entorno estacionario). También rompe el RL profundo ingenuo: los agentes se persiguen entre sí en bucles, sin converger nunca a una política estable. Se necesitan técnicas específicas para multiagentes: entrenamiento centralizado / ejecución descentralizada, líneas de base contrafácticas, league play, self-play.
Aplicaciones para 2026: enjambres de robots, enrutamiento de tráfico, flotas de vehículos autónomos, simuladores de mercado, sistemas LLM multiagente (Phase 16) y cualquier juego con más de un jugador inteligente.
El Concepto
Formalism: Markov Game. Una generalización de MDP: estados S, una acción conjunta a = (a_1, …, a_n), transición P(s' | s, a) y recompensas por agente R_i(s, a, s'). Cada agente i maximiza su propio retorno bajo su propia política π_i. Si las recompensas son idénticas, es totalmente cooperativo. Si es de suma cero, es adversario. Si es mixto, es de suma general.
Desafíos principales:
- No estacionariedad.
P(s' | s, a_i)desde la perspectiva del agenteidepende deπ_{-i}, que está cambiando. - Asignación de crédito. Con una recompensa compartida, ¿qué agente la causó?
- Coordinación de la exploración. Los agentes deben explorar estrategias complementarias, no explorar de forma redundante el mismo estado.
- Escalabilidad. El espacio de acción conjunta crece exponencialmente en
n. - Observabilidad parcial. Cada agente ve solo su propia observación; el estado global está oculto.
Cuatro regímenes dominantes:
1. Q-learning independiente / PPO independiente (IQL, IPPO). Cada agente aprende su propio Q o política, tratando a los demás como parte del entorno. Simple, a veces funciona (especialmente con experience replay actuando como un truco de modelado de agentes suavizador). Convergencia teórica: ninguna. En práctica: bien para tareas débilmente acopladas, mal para tareas fuertemente acopladas.
2. Entrenamiento centralizado, ejecución descentralizada (CTDE). El paradigma moderno más común. Cada agente tiene su propia política π_i que se condiciona a la observación local o_i — ejecución descentralizada estándar en el despliegue. Durante el entrenamiento, un crítico centralizado Q(s, a_1, …, a_n) se condiciona al estado global completo y a la acción conjunta. Ejemplos:
- MADDPG (Lowe et al. 2017): DDPG con un crítico centralizado por agente.
- COMA (Foerster et al. 2017): línea de base contrafáctica —¿cuál habría sido mi recompensa si hubiera tomado la acción
a'en su lugar?— aísla mi contribución. - MAPPO / IPPO con crítico compartido (Yu et al. 2022): PPO con una función de valor centralizada. Dominante en 2026 para MARL cooperativo.
- QMIX (Rashid et al. 2018): decomposición de valor —
Q_tot(s, a) = f(Q_1(s, a_1), …, Q_n(s, a_n))con mezcla monotónica.
3. Self-play. Dos copias del mismo agente juegan entre sí. La política del oponente es mi política de una instantánea pasada. AlphaGo / AlphaZero / MuZero. OpenAI Five. Funciona mejor para juegos de suma cero; la señal de entrenamiento es simétrica.
4. League play. Una extensión de self-play a entornos de suma general / adversarios: mantiene una población de políticas pasadas y actuales, extrae una muestra de oponentes de la liga y entrena contra ellos. Añade explotadores (se especializan en vencer al mejor actual) y explotadores principales (se especializan en vencer a los explotadores). AlphaStar (StarCraft II). Se necesita cuando el juego admite ciclos de estrategia de tipo "piedra, papel o tijera".
Comunicación. Permite a los agentes enviarse mensajes aprendidos m_i entre sí. Funciona en entornos cooperativos. Foerster et al. (2016) demostraron que la comunicación diferenciable entre agentes se puede entrenar de extremo a extremo. Los sistemas multiagente basados en LLM actuales (Phase 16) se comunican esencialmente en lenguaje natural.
Constrúyelo
Esta lección utiliza un GridWorld de 6×6 con dos agentes cooperativos. Comienzan en esquinas opuestas y deben alcanzar una meta compartida. Recompensa compartida: -1 por paso mientras cualquiera de los agentes se siga moviendo, +10 cuando ambos lleguen. Ver code/main.py.
Paso 1: el entorno multiagente
class CoopGridWorld:
def __init__(self):
self.size = 6
self.goal = (5, 5)
def reset(self):
return ((0, 0), (5, 0)) # two agents
def step(self, state, actions):
a1, a2 = state
new1 = move(a1, actions[0])
new2 = move(a2, actions[1])
done = (new1 == self.goal) and (new2 == self.goal)
reward = 10.0 if done else -1.0
return (new1, new2), reward, done
El espacio de acción conjunta es |A|² = 16. El estado global son dos posiciones.
Paso 2: Q-learning independiente
Cada agente ejecuta su propia tabla Q indexada por el estado conjunto. En cada paso: ambos eligen acciones ε-greedy, recopilan la transición conjunta y cada uno actualiza su propio Q con la recompensa compartida.
def independent_q(env, episodes, alpha, gamma, epsilon):
Q1, Q2 = defaultdict(default_q), defaultdict(default_q)
for _ in range(episodes):
s = env.reset()
while not done:
a1 = epsilon_greedy(Q1, s, epsilon)
a2 = epsilon_greedy(Q2, s, epsilon)
s_next, r, done = env.step(s, (a1, a2))
target1 = r + gamma * max(Q1[s_next].values())
target2 = r + gamma * max(Q2[s_next].values())
Q1[s][a1] += alpha * (target1 - Q1[s][a1])
Q2[s][a2] += alpha * (target2 - Q2[s][a2])
s = s_next
Funciona en esta tarea porque las recompensas son densas y están alineadas. Falla en tareas fuertemente acopladas (por ejemplo, donde un agente tiene que esperar al otro).
Paso 3: Q centralizado con actualización de valor descompuesto
Usa un Q sobre acciones conjuntas Q(s, a_1, a_2). Actualiza a partir de la recompensa compartida. Descentraliza en la ejecución mediante la marginalización: π_i(s) = argmax_{a_i} max_{a_{-i}} Q(s, a_1, a_2). Intercambia el espacio de acción conjunta exponencial por una visión global correcta.
Paso 4: self-play simple (2 agentes adversarios)
Mismo agente, dos roles. Entrena al agente A contra el agente B; después de K episodios, copia los pesos de A en B. Entrenamiento simétrico, progreso constante. La receta de AlphaZero en miniatura.
Dificultades
- Replay no estacionario. El experience replay con agentes independientes es peor que con un solo agente porque las transiciones antiguas fueron generadas por oponentes que ahora están obsoletos. Solución: volver a etiquetar o ponderar por antigüedad.
- Ambigüedad en la asignación de crédito. Recompensa compartida después de un flujo largo o un episodio largo; no hay una manera clara de decir qué agente contribuyó. Solución: líneas de base contrafácticas (COMA) o modelado de recompensas por agente.
- Desviación de políticas / persecución. La mejor respuesta de cada agente cambia con la actualización del otro. Solución: crítico centralizado, tasas de aprendizaje lentas o congelar uno a la vez.
- Hacking de recompensas mediante coordinación. Los agentes encuentran formas de explotación coordinadas que el diseñador no previo. Los agentes de subastas convergen para pujar cero. Solución: diseño cuidadoso de recompensas, restricciones de comportamiento.
- Redundancia en la exploración. Ambos agentes exploran los mismos pares estado-acción. Solución: bonificaciones de entropía por agente o condicionamiento de roles.
- Ciclos de liga. El self-play puro puede quedarse estancado en un ciclo de dominancia. Solución: league play con oponentes diversos.
- Explosión de muestras.
nagentes × espacio de estados × acciones conjuntas. Aproximar con aproximación de funciones; espacios de acción factorizados (una cabeza de salida de política por agente).
Úsalo
El mapa de aplicaciones de MARL para 2026:
| Dominio | Método | Notas |
|---|---|---|
| Navegación / manipulación cooperativa | MAPPO / QMIX | CTDE; crítico compartido + actores descentralizados. |
| Juegos de dos jugadores (ajedrez, Go, póker) | Self-play con MCTS (AlphaZero) | Suma cero; entrenamiento simétrico. |
| Multijugador complejo (Dota, StarCraft) | League play + preentrenamiento por imitación | OpenAI Five, AlphaStar. |
| Flotas de vehículos autónomos | CTDE MAPPO / PPO con atención | Observabilidad parcial; tamaños de equipo variables. |
| Mercados de subastas | Equilibrio de teoría de juegos + RL | RL de campo medio cuando n → ∞. |
| Sistemas multiagente de LLM (Phase 16) | Comunicación en lenguaje natural + condicionamiento de roles | Bucle de RL en la capa de planificación del agente. |
En 2026, el área de mayor crecimiento de MARL se basa en LLM: enjambres de agentes de modelos de lenguaje que negocian, debaten y construyen software. El RL se presenta como optimización de preferencias en salidas a nivel de trayectoria, no a nivel de token (Phase 16 · 03).
Envíalo
Guardar como outputs/skill-marl-architect.md:
---
name: marl-architect
description: Pick the right multi-agent RL regime (IPPO, CTDE, self-play, league) for a given task.
version: 1.0.0
phase: 9
lesson: 10
tags: [rl, multi-agent, marl, self-play]
---
Given a task with `n` agents, output:
1. Regime classification. Cooperative / adversarial / general-sum. Justify.
2. Algorithm. IPPO / MAPPO / QMIX / self-play / league. Reason tied to coupling tightness and reward structure.
3. Information access. Centralized training (what global info goes to the critic)? Decentralized execution?
4. Credit assignment. Counterfactual baseline, value decomposition, or reward shaping.
5. Exploration plan. Per-agent entropy, population-based training, or league.
Refuse independent Q-learning on tightly-coupled cooperative tasks. Refuse to recommend self-play for general-sum with cycle risks. Flag any MARL pipeline without a fixed-opponent eval (cherry-picked self-play numbers are common).
Ejercicios
- Fácil. Entrena un Q-learning independiente en el GridWorld cooperativo de 2 agentes. ¿Cuántos episodios se necesitan para que el retorno promedio sea > 0? Grafica la curva de aprendizaje conjunta.
- Medio. Añade una tarea de "coordinación": la meta se alcanza solo cuando ambos agentes la pisan en el mismo turno. ¿Sigue convergiendo el Q-learning independiente? ¿Qué se rompe?
- Difícil. Implementa un crítico centralizado para el entrenamiento al estilo MAPPO y compara la velocidad de convergencia con un PPO independiente en la tarea de coordinación.
Términos Clave
| Término | Lo que la gente dice | Lo que realmente significa |
|---|---|---|
| Juego de Markov | "MDP multiagente" | (S, A_1, …, A_n, P, R_1, …, R_n); cada agente tiene su propia recompensa. |
| CTDE | "Entrenamiento centralizado, ejecución descentralizada" | Crítico conjunto en el momento del entrenamiento; la política de cada agente usa solo obs. locales. |
| IPPO | "PPO independiente" | Cada agente ejecuta PPO por separado. Línea de base simple; a menudo subestimada. |
| MAPPO | "PPO multiagente" | PPO con una función de valor centralizada condicionada al estado global. |
| QMIX | "Factorización de valor monotónica" | Q_tot = f_monotone(Q_1, …, Q_n) permite un argmax descentralizado. |
| COMA | "Multiagente contrafáctico" | Ventaja = mi Q menos el Q esperado marginalizando sobre mi acción. |
| Self-play | "Agente vs auto-pasado" | Agente único, dos roles; estándar para juegos de suma cero. |
| League play | "Entrenamiento de población" | Almacenar políticas pasadas, muestrear oponentes del grupo; maneja ciclos de estrategia. |
Lectura Adicional
- Lowe et al. (2017). Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments (MADDPG) — CTDE con un crítico centralizado.
- Foerster et al. (2017). Counterfactual Multi-Agent Policy Gradients (COMA) — líneas de base contrafácticas para la asignación de crédito.
- Rashid et al. (2018). QMIX: Monotonic Value Function Factorisation — factorización de valor con monotonicidad.
- Yu et al. (2022). The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games (MAPPO) — PPO es sorprendentemente fuerte para MARL.
- Vinyals et al. (2019). Grandmaster level in StarCraft II using multi-agent reinforcement learning (AlphaStar) — league play a escala.
- Silver et al. (2017). Mastering the game of Go without human knowledge (AlphaGo Zero) — self-play puro en juegos de suma cero.
- Sutton & Barto (2018). Ch. 15 — Neuroscience & Ch. 17 — Frontiers — incluye el breve tratamiento del libro de texto sobre entornos multiagente y el problema de la no estacionariedad que CTDE está diseñado para resolver.
- Zhang, Yang & Başar (2021). Multi-Agent Reinforcement Learning: A Selective Overview — panorama general que cubre MARL cooperativo, competitivo y mixto con resultados de convergencia.