Categorías
Universitario Videojuego

Inteligencia emergente

Una de las consecuencias naturales de utilizar Aprendizaje por Refuerzo (o Computación Evolutiva) es que puede aparecer «inteligencia emergente», ¡algo muy interesante en videojuegos! Se trata de un comportamiento razonablemente complejo que «surge» (bottom-up) a partir de la mecánica del juego, no de la mente del diseñador (top-down) y por lo tanto puede sorprender hasta a los propios desarrolladores.

La emergencia

La emergencia es una propiedad por la cual un sistema global muestra patrones, estrategias o estructuras complejas que NO estaban explícitamente programadas en las reglas de los componentes individuales.

Si contamos con que habrá inteligencia emergente, esto supone un cambio de rol para el desarrollador: el programador (o diseñador técnico) deja de ser un «guionista de comportamientos» y se convierte en un «diseñador de ecosistemas». Se pasa del clásico if/then (o de las máquinas de estado y los árboles de comportamiento) a configurar las condiciones para que el comportamiento interesante «surja» solo.

¡Ojo, existe el riesgo de que la inteligencia emergente pueda romper el equilibrio de un juego si los bots descubren una estrategia dominante que acaba por frustrar o aburrir al jugador humano! Lo más prudente es usarla como herramienta de testing, por ejemplo, desarrollar agentes con inteligencia emergente no para colocarlos en el producto final sino para «destruir» el juego todo lo que se pueda en fase Alpha/Beta, encontrando exploits, combinaciones de cartas/armas rotas o fallos de mapa antes de su lanzamiento.

Entornos multiagente

Cuando múltiples agentes adaptativos (entrenados con Aprendizaje Automático Multi-Agente, MARL… o desarrollados mediante Neuroevolución) coexisten en el mismo mapa, hablamos de entornos o sistemas multiagente. El entorno deja ya de ser estacionario, porque el comportamiento de los «otros» cambia constantemente y no es fácil de predecir.

Aquí se pueden buscar distintas dinámicas de población de cooperación y/o competencia:

  • Coordinación emergente: Agentes que aprenden a organizarse en roles (cobertura, distracción, flanqueo) sin que haya un líder centralizado para maximizar una recompensa compartida.
  • Carrera armamentística (Self-Play): Entrenar un agente poniéndolo a competir contra versiones pasadas de sí mismo (el enfoque usado por AlphaZero o OpenAI Five en Dota 2). Esto dispara la aparición de tácticas avanzadas y contra-estrategias que los desarrolladores jamás anticiparon.

Seguramente un caso de estudio indispensable es el experimento de Hide and Seek que mostró OpenAI. En el video se van viendo cómo se recorren las distintas fases de la «emergencia»:

  1. Los agentes aprenden primero a perseguirse.
  2. Luego aprenden a mover bloques para bloquear puertas.
  3. Los buscadores responden aprendiendo a usar rampas para saltar muros.
  4. Finalmente, los escondidos descubren que pueden «robar» la rampa antes de que empiece la partida y bloquearla dentro de su refugio.

Hay que tener mucho cuidado con la explotación de recompensas (Reward Hacking) en este tipo de juegos que funcionan con físicas. La IA encuentra «vacíos legales» (glitches o posibilidades físicas no contempladas) para maximizar su recompensa de forma a veces insólita, y es algo crucial para auditar en el desarrollo de videojuegos, donde se desea que todo esté más «controlado».

De alguna manera los algoritmos que buscan manejar enjambres o sistemas complejos adaptativos (CAS) también demuestran una inteligencia emergente. Los comportamientos de dirección (boids de Craig Reynolds y el flocking) es un poco esto, así como los sistemas de simulación de multitudes (crowd simulation) que existen, combinando patrones estocásticos o campos de fuerza para simular evacuaciones, combates masivos, etc.

Integración en videojuegos

La práctica obvia para esto es usar Unity ML-Agents en el laboratorio para entrar algún comportamiento interesantes dentro de un juego. Se trataría de configurar un entorno sencillo de Unity ya preparado (el profesor suele proporcionar un proyecto base, quizá algunos de los que ya vienen con ML-Agents) donde los alumnos tengan que ajustar la función de recompensa y los hiperparámetros del archivo de configuración de ML-Agents para que el agente aprenda una tarea concreta a cierto nivel de competencia.

Más información

Para complementar es recomendable consultar otros documentos.