machine-learning - significado - machine learning traduccion
Aprendizaje automático en Game AI (13)
Además de mi respuesta anterior, hay un documento sobre esto:
Aprendizaje automático en juegos digitales: una encuesta
Tenga en cuenta que la mayoría (pero no todos) de los juegos enumerados dentro son ejercicios puramente académicos, como se esperaba.
En los viejos tiempos de los juegos, estoy seguro de que las simples declaraciones de cambio / caso (en cierto sentido) habrían funcionado bien para la mayor parte del juego "IA". Sin embargo, como los juegos se han vuelto cada vez más complejos, especialmente en el salto 3D, se necesitan algoritmos más complejos. Mi pregunta es, ¿los algoritmos reales de aprendizaje automático (como el aprendizaje por refuerzo) se usan en el juego AI en este momento? ¿O es todavía mayormente solo en proyectos de investigación en universidades (a las que he estado expuesto)?
Si no se trata de algoritmos de aprendizaje automático, ¿qué es lo que está impulsando la inteligencia artificial de los juegos comerciales? ¿Se trata simplemente de algoritmos altamente complejos pero estáticos (sin ML) que pueden cubrir la mayoría de las posibilidades? Y si es así, ¿qué tipos reales de algoritmos se utilizan?
Siempre he tenido curiosidad acerca de esto, ¡gracias!
Editar: Después de pensarlo un poco más puedo aclarar un poco más. ¿Cómo toman decisiones los agentes en el juego? Si no están usando algoritmos de aprendizaje reales en tiempo real, ¿se usó quizás un algoritmo de aprendizaje en las etapas de desarrollo para producir un modelo (algoritmo estático) y ese modelo luego se usa para tomar decisiones en el juego? ¿O era un algoritmo estático para la toma de decisiones codificado a mano en cierto sentido?
Creo que varios juegos usan redes neuronales (más o menos complejas).
El juego Spore utiliza algunos algoritmos genéticos avanzados para simular las formas de vida en el juego.
Me gustaría argumentar que ML puede usarse en videojuegos. A continuación, se muestra una investigación muy avanzada sobre la combinación de redes neuronales y enfoques evolutivos para crear una nueva clase de experiencia de juego. Tuve el gran placer de tomar clases del inventor de este algoritmo: NEAT . No es una solución perfecta, pero muestra un gran potencial.
Muchas veces no es necesario que haya ningún aprendizaje real en el motor de IA (ver la respuesta de Kylotan).
Sin embargo, un algoritmo de IA de aprendizaje puede ser relativamente fácil de diseñar para una tarea muy específica y simple. Mi idea era darle a la computadora alguna dirección en la tarea, pero luego también codificar en reconocimiento de patrones para que pueda aprender de sus errores. Al descomponer a la IA en estos componentes, se convierte en algo que mi débil mente puede comprender.
Puedes tomar Tic Tac Toe como un simple ejemplo. Escribí un juego de Tic Tac Toe con AI hace unos meses. Simplemente le di al equipo el conocimiento de las reglas y cómo bloquear un movimiento ganador, eso es todo. Luego puede configurarlo para que se reproduzca y detrás de las escenas está manteniendo una lista de movimientos pasados y reconoce patrones a medida que avanza, volviéndose "más inteligente" a medida que adquiere experiencia.
Después de 10.000 juegos más o menos si juegas tú mismo, puede ser difícil de superar. La IA en este juego podría optimizarse para aprender mucho más rápido si tomo en consideración las reflexiones y rotaciones del tablero. Pero todavía era un ejemplo divertido de trabajo de un motor de IA de aprendizaje.
Desde un punto de vista práctico, sin embargo, un algoritmo de aprendizaje puede no valer la potencia de procesamiento en un juego. Después de todo, la computadora tiene que mantener una lista o algún tipo de estructura para almacenar su inteligencia aprendida. Y eso significa más uso de RAM y, potencialmente, algunas búsquedas costosas. Y con un juego con muchas piezas en movimiento, esto puede sumar.
No creo que el aprendizaje automático sea muy común en juegos comerciales todavía, pero un ejemplo notable fue Black & White , que consistía en entrenar a una mascota y hacer que los habitantes del juego creyeran en el jugador.
No tiene sentido tener ML en los juegos, al menos en la mayoría de los juegos de consumo, porque la IA sería muy difícil de superar y, por lo tanto, no sería agradable para el jugador. Gran parte del esfuerzo en la IA del juego se divide en tres partes: la primera es permitir que la computadora haga trampa. es decir, la IA normalmente sabe dónde está el jugador y conoce de antemano las mejores rutas alrededor del entorno. Esto es necesario porque, de lo contrario, la IA estaría cayendo en callejones sin salida todo el tiempo, lo cual no es genial. El otro esfuerzo principal en el trabajo de IA es hacer que los PNJ sean lo suficientemente tontos para que el jugador los venza. Es bastante fácil que la inteligencia artificial se escriba para vencer siempre al jugador (piensa en Half Life donde te enfrentas a un equipo de infantes de marina), la parte difícil es equilibrar la apariencia de la IA con la jugabilidad. La parte final es asegurarse de que la IA solo consuma una cantidad limitada de recursos, tanto en términos de tiempo de CPU como de uso de memoria.
Otro punto negativo del uso de ML es que el estado de la IA debe almacenarse entre sesiones, de lo contrario la IA tendrá que comenzar desde cero cada vez. En una PC esto no es un problema, pero las consolas solían tener un almacenamiento a largo plazo muy limitado que descartaba guardar la información del estado.
Un ejemplo de ''trampa'' de AI: en Transport Tycoon, las compañías de IA nunca fueron acusadas de modificar la altura del terreno. Lo sé porque lo porté a la Mac hace muchos años.
El primer FPS que hice, la IA siempre se dirigió hacia el jugador, pero la dirección se ponderaría con una muestra aleatoria de una distribución normal, por lo que la mayoría de las veces la dirección era hacia el jugador, pero ocasionalmente la dirección estaba muy lejos, ayudó a la IA a salir de callejones sin salida. Esto fue en los días previos a que había suficiente CPU para hacer una búsqueda A *.
No. Los agentes no están entrenados en modelos de aprendizaje automático en el juego. Eso sería realmente más costoso en la etapa de producción y sería inútil.
Si estás interesado en aprender sobre varias IAs, me Xpilot-AI con Xpilot-AI . El bot "estrella" creado por las personas que ejecutaban el proyecto era un controlador fijo basado en reglas, que a su vez era producto de un algoritmo genético. Así es como sucedió:
- Construyeron un bot básico basado en reglas (si estamos a punto de golpear la pared, gire a la izquierda y configure los propulsores a pleno ...)
- Rompieron el controlador bot en parámetros (entonces, en lugar de un condicional fijo "a punto de golpear la pared", lo dividirías en "distancia a la pared <X", "nuestro rumbo está dentro de Y grados de la pared", y " velocidad> Z. ")
- Los algoritmos genéticos se utilizaron para entrenar los valores óptimos de X, Y, Z, y así sucesivamente.
- Después de un período de aprendizaje, los valores se copiaron en la fuente del bot y se declaró "hecho".
Por lo tanto, aunque el aprendizaje activo puede ser costoso desde el punto de vista de la computación a mitad del juego, sigue siendo valioso usar algoritmos de aprendizaje para crear tu IA, si no crees que puedes hacerlo lo suficientemente inteligente.
Otro beneficio de los Algoritmos Genéticos es que puedes definir el resultado "correcto" como un robot que ganará el 15% del tiempo, para entrenar a un robot de modo fácil.
Una gran cantidad de juegos solo usan máquinas de estado finito
Hay algunos recursos realmente buenos en la red sobre esto:
Una búsqueda A * y parientes llamados cosas como HPA * son probablemente el concepto más completo de inteligencia artificial en la industria de los videojuegos. Suelen pensarse y hablarse de algoritmos de determinación de ruta del terreno, pero ocasionalmente alguien se da cuenta de que pueden ser utilizados para "buscar" dentro de espacios como árboles de decisión, y entonces las cosas se vuelven realmente interesantes.
La poda Alpha-Beta impulsa los juegos de mesa, incluido el ajedrez, juegos más sencillos. Esta es una forma de podar un espacio de estado para permitir una búsqueda eficiente. Las variantes de búsqueda A * permiten explorar un tablero en simulaciones de robots, etc. Ambos son algoritmos de "IA clásica" y no algoritmos de aprendizaje automático per se. El jugador Samuel''s Checkers y TD-Gammon son ejemplos del uso del aprendizaje de refuerzo para jugar Damas y Backgammon, respectivamente.
EDITAR : Tenga en cuenta que esta respuesta tiene más de media década de antigüedad. El aprendizaje automático ha progresado mucho en ese momento y es probable que lo que se usa en los juegos también haya cambiado. La respuesta original sigue.
Creo que estás sobreestimando las capacidades de la mayoría de los juegos modernos de IA; lo cual es genial, porque eso es exactamente lo que los desarrolladores de juegos modernos están esperando. Invierten tiempo en hacer que el sistema parezca más inteligente de lo que es, por ejemplo, haciendo que los personajes de IA hablen sobre lo que van a hacer, o siguiendo ocasionalmente guiones preestablecidos que realizan una compleja serie de tareas.
Si no son algoritmos reales de aprendizaje automático, entonces ¿qué es lo que está impulsando la inteligencia artificial de los juegos AI? ¿Se trata simplemente de algoritmos altamente complejos pero estáticos (sin ML) que pueden cubrir la mayoría de las posibilidades?
En realidad, hay muy pocas posibilidades por lo general. Como se menciona en otra respuesta, normalmente hay una máquina de estados finitos en el trabajo. p.ej. Un enemigo típico en un juego de disparos puede estar en uno de los siguientes estados: inactivo, alerta (saben que hay problemas cerca), cazando (están buscando un enemigo), atacando (pueden ver al enemigo y atacarlo), y huyendo (están intentando escapar de un enemigo). Las transiciones entre los estados pueden ser eventos simples como un ruido que se escucha, un oponente visto, un valor de salud que cae por debajo de un cierto umbral, etc. Muy trivial, realmente.
La implementación de cada estado generalmente se puede descomponer en un pequeño número de acciones simples, por ej. moverse a la posición, mirar en dirección, disparar al objetivo, etc. Estas actividades de bajo nivel están bien documentadas y son ampliamente utilizadas. (por ej., A * busca pathfinding, vector math para dirección y orientación). Todos estos componentes funcionan igual de bien en 3D que en 2D, en su mayor parte.
Además, la IA de aspecto más complejo a menudo está guionizada, lo que quiere decir que el comportamiento está preprogramado en un lenguaje de programación simple para trabajar en una situación de juego muy específica. Los scripts para situaciones específicas pueden hacer suposiciones sobre el entorno (por ejemplo, la ubicación de la cubierta para esconderse detrás, la proximidad de aliados y enemigos, etc.) y pueden proporcionar objetivos muy específicos en consecuencia. Los guiones más generales pueden ser activados por un conjunto de tipos de eventos predeterminados (por ejemplo, Enemy Seen, Ally Killed, No Identified Noise Heard) y respuestas muy simples escritas en cada caso (por ej. IF self.health> 75% ENTONCES atacan NearestEnemy ELSE fleeToSafety).
... fue un algoritmo de aprendizaje tal vez utilizado en las etapas de desarrollo para producir un modelo (algoritmo estático), y ese modelo se utiliza para tomar decisiones en el juego?
Esto es bastante común en situaciones que modelan vehículos, como juegos de carreras: puede alimentar un algoritmo de la pista de carreras como una serie de puntos e insumos basados en esos puntos, y obtener un algoritmo de aprendizaje para desarrollar una estrategia que complete las vueltas en el mejor momento. Eventualmente puedes enviar eso con el juego. Pero eso es un mapeo simple de un pequeño número de entradas (ángulo de avance, proximidad de obstáculos, velocidad actual) a un pequeño número de salidas (velocidad deseada, dirección deseada), que se presta bien al aprendizaje automático. Los juegos que simulan el comportamiento humano rara vez pueden recurrir a estas aproximaciones de funciones simples, por lo que tendemos a confiar en la simulación manual de distintos estados de comportamiento.
A veces podría haber un enfoque híbrido, donde las transiciones de máquina de estados finitos podrían ser entrenadas para ser más óptimas, pero es poco probable que figure en muchos juegos en la práctica, ya que las transiciones realistas suelen ser triviales para que el diseñador las implemente.