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:

  1. Feature Engineering Esto mejora significativamente la eficiencia y estabilidad del aprendizaje.

  2. 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

  1. Entrenamiento (Reinforcement Learning)

Entrenamos el agente usando PPO con:

Entornos paralelos (SubprocVecEnv) Hiperparámetros ajustados Entrenamiento largo (~5M pasos)

  1. 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

  1. 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.

  1. Exceso de reward shaping

Demasiada manipulación de recompensas llevaba al agente a “hacer trampa” en lugar de aprender a pelear.

  1. Falta de información temporal

Sin velocidades, el agente no podía anticipar movimientos, afectando el timing.

  1. 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.

Built With

Share this project:

Updates

Submission history