Redes neuronales en videojuegos

Anuncio
REDES NEURONALES
APLICADAS A LA
INTELIGENCIA ARITIFCIAL DE
VIDEOJUEGOS
Modelos Computacionales
Manuel Espino Lara
I.T.Informática de Sistemas
Visión General de la IA en Videojuegos
Evolución de la inteligencia artificial en los videojuegos
El campo de la inteligencia artificial de los videojuegos ha existido desde que naciera el mundo
de los juegos de ordenador en la década de los 70. Los orígenes fueron humildes, y la percepción
publica de la inteligencia artificial de los juegos esta basada fundamentalmente en los juegos
simples de la década de los 80 y 70. Incluso a día de hoy, la IA de los juegos esta muchas veces
ligada a los fantasmas del pac-man. Incluso dentro de la propia industria, hasta no hace mucho, se
ha hecho bien poco para hacer que esto cambie.
Sin embargo, se está produciendo una revolución. Los últimos años han sido testigos de juegos
con una cada vez más elaborada y con una inteligencia artificial cada vez mejor. Esto viene dado
principalmente por el mercado que cada vez más favorece los juegos que tienen una gran IA, por lo
que los estudios dedican esfuerzos cada vez mayores a este aspecto.
Un poco de historia
En el comienzo de los videojuegos, la IA estaba pensada principalmente para las maquinas
recreativas y estaba diseñada cuidadosamente para “enganchar”. Juegos tales como el pac-man,
donkey kong, pong o space invaders usaban un puñado de reglas muy simples y un guion o script de
secuencias de acciones combinadas con algunas decisiones aleatorias que pretendían hacer al juego
menos predecible.
El ajedrez ha sido siempre protagonista en la investigación en la IA para juegos, así que no es
ninguna sorpresa que ya en el 86 los juegos de ajedrez como el chessmaster 2000 de Software
Toolworks presentara una capacidad de juego bastante buena. Estos juegos estaban basados así
invariablemente en árboles de búsqueda.
Los juegos de estrategia estuvieron entre los pioneros en la IA de los juegos. Esto es bastante
lógico, ya que un juego de estrategia llegará poco lejos solo con buenos gráficos. La IA de los estos
juegos es especialmente desafiante, ya que el jugador controlado por el ordenador debe saber
manejar tácticas y estrategias. Entre los primeros que sobresalieron en este campo encontramos el
Civilitation o el Civilitation II, con una gran IA, aunque para los mayores niveles de dificultad
usaba cheating (trucos por parte de la máquina).
En el 95 salio el juego de Blizzard Warcraft II, con una IA ya mucho más elaborada y bastante
adelantada para su tiempo y en el 99 salió el Age of Empires II, de Microsoft, el cual mostró unos
oponentes manejados por la IA increíblemente efectivos. La IA de estos juegos es mucho más
impresionante a razón de la necesidad de controlar cientos de unidades al mismo tiempo.
En el campo de los shooter en primera persona, punto y aparte fue el juego de Valve, Half-life,
por su excelente IA táctica, al igual que los bots del Unreal: Tournament. En cuanto a Thief: The
dark project, de Glass Studios, un shooter con un gran componente de sigilo, cabe destacar el
cuidadoso modelado de la capacidad sensorial de la IA y el uso de diferentes grados de alerta. Swat
3: Close Quater Battle, de Sierra, hizo un trabajo remarcable en realizar animaciones e interacciones
lo más humanas posibles, y consiguió un gran avance en el comportamiento aleatorio para
asegurarse de que el juego sea distinto en cada partida.
En el campo de los simuladores, el famosísimo SimCity de Maxis, del 89, fue el primero en
demostrar el potencial de la vida artificial(a-life). The sims, también de Maxis, profundizó en la
personalidad de los sus agentes o sims, y usó por primera vez con éxito las máquinas de estado
difuso.
Los God games, como el Populos o el Dungeon Keeper combinaron aspectos de los juegos de
simulación y de vida artificial con elemento de estrategia en tiempo real. La evolución de estos trajo
en el 01 el juego de Lionhead Black & White, el cual posee sin duda alguna uno d las IA más
impresionantes y elaboradas del mundo de los videojuegos. Aunque realmente este no es el primer
juego en incorporar aprendizaje, si es indudablemente el que lo incorpora con más éxito.
Es importante decir que el Black & White fue diseñado prácticamente en torno a la IA. El juego
esta enteramente basado en el concepto de enseñar y entrenar a tu criatura. Este planteamiento hace
que el jugador note mucho más si cabe la calidad de la IA del juego, por lo que se tuvo especial
cuidado en este aspecto.
Detrás de la revolución
La el factor clave en el éxito de la IA de los últimos juegos ha sido simplemente que los
desarrolladores se lo han tomado en serio. No hace mucho tiempo que la IA se dejaba para el final,
implementándola en 2 o 3 meses y a la carrera.
El aumento de la potencia del hardware ha contribuido también notablemente a la mejora de la
IA de los juegos. Anteriormente, los gráficos ocupaban mucha CPU, dejando muy poco
procesamiento y memoria para la IA. Algunos problemas de IA, como la búsqueda, necesitan
bastante procesamiento, así que había que optar entre una IA más compleja o mejores gráficos, y
casi siempre se optaba por lo segundo. Las videoconsolas han acusado especialmente este
problema, dado el ajustadísimo potencial que tenían y los requerimientos de ejecución de los demás
aspectos del juego.
Tipos básicos de IA.
El campo de la inteligencia artificial en el mundo académico consiste en una enorme variedad
de diferentes ideas y subdisciplinas, las cuales en muchos casos están ideológicamente muy
separadas.
No se puede entender la IA de los juegos sin conocer algo de los principales campos de la IA.
No se detallarán ni mucho menos todas las técnicas de IA conocidas actualmente, pero se
nombrarán las más relevantes para la IA de los juegos.
•
Sistemas expertos (expert systems): intenta emular el conocimiento de un humano experto
dentro de un dominio dado. Un sistema experto representa la habilidad de un experto dentro
de un conocimiento base. La idea es que, mediante los datos de los que dispone el sistema,
sea capaz de responder razonablemente a las preguntas a las que se tendría que enfrentar el
humano.
•
Razonamiento caso base (Case- based reasoning): esta técnica consiste en comparar las
entradas al sistema con unas bases de datos en las que se tienen una serie de entradas y las
salidas más probables para esas situaciones. Este razonamiento esta basado en la tendencia
de los humanos de comparar las nuevas situaciones a las que nos enfrentamos con
situaciones similares que hayamos experimentando en el pasado.
•
Máquinas de estado finito (finite-state machine). Es un simple sistema basado en reglas en el
que se tiene una serie de estados conectados mediante transiciones entre los estados. La
máquina de estado finito ocupa exactamente un estado para un instante dado.
•
Sistemas de producción (producction systems): están constituidos por una base de datos de
reglas. Cada regla consiste en un conjunto arbitrario de sentencias condicionales y algunas
acciones que serán realizadas si se satisfacen las sentencias condicionales. Básicamente esta
técnica consiste en una lista de If-then, con varios mecanismos de resolución por si se
satisface más de un regla en un momento dado.
•
Árboles de decisión (decision trees): Esta técnica realiza decisiones basado en una serie de
entradas colocadas en la raíz del árbol, y, en cada nodo, se selecciona un hijo en relación a
alguna de las entradas dadas al principio.
•
Métodos de búsqueda (search methods): Consisten en descubrir una serie de acciones o
estados dentro de un grafo que satisfaga alguna meta en particular. Esta puede ser alcanzar
un estado meta o maximizar algún valor basado en los estados alcanzables.
•
Sistemas de planificación ( planning systems) : Son una extensión de los métodos de
búsqueda, pero enfatizando en el subproblema de buscar la mejor secuencia de acciones.
•
Lógica de primer orden (First-order logic). Es una ampliación de la lógica proposicional,
con algunos rasgos adicionales que permiten al agente artificial razonar dentro de un
entorno. El mundo consiste en objetos con identidades individuales y propiedades que los
hacen distinguirse del resto de objetos, y una serie de relaciones para unir dichos objetos.
•
Cálculo situacional (situacion calculus) : Esta técnica usa lógica de primer orden para
calcular como debe de actuar el agente artificial ante una situación. El cálculo situacional
usa razonamiento automático para determinar que acciones producirán el estado del entorno
que queremos conseguir.
•
Sistemas multiagente (Multi-agent systems): Se centra en la interactuación y cooperación de
diferentes agente artificiales.
•
Vida artificial (Artificial life; a-life): Intenta aplicar algunas de las propiedades universales
de los sistemas vivos en agentes artificiales dentro de mundos virtuales.
•
Flocking: Es una subcategoria de a-life, pero centrado en conjuntos de agente no
independientes, a modo de rebaño.
•
Robótica: Se centra en hacer que las máquinas interactuen con el mundo real. Es una de las
disciplinas más antiguas, mejor conocidas y con más campos prometedores de la IA, y ha
vuelto a tener un gran auge debido al crecimiento exponencial la potencia de los
ordenadores. Normalmente la robótica se divide en tareas de control (output task,control
systems) y sistemas de entrada (input task,sensory systems)
•
Algoritmos genéticos y programación genética: Estas técnicas imitan el proceso de la
evolución de la especies, seleccionando individuos, cruzándolos entre si, y mutándolos de
forma aleatoria.
•
Redes neuronales (neural networks): es una clase de técnica de aprendizaje y toma de
decisiones, basada en la arquitectura de las conexiones de las neuronas en el cerebro. Estas
redes operan reajustando repetidamente unos parámetros internos o pesos situados en las
interconexiones de las neuronas, permitiendo así a la red aprender un optimo (o una buena
aproximación) rendimiento en una gran variedad de distintos tipos de tareas de aprendizaje.
•
Lógica difusa (Fuzzy logic): usa números reales para representar grados de pertenencia a un
grupo -en oposición a los valores verdadero o falso de la lógica tradicional. Esto permite un
razonamiento mucho más rico y menos brusco que la lógica tradicional.
•
Redes de confianza (Belief networks): Tiene su máxima expresión en las redes bayesianas.
Tienen la capacidad de encontrar relaciones subyacentes entre diferentes fenómenos.
Además usa teoría de probabilidades para tomar decisiones aun teniendo un conocimiento
incompleto del campo que esté tratando. También proporciona diferentes herramientas para
inferir que resultado tendrá realizar una serie de posibles acciones.
La inteligencia artificial de los juegos ha aprovechado todas estas técnicas de una manera o de
otra, con diferente grado de éxito para cada una de ellas.
Irónicamente, son las técnicas más simples (como las maquinas de estado finito, los árboles de
decisión y los sistemas de producción de reglas) las que más a menudo han demostrado su valía.
Enfrentados a ajustados calendarios y mínimos recursos, los desarrolladores han optado en la
mayoría de los casos por una IA basada en sistemas basados en reglas.
Los sistemas expertos comparten algunas cosas comunes con la IA de los juegos en el sentido
de que muchos juegos intentan que la IA juegue como lo haría un jugador humano. Aunque el
conocimiento base está representado de manera diferente a como se hace en los sistemas expertos,
el resultado deseado es el mismo, imitar el comportamiento de un experto.
Muchas IAs de juegos de tablero, como puede ser el ajedrez o el backgammon, han usado
árboles y árboles de búsqueda con enorme éxito. Un agente artificial jugando a backgammon puede
competir al nivel del mejor jugador humano del mundo. La IA en ajedrez probó su potencial
ganando al gran maestro del ajedrez Kasparov, mediante la supercomputadora Deep blue. Otros
juegos, como el GO, aun no han alcanzado el nivel de los maestros humanos, pero no tardarán en
conseguirlo.
Desafortunadamente, la complejidad de los videojuegos actuales y los mecanismos de juego
hacen imposible usar técnicas de fuerza bruta como el deep blue. Hay otro tipo de búsqueda más
usada en los videojuegos actuales , basada en búsquedas A*, la cual funciona bastante bien y no
requiere de tanta potencia de procesamiento.
La IA también tiene muchas características en común con la robótica. El concepto base es
totalmente distinto en un caso y otro. No tiene nada que ver el complejo mundo real con el mundo
virtual, mucho más accesible, por lo tanto el apartado de sensores de la robótica no interesa para
nada para la IA de los juegos. Sin embargo, las técnicas de control si son interesantes y muy útiles
para los agentes artificiales, ya que sirven para que estos se desenvuelvan adecuadamente en su
entorno y puedan interactuar con el jugador, el mundo virtual o con otros agentes.
Las técnicas de vida artificial, sistemas multiagente, así como el flocking son verdaderas
protagonistas en muchos juegos, como los Sims o SimCity. Estos han probado sobradamente la
utilidad de estas técnicas y la capacidad lúdica que tienen.
Las técnicas de planificación también han sido usadas alguna veces con diverso éxito. Este tipo
de técnicas han sido desarrolladas para problemas mucho más complejos que los que se presentan a
día de hoy en el desarrollo de un videojuego, aunque seguramente dentro de unos años empezaran a
usarse más estas técnicas a medida que sean necesarias.
La lógica difusa se ha hecho bastante popular entre muchos grupos de desarrolladores. Sin
embargo, la lógica de primer orden y el cálculo situacional tienen que encontrar su sitio todavía,
debido a la gran dificultad que hay ahora mismo en representar mundos virtuales en constante
cambio (como los de los juegos de estrategia en tiempo real).
La redes de confianza son muy poco usadas para programar la IA de los juegos, aunque estas se
adaptan bastante bien a un número sorprendente de subproblemas de la IA de un juego.
El problema del aprendizaje de una máquina
Vista la gran cantidad de técnicas que existen para desarrollar la IA de un juego, es
incomprensible que sean tan simples todavía. Aunque se sabe del potencial de las redes neuronales
y de los algoritmos genéticos, en la mayoría de los casos es bastante con el uso de máquinas de
estado finito y máquinas de estado difuso.
Hay una buena excusa para esta intransigencia. El resultado de introducir aprendizaje en
videojuegos ha resultado siempre un fracaso, dando como resultado juegos injugables que
aprendían muy pobremente. Por eso es por lo que se usa tan poco, porque a pesar de su potencial, si
se aplica mal, puede ser un autentico desastre. Hay varias razones para esto:
•
Los sistemas de aprendizaje pueden aprender mal la lección. Imaginemos que el sistema
aprende de un humano. Si el humano juega mal, la máquina jugará mal.
•
Es muy difícil conseguir el resultado deseado de un sistema de aprendizaje. Estos sistemas
necesitan de una función de fitness o aptitud para decirle si esta aprendiendo
adecuadamente. Una cosa es crear un computador con capacidad de competir contra un
humano, pero es muy difícil hacer una función de fitness para la diversión que esta
proporciona
•
Algunos sistemas de aprendizaje -particularmente las redes neuronales- son tremendamente
difíciles de modificar, testear o depurar.
•
Por ultimo, hay muchas tipos de juegos donde un sistema de aprendizaje no tienen sentido.
Por ejemplo, en los juegos de acción, la vida media de un enemigo es de 1 minuto, tiempo
claramente insuficiente como para aprender nada.
A parte de estos problemas, es justo decir que la mayoría de los problemas son culpa de la
propia industria por su incapacidad de aplicar las técnicas con el mismo éxito que otras industrias.
Los desarrolladores han intentando implementar técnicas de aprendizaje para crear IA s en un nivel
muy bajo, en donde no merece la pena hacerlo ya que lo que consiguen en estos niveles se puede
hacer mucho más eficiente con técnicas tradicionales. Es totalmente contraproductivo. Las técnicas
de aprendizaje muestran realmente su potencial cuando hay un agente artificial que realmente
necesite aprender algo.
Juegos como Black & White demuestran fuera de toda duda que el aprendizaje puede ser útil y
divertido y puede aumentar significativamente la calidad de un título.
El aprendizaje es una herramienta muy útil y muy espectacular cuando se usa correctamente. La
clave, tal como demostró el Black & White, es usar el aprendizaje como un componente importante
dentro de un sistema multicapa que use otras técnicas de IA, aunque estas no beneficien el
aprendizaje.
En busca de la diversión
Gran parte de las diferencias en el desarrollo de la IA académica y la IA de los videojuegos
viene motivada por la búsqueda de metas totalmente diferentes. Las primeras buscan la resolución
de problemas extremadamente complicados como entender el lenguaje natural, y los juegos buscan
divertir.
El usuario se gasta del orden de 50 € (en teoría...) y tiene derecho a divertirse. En muchos
géneros, como por ejemplo los juegos de acción, es muy fácil desarrollar una IA que derrote al
jugador sin ningún esfuerzo. Esto, desde un punto de vista académico, es un éxito, pero no es una
buena idea para un videojuego. Deep blue ganó a Kasparov, pero la idea de esa máquina no era
divertir.
La inteligencia es contextualmente dependiente.
Cada juego tiene su propio contexto, por eso cada IA debe desarrollarse en función de ese
contexto. Las mejores IA son aquellas en las que los programadores han identificado claramente
que es lo que quieren conseguir, han identificado los subproblemas que es necesario resolver, y han
creado soluciones especificas para ese problema y para el contexto en el que se desarrolla el juego.
Para ser capaz de adaptar las técnicas de inteligencia artificial de las que disponemos dentro del
contexto en el que nos encontramos, los programadores deben primero convertirse en aquel agente
para al que quieren dotar de inteligencia, actuar como él y a partir de ahí observar que es lo que
necesitamos de dicho agente, y lo que es igual de importante, como podemos conseguirlo.
IA es contextualmente dependiente.
Algunas desarrolladoras han tomado nota del éxito que han tenido juegos basados en motores
comerciales, como por ejemplo Quake o Unreal, y han intentado crear motores para la IA que pueda
ser usado en cualquier juego. Esto, según la opinión de algunos expertos, dista mucho de parecerse
a los motores gráficos, que pueden adaptarse mejor a cualquier historia o personajes, no como la IA,
que como vimos anteriormente, depende mucho de la naturaleza del propio juego, por lo que esta
técnica se muestra poco recomendable.
Un aspecto bastante importante para muchos autores es el género al que corresponde el juego en
particular. Aunque el termino género puede resultar muchas veces demasiado selectivo, ya que
muchas veces cuesta trabajo encasillar a un juego dentro de uno, si que es una buena jerarquización
para ver como ha ido evolucionando la IA y hacia donde se dirige en el futuro. La IA de un juego de
hockey no tiene nada que ver con la de un juego de infiltración, por ejemplo, por lo que se hace
tremendamente difícil compartir herramientas y técnicas entre distintos juegos, muchas veces
incluso entre juegos bastante parecidos.
Los juegos con una IA más sofisticada suele ser aquellos que tienen precuelas, y los
programadores han partido de lo que ya habían conseguido en el anterior juego para mejorarlo,
como puede ser alguno de los SimCity.
Ampliando la perspectiva.
Como vimos anteriormente, desde el punto de vista académico hay muchas y muy distintas
técnicas de IA de las que puede aprovecharse la industria de los videojuegos. Durante mucho
tiempo esto fue lo que ocurrió. Sin embargo, en la actualidad, la dificultad para aplicar todas esas
técnicas de modo correcto ha hecho que poco a poco se hayan ido desarrollando técnicas más
especificas para ser usadas solamente en los juegos. Como siempre, la clave está en saber mezclar
unas técnicas con otras, usando cada una en los problemas en los que se sabe que tiene más éxito.
A medida que evoluciona el campo de la IA, iremos comprendiendo mejor como funcionan las
distintas técnicas, mejorando su aplicación, y encontrando métodos para poderlas combinar.
Aunque debido a la cantidad de dinero que la industria de los videojuegos está moviendo en la
actualidad, superando ya en volumen al cine en muchos países, con total seguridad en el futuro se
desarrollen técnicas para videojuegos que luego serán adaptadas para el mundo académico.
La IA dentro del desarrollo de un juego.
Para que la IA alcance todo su potencial, el diseño de los juegos debe escapar de la linealidad y
de la precibilidad, no ya para conseguir una historia mucho más profunda, sino sobre todo por
mejorar la jugabilidad. Los Sims, B&W, o Thief: The Dark Project, todos ellos juegos centrados en
la IA de sus personajes, han marcado la senda a seguir en la interacción del jugador con los agentes
artificiales.
Creando inteligencia.
Los personajes controlados por ordenador están ahí para que el jugador tenga la sensación de
encontrarse en un mudo rico y real. La gran mayoría de jugadores todavía no juega online en
mundos virtuales contra otros humanos, así que , para ofrecer una experiencia divertida a este
público, hay que crear competidores adecuados. Esto a día de hoy se está convirtiendo en un gran
atractivo para las ventas, como demuestran las listas de éxitos, en las que el Pro Evolution Soccer
de Konami ganó estas navidades al Fifa de Ea.
Actualmente no es posible crear verdadera inteligencia, ya que esta conlleva algunos aspectos
imposibles con la tecnología actual. Lo máximo que podemos hacer es crear la ilusión de
inteligencia. A continuación se darán algunas claves para no acabar creando la ilusión de estupidez.
Ámbito.
Veamos como los jugadores controlados por la máquina toman decisiones de alto nivel para
poder competir. Por ejemplo, pensemos en un juego de estrategia en tiempo real. Aquí el jugador
podría decidir combatir mediante arqueros y armas de asedio, o en un shooter en primera persona, el
jugador podría decidir combatir mediante lanzamisiles.
Pero dentro de esas decisiones hay otras que van detrás de estas, que podrían considerarse
secundarias, pero que son las que finalmente crearan una ilusión más o menos realista. En el caso
del juego de estrategia, el jugador tendrá que decidir como lleva a cabo la estrategia de usar
arqueros y armas de asedio, por ejemplo construyendo murallas y torres de defensa. Los
programadores de la IA de los juegos lo que hacen es imitar los comportamientos o ideas que podría
tener un humano. Así, en la mayoría de los juegos (aunque no en todos), la idea es hacer parecer
que se está jugando contra un humano de verdad.
Los contrastes de un jugador humano
Para poder emular el comportamiento humano manejando un videojuego, es importante
examinar cuidadosamente los comportamientos de este.
Predecibilidad e Impredecibilidad.
Un rasgo importante del comportamiento humano es que es capaz de hacer cosas impredecibles.
En un juego de estrategia, esto se puede traducir por hacer ataques con el mero propósito de
distraer; en un simulador deportivo puede implicar realizar jugadas totalmente sin sentido, como no
marcar gol a puerta vacía.
Sin embargo, muchos humanos son predecibles en algunos aspectos. Los jugadores de shooter
tienen una ruta favorita dentro de un mapa. Los jugadores de juegos de estrategia suelen tener una
serie de pasos que suelen seguir siempre al principio de las partidas, y en los simuladores suelen
usar las mismas jugadas.
Aquí hay claramente un conflicto, una contradicción, que es difícil de simular. Los jugadores
humanos son previsibles e imprevisibles, y en algunos casos, estos dos aspectos se pueden dar en el
mismo juego. En otros casos, el jugador puede ser imprevisible en distintas sesiones de juego
comparando unas con otras, pero dentro de una en particular ser bastante previsible. En un juego de
estrategia planeas al principio tu estrategia y basas todas tus decisiones en función de eso, con lo
que si el oponente descubre tu estrategia te convertirías en previsible, pero no por ello serás
previsible en otras partidas.
Para simular todo esto necesitas ser capaz de crear ciertos rasgos aleatorios que hagan que
volver a jugar a un juego sea interesante, pero también tiene que crear cierta previsibilidad para que
el humano pueda determinar la estrategia del contrario para combatirla.
Soporte
A menudo, el jugador humano selecciona un compañero de la máquina para que sea su aliado.
La mayoría de las tareas que tiene que realizar este aliado no suelen ser difíciles de implementar. El
problema reside en la comunicación con el jugador humano. Al final se opta por usar una serie de
comandos que sirven para dar ordenes concretas al compañero, como en RE 4 con comandos como
“párate” o “sígueme”.
Imprevistos
Este es un componente fundamental. Es fundamental esforzarse por introducir gran cantidad de
elementos sorpresivos. Sin embargo, hay una clase de imprevistos que son difíciles de emular. Es la
estupidez creíble. Aparentemente estas acciones pueden parecer poco beneficiosos para conseguir el
objetivo, pero son cosas que un humano perfectamente podría intentar hacer. En un juego de rol
esto podría ser usar una magia que a causa de un efecto espejo en el enemigo acabara debilitando al
que lo lanzó.
Ganar, perder y perder bien.
Cuando un jugador se sienta a jugar, quiere ganar, y quiere ganar en los juegos donde es posible
ganar. En este aspecto hay dos tipos de jugadores. Los que quieren ganar siempre y los que quieren
ganar aproximadamente la mitad de veces que juegan. Si ganar no se convierte en un reto, deja de
ser divertido.
Es bastante fácil desarrollar una IA que gane la mayoría de las veces. Basta con variar el
número y calidad de oponentes para afectar el resultado final. En un juego de estrategia se puede
aumentar la puntería o el daño que producen las armas, en un juego de fútbol es fácil hacer que la
máquina marque cada vez que tire, o en un shooter mandar muchos enemigos para pararnos. El
problema de esto es la credibilidad de estos oponentes. No sería normal que cada vez que tirara un
jugador fuera gol. Realmente, la máquina esta haciendo trampas. En estos casos lo realmente
importante es parametrizar la dificultad para que el juego pueda adaptarse a las necesidades del
jugador.
Redes Neuronales
4 formas principales de usar redes neuronales
Principalmente, y con idea de generalizar, hay 4 formas fundamentales de usar las redes
neuronales en los videojuegos.
Control
En muchos juegos hay unidades mecánicas que hay que controlar y manejar. Se puede usar una
red para pilotar naves espaciales o aviones. En cualquier caso, se tiene una o varias entradas a la red
y una o más salidas que en definitiva son las que sirven para manejar el medio de locomoción que
estemos manejando.
De hecho, muchos juegos de carreras han usado redes neuronales para controlar los coches
manejados por la máquina. Ademas, estas redes suelen ser entrenadas a través de como los
desarrolladores manejan los coches. Entre estos juegos esta el popular Colin McRae Rally.
Valoración de riesgo
Otro ejemplo podría ser un juego de estrategia en el que el jugador ha desarrollado tecnología y
ha entrenado unidades para defenderse o atacar al enemigo manejado por la computadora. Podemos
usar una red neuronal para que la máquina pueda valorar a que tipo de riesgo se está enfrentando,
para así poder reaccionar y actuar en función de esto.
Las entradas de esta red podrían incluir el número de enemigos (los que dispone el jugador), el
número de unidades aéreas, cuántas unidades se están moviendo, el rango de las unidades de tierra y
el rango de las unidades de aire. La salida de la red podría ser uno de 4 posibles riesgos que
hayamos considerado, como un riesgo de ataque terrestre, riesgo de ataque aéreo, ataque
combinado, o sin riesgo. Si se le dan los datos apropiados a la red, esta puede determinar o predecir
que esta tramando el jugador, y poner remedio a ello, como fabricar más baterías antiaéreas, por
ejemplo.
Este mecanismo seguramente necesitará entrenamiento dentro del juego y la validación de la
red, con los riesgos que eso conlleva, pero tiene la ventaja de adaptarse a cada jugador y ahorrarnos
el trabajazo de escribir todas las posibles combinaciones a base de reglas o máquinas de estado
finito.
Atacar o huir.
Digamos que estamos en un juego de rol y decidimos usar una red neuronal para controlar el
comportamiento de las criaturas que vivirán en el mundo virtual que creemos. Esta red realizará el
proceso de decisión de la criatura, es decir, si esta debe atacar, huir, o deambular sin hacer nada en
concreto, dependiendo de lo que ocurre a su alrededor.
Pensemos en un red de 4 entradas: el número de criaturas que hay alrededor de la misma
naturaleza que la del agente manejado por la red (para indicarle al agente si esta viajando en grupo o
solo), la cantidad de puntos de ataque o de salud, una indicación de si otra criatura lo ha llamado
para entrar en combate y finalmente, el rango del enemigo.
Por supuesto se pueden añadir muchas más entradas y salidas. Podemos añadir como entrada si
a quien nos enfrentamos es un guerrero o un mago, ya que hay criaturas que se son mejores contra
uno contra otro. Si consideramos que estamos incurriendo en cheating con esto, podemos usar redes
bayesianas para aumentar la incertidumbre.
Podemos permitir a la red neuronal que evolucione usando un poco de entrenamiento positivo o
negativo. Si una criatura toma una decisión siguiendo las indicaciones de la red, y a causa de esto
muere, podemos intuir que ha sido una mala decisión.
Anticipación.
Aquí usaremos la red neuronal para intentar predecir los movimientos del jugador. Esto puede
ser muy útil en un juego de peleas. La presunción inicial es que un jugador intentará y usara
combinaciones de botones para causar el mayor daño posible, y que cuando encuentre una
combinación que le sea favorable, la explotará a menudo. La idea de la red es de entrenarla in situ.
Tenemos 3 entradas, por ejemplo, que sean los 3 ultimo movimientos, y una salida, que es la
predicción del siguiente movimiento. Si acertamos, reforzamos eso, si no, lo aprendemos. En el
caso de acertar podemos reaccionar convenientemente a ese movimiento, agachándonos o
contraatacando, por ejemplo. Hay que remarcar que esto hace que los jugadores no se estanquen en
hacer siempre lo mismo, intentando innovar. Virtual fighter de Sega, usa este tipo de técnica.
Pros Y contras
Los juegos tienen el mismo tipo de problemas que el resto de las industria en cuanto a redes
neuronales se refiere, así que las redes neuronales han de ser usadas en un pequeño número de
problemas relacionados con reconocimiento de patrones o predicción. Siempre que se pueda
identificar un patrón dentro de un sistema, esto lógicamente conlleva que se debe ser capaz de usar
esos patrones para realizar decisiones dentro del sistema, determinar que decisiones se están
tomando en un momento dado o usar la información recopilada para intentar predecir que va a pasar
en el futuro. Estos tres usos pueden ser útiles para la IA de un juego. En la forma más básica, las
redes neuronales pueden ser entrenadas para convertirse en una especie de caja negra muy útil para
realizar operaciones costosas como pudiera ser la selección de animaciones (como por ejemplo las
animaciones de un jugador de baloncesto, en función de los jugadores que tiene alrededor, sus
porcentajes, el nivel de dificultad, etc). Este tipo de decisiones son análogas al uso de patrones para
la toma de decisiones. El reconocimiento de patrones en este caso puede usarse para formar la base
del sistema de modelado del jugador para formar la parte principal del la IA del jugador manejado
por el humano, para poder predecir las acciones que este hará. Finalmente, aunque esto es muy poco
común en los juegos, las redes neuronales pueden usarse para almacenar información, permitiendo
el aprendizaje continuar activo durante la vida jugable del juego, y de esta forma permitir a la red
neuronal que se adapte al jugador. Esto se usa poco porque no se sabe como va a aprender la red
una vez en juego, no se va a poder controlar, y en la mayoría de los casos no se consigue el
funcionamiento esperado, por lo que se suele optar por no incluir este aspecto. Algunos juegos si
que lo incorporan, pero restringen severamente los campos donde el juego puede aprender, para
intentar minimizar el elemento aleatorio dentro del mundo virtual. Los jugadores del B&W habrían
sufrido mucho si las criaturas hubieran exhibido el llamado aprendizaje catastrófico
Pros
•
Las redes neuronales son una manera muy eficiente de encontrar relaciones abstractas entre
condiciones de entrada. Pueden almacenar fácilmente conocimiento esotérico de forma que
sea accesible de manera rápida y optimizada.
•
Las redes neuronales pueden encontrar las soluciones de funciones matemáticas muy
complejas. Estas funciones son presentadas fundamentalmente mediante los pesos de las
RN, así que usando una red dentro del juego, estamos ahorrando CPU. Está
matemáticamente demostrado que una RN con al menos una capa y una función de
activación no lineal puede representar casi cualquier función vectorial de dimensión finita.
•
Las redes tienen la increíble habilidad de obtener un patrón a partir de datos no lineales o
impredecibles. Pueden generalizar conexiones y relaciones entre datos que aparentemente
no la tienen. Una red bien entrenada y bien diseñada puede generalizar incluso mejor que un
humano experto.
•
El entrenamiento requiere, una vez que la red ha sido determinada, a modo comparativo, una
pequeña fracción de CPU de lo que necesitan los métodos de prueba y error.
Contras:
•
Las redes son una manera extraordinaria de solucionar algunos problemas, pero tiene el
inconveniente del entrenamiento, del cual dependerá en gran medida su desempeño. Hemos
cambiado un problema por otro. Hemos cambiado el problema de como resolver un
problema, por el problema de como entrenar la red para que funcione correctamente, lo cual
se ha mostrado como un problema exponencialmente difícil.
•
Las RN no son mágicas, si introduces datos erróneos, los asimilará. Si se usan entradas
aleatorias, muy numerosas, o simplemente falsas a la red, seguramente la red encuentre
alguna correlación entre ellos, lo cual no quiere decir que nos interese que en la salida se
muestre esta correlación entre datos erróneos. Por lo general, estas relaciones incorrectas
solo se descubren una vez que la red ya ha sido entrenada. Puede ser que con nuestras
pruebas y testeos no descubramos estos errores, y se descubran con el producto ya en la
calle.
•
Una RN es una caja negra matemática, y por ello, es muy difícil o prácticamente imposible
depurarla. Una vez entrenada, los pesos dentro de una RN son totalmente incomprensibles.
No se puede hacer como en un árbol de decisión, en el que puedes determinar que es lo que
va a hacer el árbol. La información dentro de la red está distribuida de manera total y
paralelamente. Depurar una RN puede implicar volver al principio, cambiar los datos de
entrenamiento o los parámetros de inicio, y volver a entrenarla.
•
Todos los campos de entrada tienen que ser numéricos. Los valores difusos, o los valores
que se representan mejor mediante una expresión, no pueden modelarse dentro de una RN.
En estos casos es mejor usar un sistema jerárquico, dejando las redes neuronales para los
elementos más sencillos, y usando estructuras más elevadas (como los árboles de decisión)
para manejar los casos más extraños o peor definidos.
•
Las RN son difíciles de implementar, debido al gran número de factores que se deben
determinar sin ningún tipo de guía o regla para determinarlos de la mejor manera. Estos
factores incluyen la estructura de la red, la elección de las entradas y salidas, la función de
activación, la tasa de aprendizaje, los casos de entrenamiento, etc. Las redes son también
muy sensibles a factores aleatorios como la inicialización de los pesos o las entradas
redundantes.
•
Las redes algunas veces sufren el llamado aprendizaje catastrófico. Esto ocurre cuando a una
red casi terminada de entrenar se le introduce entrenamiento adicional que deshace
totalmente todo lo aprendido con anterioridad.
•
Se necesita mucho tiempo de CPU y mucho entrenamiento en ciertos casos, especialmente
cuando el escenario de aprendizaje es complejo dentro de un espacio de búsqueda grande. Si
aparecen errores en el testeo a causa de una RN que forme parte de la IA, el esfuerzo del
reentrenamiento puede ser prohibitivo, así que hay que estar muy seguro de usar este tipo de
técnicas y tener esto muy en cuenta.
•
Las RN son difícilmente ampliables. Las redes grandes de cientos de nodos son raras y muy
poco estables. Aunque la razón de esto es totalmente desconocida, parece ser que una
posible razón es que las redes tan grandes tienen mucha libertad de movimiento dentro del
espacio de búsqueda, por lo cual la red puede variar ciclicamente sus pesos, no llegando
nunca a una solución. Este problema no se va a dar nunca en las redes usadas en videojuegos
ya que no es en absoluto necesario usar redes tan grandes.
Algunos Juegos que usan Redes Neuronales
Battlecruiser: 3000 AD:
El primer juego comercial que usaba redes neuronales en su inteligencia artificial. El juego es el
típico matamarcianos. En él, las naves manejadas por la máquina eran guiadas mediante una red
neuronal. Parece ser que el resultado dejó bastante que desear.
Serie Creatures:
Esta serie es probablemente la serie que, junto con los juegos Sim, más técnicas de inteligencia
artificial usa. Usa redes neuronales, algoritmos genéticos, etc. Esto tiene sentido por el objetivo del
juego, que no es otro que ver como se comportan las criaturas que pueblan el juego.
Empiezas el juego con 6 Norns (así se llaman los muñequitos), cada uno con un ADN propio, y
distinto. Según afirmar los desarrolladores no hay dos Norns con la misma carga genética. De
hecho, parece ser que cuando dos Norns se reproducen, introducen su ADN en la nueva criatura. No
puedes controlar directamente a los personajes, pero si puedes interaccionar con ellos a través de su
entorno, moviendo objetos del escenario por ejemplo, recompensándolos cuando hagan algo bueno
o castigándolos cuando hagan algo malo, para poder así hacer crecer a la colonia. Las redes en este
juego se usan para que los Norns aprendan del entorno y se vayan comportando de modo distinto a
medida que nosotros interaccionamos con ellos.
Close Combat:
Juego de estrategia en el que nuestro objetivo es conquistar una serie de puentes ayudados por
un batallón.
Close Combat iba a ser el primer juego en usar blackboard technology para guiar a través del
juego tanto al jugador como al escuadrón manejado por la computadora, que en este caso son
aliados del jugador. Este tipo de tecnología consiste en la cooperación de un grupo de inteligencias
artificiales (que pueden estar construidas con redes neuronales, con algoritmos genéticos, o con lo
que sea) para resolver un problema global solucionando subproblemas.
Desafortunadamente, no consiguieron un resultado aceptable en la fase de producción del título,
lo que nos hace ver lo difícil que es implementar con éxito este tipo de técnicas, así que finalmente
optaron por usar técnicas más tradicionales.
Dirt Track Racing
Juego de carreras que paso sin pena ni gloria por el mercado internacional. Como juego no tiene
nada de especial, pero lo interesante es que usó redes neuronales para la conducción de los coches
manejados por la máquina.
Dynamic Gin.
Juego para PC imitando un juego de tablero, que integra para jugar una red neuronal, pero que
la diferencia de las redes neuronales de otros juegos de tablero que había en ese momento en el
mercado, en que la red esta preparada para aprender del jugador, de sus jugadas y de sus estrategias,
pudiendo no solo estar alertar para contrarreestarlas, si no también para usarlas en cualquier otro
momento contra el jugador.
Fields of Battle:
Juego de estrategia en el que nuestro objetivo es controlar el mapa de Europa, en el que la
producción de recursos propios y el sabotaje de los recursos ajenos son claves. Con una interfaz
parecida al Shogun o Medieval: Total War.
Lo que hace interesante a este juego desde el punto de vista de la IA es el uso de redes
neuronales para manejar el jugador de la CPU. Este es realmente el primer juego que tiene
totalmente implementada su IA sobre las redes neuronales, ya que las usa para todo, para gestionar
los recursos, para negociar con el jugador humano, para manejar las tropas, etc.
Heavy Gear:
Juego de combate táctico en el que manejamos a unos robots. Según Dustin Browder, diseñador
de la IA del juego, cada robot tenia varios “cerebros” en el que cada uno manejaba un aspecto del
comportamiento de los robots. Cada uno de estos cerebros era una red neuronal. Ademas, se
permitió que el juego siguiera aprendiendo con el uso del jugador humano, para que los robots
aprendieran de las acciones de éste.
7th Legion:
Este fue uno de los primeros juegos de estrategia real que implementó una red neuronal con
aprendizaje en tiempo real, lo cual quiere decir que en vez de tener una serie predeterminada de
acciones en reacción a lo que el humano podría hacer, en el cual no estarían todas las cosas que
realmente se podrían a hacer, la red neuronal capta lo que el jugador hace, para usarlo en el futuro.
Esto dicho es muy bonito, pero la realidad es que el juego no consiguió su propósito, aparte de que
este uso de las RN fue lo que primeramente anunciaron a la prensa, aunque más tarde añadieron
ciertos patrones de comportamiento a la IA para que no actuara de forma tan caótica y torpe.
Third Reich:
Otro ejemplo de querer y no poder. Este juego iba a usar redes neuronales para guiar a la
computadora para reconocer las estrategias del jugador humano y contrareestarlas eficientemente, y
para guiar a la computadora en seleccionar su propia estrategia para derrotar al enemigo. La red iba
a ser entrenada durante un par de años mediante cientos de estrategias y partidas para que fuera
aprendiendo.
Sin embargo, la red nunca aprendió satisfactoriamente. Su comportamiento era impredecible,
totalmente aleatorio y muy inestable. Se perdieron miles de horas de trabajo y mucho dinero. Al
final descartaron totalmente la red y usaron técnicas tradicionales. Sucesos como este han hecho
que los productores y desarrolladores tengan miedo al uso de las redes y a sus posibles efectos
negativos.
Consideraciones de diseño.
Las redes neuronales definitivamente no son la panacea para todo, especialmente en juegos,
donde su inflexibilidad en cuestiones de depuración y extensión las hacen difícil de sintonizar con
las necesidades relativas a la jugabilidad.
Tipos de soluciones:
Las redes neuronales son geniales cuando tienes sistemas simples y modulares que conviertan
entradas a salida. A causa de esto, tienden a ser mucho más usadas en problemas simples, que en
soluciones de alto nivel. No se usan para manejar la diplomacia en un juego de estrategia, por
ejemplo. Esta tarea es simplemente demasiado grande, compleja y necesita mucho esfuerzo. Pero si
la puedes usar para decidir que animación lucirá un personaje. En este caso tenemos una tarea muy
atómica, con entradas muy especificas al igual que las salidas. La lógica para construir esto junto
con las técnicas más comunes podría suponer bastante trabajo de CPU y ser difícil desarrollar. Una
red pequeña es mucho menos costosa en CPU, y la red finalizada no necesitará cambios a no ser
que se añadan nuevas animaciones al juego (en cuyo caso, también deberían ser revisadas otras
técnicas de todas formas, no solo las redes neuronales).
Interacción del agente.
Las redes neuronales puede optimizar el uso de la CPU, así que su uso puede hacer que los
agentes artificiales reaccione más rápidamente ante los estímulos. Esto realmente, con el hardware
actual, no es algo que preocupe demasiado, pero en su tiempo tuvo su importancia.
Realismo del Sistema
En muchos casos, las redes neuronales ayudan a los sistemas a parecer mucho más realistas,
principalmente porque son sistemas de generación de patrones, lo cual los diferencia bastante de las
maquinas de estado finito o los sistemas basados en guiones en los que dichos sistemas reaccionan
de manera especifica a un escenario dado. A causa de esto, la red podría reaccionar de manera
“errónea”, pero de cierta forma puede parecer que lo hace bien, porque el patrón se mantiene por
alguna razón. La gente se sigue equivocando una y otra vez en las mismas cosas, porque seguimos
usando el mismo patrón general en nuestras mentes. Depende del juego que estés desarrollando
podría ser interesante que los agentes tuvieran comportamientos poco esperados , como en las
aventuras gráficas donde se tiende al humor, como podría ser un personaje que se choca con una
puerta. Al final, todo depende de que es lo que queramos tener, ya que en otros juegos este tipo de
errores, son inaceptables, como juegos de carreras en los que los oponentes no son capaces de dejar
de chocar contra la pared.
Género y plataforma.
Estas cuestiones no son determinantes ni son un factor limitante. Las redes neuronales son
realmente una técnica modular, muy útil cuando se tienen un problema especifico que necesita
clasificación o predicción.
Limitaciones de diseño.
Aquí se encuentra el principal asunto cuando se piensa en usar las redes para un juego. Como se
ha dicho anteriormente, las RN necesitan de un gran esfuerzo para diseñar la red y para recopilar los
datos de prueba. También se requiere un periodo significativo para entrenarla adecuadamente, y
otro tiempo más para ponerla a punto por si algo no ha salido correctamente. Si finalmente se opta
por permitir que la red aprenda durante la vida real del juego, la red necesitará un tiempo incluso
mayor que antes en su etapa de diseño.
Bibliografía:
Brian Schwab. AI Game Engine Programming. Charles River Media. 2004.
Steve Rabin et Al. AI game Programming Wisdom. Charles River Media.
Mat Buckland. AI Techniques for Game Programming. Premier Press. 2002.
Mat Buckland. Programming Game AI by Examples. Wordware Publishing. 2005.
En internet:
www.gameai.com
www.ai-depot.com
www.gamedev.net
www.gamasutra.com/
Descargar