# Aprendizaje automático en videojuegos

Varias técnicas de inteligencia artificial han sido utilizadas en los videojuegos, de muchas maneras, que van desde el control de personajes no jugadores (NPC) hasta la generación de contenido procesal (PCG). El aprendizaje automático es un subconjunto de la inteligencia artificial que se centra en el uso de algoritmos y modelos estadísticos para hacer que las máquinas actúen sin una programación específica. Esto contrasta en gran medida con métodos tradicionales de inteligencia artificial como árboles de búsqueda y sistemas expertos.
La información sobre las técnicas de aprendizaje de máquina en el campo de los juegos es mayoritariamente conocida por el público a través de proyectos de investigación, ya que la mayoría de las compañías de juegos deciden no publicar información concreta sobre su propiedad intelectual. La aplicación públicamente más conocida de aprendizaje de máquina en juegos es, probablemente, el uso de agentes de aprendizaje profundo que compiten con jugadores humanos profesionales en juegos de estrategia complejos. Ha habido una aplicación significativa de aprendizaje de máquina en juegos como Atari/ALE, Doom, Minecraft, Starcraft, y de carreras de automóviles. Otros juegos que originalmente no existían como videojuegos, tales como ajedrez y Go, también han sido afectados por el aprendizaje automático.

## Visión general de las técnicas relevantes de aprendizaje de máquina
### Aprendizaje profundo

El aprendizaje profundo es un subconjunto de aprendizaje automático el cual se centra fuertemente en el uso de redes neuronales artificiales (ANN) que aprenden a solucionar tareas complejas. El aprendizaje profundo utiliza múltiples capas de ANN y otras técnicas para extraer progresivamente información de una entrada. Debido a este enfoque complejo de capas, los modelos de aprendizaje profundo a menudo requieren máquinas potentes para entrenarse y correr.

### Redes neuronales convolucionales

Las redes neuronales convolucionales (CNN) son ANN que a menudo se utilizan para analizar datos de imágenes. Estos tipos de redes son capaces de aprender patrones invariables de traducción, los cuales son patrones que no dependen de la ubicación. Las CNN son capaces de aprender estos patrones en una jerarquía, lo que significa que las capas convolucionales anteriores aprenderán patrones locales más pequeños mientras las capas posteriores aprenderán los patrones más grandes basados en los patrones anteriores. La capacidad de una CNN de aprender datos visuales la han hecho una herramienta comúnmente utilizada para aprendizaje profundo en los juegos.

### Red neuronal recurrente

Las redes neuronales recurrentes son un tipo de ANN que están diseñadas para procesar secuencias de datos en orden, una parte a la vez en lugar de todas. Un RNN recorre cada parte de una secuencia, utilizando la parte actual de la secuencia junto con la memoria de partes anteriores de la secuencia actual para producir una salida. Estos tipos de ANN son altamente eficaces en tareas como reconocimiento de voz y otros problemas que depende fuertemente del temporal. Hay varios tipos de RNN con diferentes configuraciones internas; la implementación básica sufre una carencia de memoria de plazo largo debido al gradiente de desvanecimiento, por lo que raramente se utiliza en implementaciones más nuevas.

### Memoria de plazo corto larga

Una red de memoria a largo plazo (LSTM) es una implementación concreta de un RNN que está diseñado para tratar el problema del gradiente de desaparición visto en los RNN simples,lo que llevaría a "olvidarse" gradualmente de las partes anteriores de un secuencia ingresada al calcular la salida de una parte actual. Los LSTM solucionan este problema con la adición de un sistema elaborado utiliza una entrada adicional para mantener pista de los datos a plazo largo. Los LSTM han conseguido resultados muy fuertes en varios campos, y estuvo utilizado por varios agentes de aprendizaje profundos monumentales en juegos.

### Aprendizaje de refuerzo

El Aprendizaje de refuerzo es el proceso de entrenar un agente que utiliza recompensas y/o castigos. La manera en que un agente es premiado o castigado depende en gran medida del problema; como dar a un agente una recompensa positiva por ganar un juego o un negativa por perder. El Aprendizaje de refuerzo se utiliza mucho en el campo del aprendizaje de máquina y puede ser visto en métodos como Q-learning, búsqueda de política, Deep Q-networks y otros. Se ha visto un fuerte rendimiento en el campo de juegos y robótica.

### Neuroevolución

La neuroevolución implica el uso de redes neuronales y algoritmos evolutivos. En lugar de utilizar el descenso de gradiente como la mayoría de las redes neuronales, los modelos de neuroevolución utilizan algoritmos evolutivos para actualizar las neuronas en la red. Los investigadores afirman que es menos probable que este proceso se quede estancado en un mínimo local y que sea potencialmente más rápido que las técnicas de aprendizaje automático más avanzadas.

## Agentes de aprendizaje profundo

Los agentes de aprendizaje profundo se han utilizado para tomar el lugar de un jugador humano en lugar de funcionar como NPCs, que se agregan deliberadamente a los videojuegos como parte del juego diseñado. Los agentes de aprendizaje profundo han logrado resultados impresionantes cuando se usan en competencia con humanos y otros agentes de inteligencia artificial.

### Ajedrez

El ajedrez es un juego de estrategia por turnos que se considera un problema de IA difícil debido a la complejidad computacional de su espacio de estado en tablero. Juegos de estrategia similares a menudo se resuelven con alguna forma de generación de árbol Minimax. Se sabe que estos tipos de agentes de IA superan a los jugadores humanos profesionales, como el histórico Deep Blue contra Garry Kasparov en 1997. Desde entonces, los agentes de aprendizaje automático han demostrado un éxito cada vez mayor que los agentes de IA anteriores.

### Go

Go es otro juego de estrategia por turnos que se considera un problema de IA aún más difícil que el Ajedrez. El espacio de Go es de alrededor de 10 ^ 170 estados de tablero posibles en comparación con los 10^120 estados de tablero para Ajedrez. Antes de los modelos recientes de aprendizaje profundo, los agentes de AI Go solo podían jugar al nivel de un aficionado humano.

###### AlphaGo

AlphaGo de Google en 2015 fue el primer agente de IA en vencer a un jugador profesional de Go. AlphaGo utilizó un modelo de aprendizaje automático para entrenar los pesos de una Búsqueda de árbol de Montecarlo (MCTS). El modelo de aprendizaje automático consistió en 2 ANN, una red de políticas para predecir las probabilidades de posibles movimientos de los oponentes, y una red de valores para predecir la posibilidad de ganar un estado determinado. El modelo de aprendizaje automático le permite al agente explorar potenciales estados de juego de manera más eficiente que un MCTS de vainilla. La red se entrenó inicialmente en juegos contra jugadores humanos y luego se entrenó más con otros juegos en contra de sí misma.

###### AlphaGo Cero

AlphaGo Zero, otra implementación de AlphaGo, pudo entrenarse completamente jugando contra sí mismo. Fue capaz de entrenar rápidamente a las capacidades del agente anterior.

### Starcraft 2

Starcraft y Starcraft 2 son videojuegos de estrategia en tiempo real (RTS) que se han convertido en entornos populares para la investigación de IA. Blizzard Y Deepmind han trabajado juntos para lanzar un entorno público de Starcraft 2 para que se realice una investigación de IA. Se han probado varios métodos de aprendizaje profundo en ambos juegos, aunque la mayoría de los agentes suelen tener problemas para superar la IA predeterminada con los trucos habilitados o los jugadores expertos del juego.

###### Alphastar

Alphastar fue el primer agente de IA en vencer a los jugadores profesionales de Starcraft 2 sin ninguna ventaja en el juego. La red de aprendizaje automática del agente inicialmente recibió información de una versión simplificada y alejada del estado del juego, pero luego se actualizó para jugar usando una cámara como otros jugadores humanos. Los desarrolladores no han lanzado públicamente el código o la arquitectura de su modelo, pero han enumerado varias técnicas de aprendizaje automático de última generación, como el aprendizaje de refuerzo profundo relacional, la memoria a largo plazo, los jefes de políticas autorregresivos, las redes de punteros y el valor centralizado base. Alphastar fue inicialmente entrenado con aprendizaje supervisado, observó repeticiones de muchos juegos humanos para aprender estrategias básicas. Luego entrenó contra diferentes versiones de sí mismo y se mejoró mediante el aprendizaje por refuerzo. La versión final tuvo un gran éxito, pero solo se entrenó para jugar en un mapa específico en un enfrentamiento de espejo protoss.

### Dota 2

Dota 2 es un juego multijugador en línea de arena de batalla (MOBA). Al igual que otros juegos complejos, los agentes de IA tradicionales no han podido competir en el mismo nivel que los humanos profesionales. La única información ampliamente publicada sobre los agentes de IA intentados en Dota 2 es el agente Five de aprendizaje profundo de OpenAI.

###### OpenAI Five

OpenAI Five utilizó redes LSTM redes para aprender cada héroe.Se entrenó utilizando una técnica de Aprendizaje de refuerzo conocida como Aprendizaje de política proximal que se ejecuta en un sistema que contiene GPUs y 128,000núcleos de CPU. Five entrenado durante meses, acumula 180 años de experiencia en el juego cada día, antes de enfrentarse con jugadores profesionales. Finalmente fue capaz de vencer al equipo campeón de esports en Dota 2 2018 en una serie de juegos del 2019.

### Planetary Annihilation

Planetary Annihilation es un juego de estrategia de tiempo real qué se centra en una guerra a gran escala. Los desarrolladores usan ANN en su agente de IA predeterminado

### Juegos generalizados

Ha habido intentos de crear agentes de aprendizaje automático que puedan jugar más de un juego. Estos agentes de juego "generales" están entrenado para comprender juegos basados en propiedades compartidas entre ellos.

###### AlphaZero

AlphaZero es una versión modificada de AlphaGo Zero que puede jugar shōgi, ajedrez y Go. El agente modificado comienza con solo información básica de las reglas del juego, y también se entrena completamente a través del auto aprendizaje. Deepmind pudo entrenar a este agente generalizado para ser competitivo con versiones anteriores de sí mismo en Go, así como con los mejores agentes en los otros 2 juegos.

### Fortalezas y debilidades de los agentes de aprendizaje profundo

Los agentes de aprendizaje automático no suelen tratarse en cursos de diseño de juegos. El uso previo de agentes de aprendizaje automático en los juegos puede no haber sido muy práctico, ya que incluso la versión 2015 de AlphaGo tomó cientos de horas de computación con CPU y GPU para llegar a un nivel fuerte. Esto potencialmente limita la creación de agentes de deep learning altamente efectivos para grandes corporaciones o individuos extremadamente ricos. El extenso tiempo de entrenamiento de los enfoques basados en redes neuronales también puede llevar semanas en estas máquinas potentes..
El problema de la capacitación efectiva de los modelos basados en ANN se extiende más allá de los potentes entornos de hardware; Encontrar una buena manera de representar datos y aprender cosas significativas de ellos también es a menudo un problema difícil. Los modelos ANN a menudo se sobre ajustan a datos muy específicos y funcionan mal en casos más generalizados. AlphaStar muestra esta debilidad, a pesar de poder vencer a jugadores profesionales, solo puede hacerlo en un solo mapa cuando juega un enfrentamiento de protoss espejo. OpenAI Five también muestra esta debilidad, solo fue capaz de vencer al jugador profesional cuando se enfrentó a un grupo de héroes muy limitado en todo el juego. Este ejemplo muestra lo difícil que puede ser entrenar a un agente de aprendizaje profundo para que se desempeñe en situaciones más generalizadas.
Los agentes de Aprendizaje de máquina han demostrado un gran éxito en una variedad de juegos diferentes. Sin embargo, los agentes que son demasiado competentes también corren el riesgo de hacer que los juegos sean demasiado difíciles para los jugadores nuevos o casuales. La investigación ha demostrado que el desafío que está muy por encima del nivel de habilidad de un jugador arruinará el disfrute del jugador. Es probable que estos agentes altamente entrenados solo sean deseables contra jugadores humanos muy hábiles que tienen muchas horas de experiencia en un juego determinado. Dados estos factores, los agentes de aprendizaje profundo altamente efectivos son probablemente solo una opción deseada en los juegos que tienen una gran escena competitiva, donde pueden funcionar como una opción de práctica alternativa para un jugador humano experto.

## Visión por computadora para juegos

La visión artificial se enfoca en entrenar computadoras para obtener una comprensión de alto nivel de imágenes o vídeos digitales. Muchas técnicas de visión por computadora también incorporan formas de aprendizaje automático y se han aplicado en varios videojuegos. Esta aplicación de visión por computadora se enfoca en interpretar eventos de juegos usando datos visuales. En algunos casos, los agentes de inteligencia artificial usan la visión por computadora para jugar juegos sin interactuar directamente con la API de un videojuego.

### Doom (1993)

Doom es un Videojuego de disparos en primera persona. Estudiantes investigadores de la Universidad Carnegie Mellon utilizaron técnicas de visión por computadora para crear un agente que pudiera jugar el juego usando solo la entrada de píxeles de imagen del juego. Los estudiantes usaron capas de redes neuronales convolucionales (CNN) para interpretar datos de imágenes entrantes y enviar información válida a una red neuronal recurrente que era responsable de generar movimientos del juego.

## Aprendizaje automático para la generación de contenido procedural en juegos

El machine learning ha visto investigado para su uso en la recomendación y generación de contenido. La generación de contenido procedimental (PCG) es el proceso de crear datos algorítmicamente en lugar de manualmente. Este tipo de contenido se utiliza para agregar capacidad de reproducción a los juegos sin depender de adiciones constantes por parte de desarrolladores humanos. La generación de contenido procesal se ha utilizado en varios juegos para diferentes tipos de generación de contenido, ejemplos de los cuales incluyen armas en Borderlands 2, todo diseños mundiales en Minecraft, y universos enteros en No Man's Sky. Los enfoques comunes para PCG incluyen técnicas que involucran gramáticas, algoritmos basados en búsquedas y programación lógica. Estos enfoques requieren que los humanos definan manualmente el rango de contenido posible, lo que significa que un desarrollador humano decide qué características conforman una pieza válida de contenido generado. El aprendizaje automático es teóricamente capaz de aprender estas características cuando se dan ejemplos para entrenar, lo que reduce en gran medida el paso complicado de los desarrolladores que especifican los detalles del diseño de contenido. Las técnicas de aprendizaje automático utilizadas para la generación de contenido incluyen redes neuronales recurrentes (RNN) de memoria a corto plazo (LSTM), redes adversas generativas (GAN) y clustering K-means. No todas estas técnicas utilizan ANN, pero el rápido desarrollo del Aprendizaje profundo ha aumentado enormemente el potencial de las técnicas que lo hacen.

### Galactic Arms Race

Galactic Arms Race (GAR) es un videojuego de disparos espaciales que utiliza PCG impulsado por neuroevolución para generar armas únicas para el jugador. Este juego fue finalista en el Indie Game Challenge 2010 y su trabajo de investigación relacionado ganó el Premio al Mejor Papel en la Conferencia IEEE 2009 sobre Inteligencia Computacional y Juegos. Los desarrolladores usan una forma de neuroevolución llamada cgNEAT para generar contenido nuevo basado en las preferencias personales de cada jugador..
Cada elemento generado está representado por un ANN especial conocido como Red de Producción de Patrones Composicionales (CPPN). Durante la fase evolutiva del juego, cgNEAT calcula la aptitud de los elementos actuales en función del uso del jugador y otras métricas de juego, esta puntuación de aptitud se usa para decidir qué CPPN se reproducirá para crear un nuevo elemento. El resultado final es la generación de nuevos efectos de armas basados en la preferencia del jugador.

### Super Mario Bros

Super Mario Bros. ha sido utilizado por varios investigadores para simular la creación de niveles de PCG. Varios intentos de haber utilizado diferentes métodos. Una versión en 2014 usó n-gramos para generar niveles similares a los que entrenó, que luego se mejoró mediante el uso de MCTS para guiar la generación. Estas generaciones a menudo no eran óptimas cuando se tomaban en cuenta las métricas de juego, como el movimiento del jugador, un proyecto de investigación separado en 2017 trató de resolver este problema generando niveles basados en el movimiento del jugador usando las cadenas de Markov. Estos proyectos no fueron sometidos a pruebas en humanos y pueden no cumplir con los estándares de jugabilidad humana.

### The Legend of Zelda

La creación de nivel PCG para The Legend of Zelda ha sido intentada por investigadores de la Universidad de California, Santa Cruz. Este intento hizo uso de una red bayesiana para aprender conocimiento de alto nivel de los niveles existentes, mientras que el análisis de componentes principales (PCA) se utilizó para representar las diferentes características de bajo nivel de estos niveles. Los investigadores utilizaron PCA para comparar los niveles generados con los niveles producidos por el hombre y descubrieron que se consideraban muy similares. Esta prueba no incluyó jugabilidad o prueba humana de los niveles generados.

## Generación de música

La música a menudo se ve en los videojuegos y puede ser un elemento crucial para influir en el estado de ánimo de diferentes situaciones y puntos de la historia. El aprendizaje automático se ha utilizado en el campo experimental de la generación de música; Es especialmente adecuado para procesar datos no estructurados sin procesar y formar representaciones de alto nivel que podrían aplicarse al campo diverso de la música. La mayoría de los métodos intentados han implicado el uso de ANN de alguna forma. Los métodos incluyen el uso de redes neuronales prealimentadas, autoencoders, máquinas de Boltzmann restringidas, redes neuronales recurrentes, redes neuronales convolucionales, redes adversas generativas (GAN) y arquitecturas compuestas que utilizan múltiples métodos.

###### Sistema de generación de música simbólica de videojuegos VRAE

El trabajo de investigación de 2014 sobre "Codificadores automáticos recurrentes variacionales" intentó generar música basada en canciones de 8 videojuegos diferentes. Este proyecto es uno de los pocos realizado exclusivamente en música de videojuegos. La red neuronal en el proyecto fue capaz de generar datos que eran muy similares a los datos de los juegos de los que se entrenó. Desafortunadamente, los datos generados no se tradujeron en música de buena calidad.