Nuestro proyecto entrena un agente de IA para jugar Atari Boxing usando reinforcement learning.
En lugar de procesar imágenes, el agente:
Extrae features clave (posiciones, puntuación, tiempo) Añade dinámica temporal (velocidades) Utiliza una política basada en PPO para tomar decisiones en tiempo real
El modelo entrenado se exporta a ONNX y se usa en un agente de inferencia que:
Responde en menos de 25ms Se adapta al movimiento del rival Maneja casos como loops o comportamientos simétricos How we built it
Construimos el sistema en cuatro etapas principales:
Feature Engineering Esto mejora significativamente la eficiencia y estabilidad del aprendizaje.
Diseño del entorno
Creamos un wrapper personalizado de Gym que:
Normaliza las entradas Añade contexto temporal (velocidades) Aplica un reward shaping mínimo para guiar el aprendizaje sin sobreajustar
- Entrenamiento (Reinforcement Learning)
Entrenamos el agente usando PPO con:
Entornos paralelos (SubprocVecEnv) Hiperparámetros ajustados Entrenamiento largo (~5M pasos)
- Inferencia y despliegue
Exportamos el modelo a ONNX y construimos un agente que:
Usa políticas estocásticas (softmax) Detecta y rompe ciclos de comportamiento Introduce ruido controlado para evitar simetrías Challenges we ran into
- Colapso por simetría en self-play
Cuando el agente jugaba contra sí mismo, ambos convergían al mismo comportamiento, generando ciclos estables pero inútiles.
- Exceso de reward shaping
Demasiada manipulación de recompensas llevaba al agente a “hacer trampa” en lugar de aprender a pelear.
- Falta de información temporal
Sin velocidades, el agente no podía anticipar movimientos, afectando el timing.
- Restricciones de rendimiento
Teníamos que mantener la inferencia por debajo de 25ms, optimizando:
ONNX Extracción de features Estrategia de muestreo Accomplishments that we're proud of ✅ Reducción efectiva del estado de 128 bytes a un conjunto de features relevantes ✅ Agente en tiempo real con baja latencia ✅ Solución a problemas de self-play mediante estocasticidad y anti-loops What we learned El feature engineering bien hecho puede superar el uso de datos crudos El RL es extremadamente sensible a la simetría y al diseño de recompensas Políticas deterministas fallan en entornos multi-agente (ciclos) Pequeños cambios (como añadir velocidad) tienen gran impacto What's next for RETO3
Próximos pasos:
🥊 Modelado del oponente (anticipar acciones) 🔄 Self-play diverso (entrenar contra múltiples versiones) 🧠 Arquitecturas más avanzadas (RNNs / Transformers) ⚡ Optimización de latencia (<10ms) 🎯 Mejor timing de golpes basado en ventanas óptimas
El objetivo final es evolucionar de un agente reactivo a un boxeador estratégico y adaptativo.