Primera Lectura Libro de Clases

Anuncio
Departamento de Sistemas de Información
Desarrollo de Videojuegos 2D en Java con técnicas de
Inteligencia Artificial
Libro de texto creado para la asignatura
Escrito por:
Dr. Clemente Rubio Manzano
Prologo por Michio Kaku.
Algunas personas piensan que la inteligencia es el gran logro de la evolución. Pues bien, si esto es así, entonces deberían haber existido muchas
más especies inteligentes sobre el planeta Tierra. Pero, por lo que sabemos,
somos los únicos. Los dinosaurios, que estuvieron en el planeta durante más
de doscientos millones de años, no llegaron a ser inteligentes.
Los humanos modernos, han estado en la Tierra aproximadamente ciento
de miles de años, una pequeña fracción de la edad de la Tierra, que se estima
en 4.5 billones de años. Por tanto podríamos sacar una primero conclusión,
la inteligencia no es realmente necesaria para la vida. La madre naturaleza
se las ha ingeniado bastante bien sin criaturas inteligentes.
Pero, ¿Cómo nos hicimos inteligentes? ¿Qué nos diferencia de los animales? Hay tres ingredientes básicos. Uno es el pulgar oponible que nos permite
manipular el entorno. Así que, este es uno de los ingredientes secretos, ser
capaces de cambiar el mundo que nos rodea. El segundo ingrediente es la
visión. Pero no cualquier visión, una visión de depredador. Tenemos ojos en
la frontal de nuestra cabeza, no a los lados y ¿por qué?, porque los animales
con ojos en la parte frontal son depredadores (leones, tigres, zorros). Los animales con ojos a los lados son presas y no son inteligentes, como por ejemplo
un conejo. Un depredador tiene que aprender a cazar y acechar, aprender a
predecir los movimientos de la presa, si no, no podrá comer. Si tú eres un
conejo lo único que debes hacer es correr. El tercer ingrediente es el lenguaje porque debes poder comunicarte para que tu conocimiento adquirido
durante tu vida pase de generación en generación y por lo que sabemos los
animales aunque se comunican no permiten la transmisión de conocimiento,
salvo algunas señales primitivas. Los animales no tienen cultura, en el sentido más amplio de la palabra, nosotros sí y somos capaces de transmitirla
de forma eficaz.
Así se supone que el cerebro evolucionó. Tenemos pulgar oponible, tenemos un lenguaje de entre cinco a diez mil palabras y tenemos la visión de un
depredador. Por tanto, quizás la razón por la que ninguna criatura consiguió
ser inteligente es que no cuenta con estos tres ingredientes.
Entonces, la siguiente pregunta si podemos crear seres inteligentes. ¿Podemos hacer que un chimpancé sea inteligente como ocurrió en el planeta de
los simios?. Pues lo creas o no, la respuesta podría ser que sí. Somos iguales
a ellos en un 98.5 por ciento. Por tanto, en el futuro mediante una terapia
genética podríamos crear seres inteligentes. Pero la pregunta y la controversia, por qué manipular un chimpancé para que sea más y más humano, si
ya conocemos el resultado, nosotros.
Capítulo 1
Introducción a la
Inteligencia Artificial
La Inteligencia Artificial (IA o AI de sus siglas en inglés Artificial Intelligence) es una disciplina científica relativamente nueva cuyo objetivo es el diseño
e implementación de sistemas artificiales que permitan simular la inteligencia del ser humano, y con ello estar en disposición de realizar la mayoría de
nuestras habilidades cognitivas y motoras.
Hoy día, la IA está aún lejos de conseguir este reto, no se ha podido alcanzar aún las promesas iniciales, ni los increíbles predicciones de la industria
cinematográficas. Seguimos esperando a Terminator, al niño de IA o al sistema operativo romántico de Her; si es que alguna vez llegan, porque parece
que el par Hombre-Máquina es mucho más prometedor que el par MáquinaHombre. Parece más cercano conseguir hombres mejorados tecnológica y
genéticamente que máquinas que sean tan inteligentes como los hombres.
Porque si ya tenemos una gran máquina con un súper diseño, como es el
ser humano, por qué diseñar máquinas que nos imite en todos nuestros aspectos. ¿Tendría sentido crear máquinas que sufran o sientan dolor?. Este
interesante dilema estará fuera del alcance de este texto.
Sin embargo, la IA ha conseguido algunos hitos importantes: se ha desarrollado un software capaz de jugar a los videojuegos de Atari y superar a
los humanos en puntos; existen pacientes que han renunciado a sus manos
humanas dañadas por manos biónicas, se han creado poemas por computador que han conseguido engañar a los editores de revistas. Además de los
famosos casos con gran repercusión mediática como la victoria del supercomputador de IMB frente al campeón mundial de ajedrez o los campeones
del concurso Jeopardy de EEUU. O más recientemente, la victoria de una red
neuronal creada por la empresa DeepMind, propiedad de Google, consiguió
ganar al campeón del mundo del juego GO.
Tras este pequeño paréntesis nos toca hablar de la IA como asignatura
de Universidad, que es el tema que nos ocupa. La IA es una asignatura multidisciplinar, que podría cubrir una carrera en si misma, pues abarca áreas
tan diversas como la robótica o la biomecánica, las ciencias de la computación, la algorítmica, el análisis numérico. Pasando por las Ciencias de la
3
Cognición, hasta llegar a la filosofía o la antropología.
Si existiera una llamada Ingeniero en Inteligencia Artificial, algunos de los
ramos junto a sus profesores deberían ser:
1. Lógica y sentido común (John McCarthy).
2. Ciencias de la cognición e IA (Marvin Misky).
3. Resolución de problemas y Planificación (Nils J. Nilsson)
4. Computación con percepciones (Lofti Zadeh)
5. Probabilidad y Causalidad (Judea Pearl)
6. Computación Lingüística (Noam Chomsky)
7. Ingeniería del Conocimiento (Edward Feigenbaum)
Nosotros como ingenieros informáticos podríamos estar interesados en
cualquiera de ellas, pero en un curso de Introducción a la IA y por ser la
programación una de las competencias fundamentales de egreso, debemos
centrar nuestra atención en las técnicas de programación que permitan crear
programas informáticos que muestren un comportamiento autónomo e inteligente, es decir, crearemos sistemas software inteligentes. Y esto lo realizaremos desde una perspectiva novedosa, seremos los creadores de nuestro
propio mundo, dotaremos de movimiento a nuestras entidades y las programaremos para que realicen las funciones deseadas. La técnica con la que
trabajaremos a lo largo del curso será la Resolución de Problemas y la Planificación de rutas.
1.1.
Nuestro concepto de inteligencia
La inteligencia es un concepto con mucha controversia y sin una definición consensuada clara. Para definirla con cierto rigor y claridad necesitamos
acotarla. Para ello, vamos a crear un mundo artificial (virtual), lo más simple
o complejo que queramos, con los medios que dispongamos -y el tiempo, por
supuesto, con el que contemos, 4 meses en nuestro caso-. En este mundo
virtual habrá entidades, actores, con movimiento, sin movimiento que interactúan unos con otros.
Un humano podría interactuar con ese mundo virtual y se le podría encomendar una tarea o problema, capturar recompensas distribuidas por un
espacio 2D, por ejemplo. Éste sería capaz de resolverlo, con algo de entrenamiento, llegando incluso a obtener gran habilidad en ese proceso con el
transcurso del tiempo. La inteligencia es, en este contexto, la habilidad del
humano para capturar de la mejor forma posible las recompensas distribuidas por el escenario. Si las recompensas cambian de posición o, incluso, si
surgen nuevos elementos, un humano, tú mismo, sería capaz de adaptarse
a ese nuevo escenario, cambiar su comportamiento y volver a resolver el problema de la misma forma. La adaptación es, por tanto, como se ha determinado en la literatura especializada, unas de las cualidades más importantes
de los humanos y de su inteligencia, y continua, hoy día, siendo la principal
limitación de la IA (conocido desde sus inicios como FRAME PROBLEM). Hoy
día, ningún sistema que se haya sido creado por el hombre ha sido capaz de
adaptarse de igual forma que un humano, porque cuando crea un robot para patinar difícilmente éste podrá escalar una montaña, requerirá un nuevo
diseño, no solo cambiar su programación, también cambiar sus piezas, su
aparato locomotor artificial.
Por lo tanto, acotando, la IA será para nosotros la creación de un entorno
virtual y de unos agentes software que permitan simular a un humano, es decir, sustituirlo para la resolución de problemas en este entorno. Por ejemplo,
en el caso que nos ocupa la capacidad de recoger las recompensas distribuidas por el mundo virtual sin ser capturados por adversarios y esquivando los
obstáculos. Por tanto el concepto de agente será fundamental para nosotros.
1.2.
Diseño basado en agentes
El diseño basado en agentes hace uso de un conjunto de algoritmos de
persecución y escape, búsqueda de rutas, planificación, toma de decisión
para poder implementarlos en un entorno virtual. Los agentes se relacionan
directamente con el concepto de NPC (Non-player character), por tanto, en
este sentido, los videojuegos y los entornos virtuales se pueden considerar
sistemas multiagente. Por tanto, nuestro objetivo es estudiar cómo usar estos
agentes para que puedan emplearse en la construcción de entornos virtuales.
Existen, al menos, dos metodologías: diseño de agentes basados en comportamiento y diseño de agentes basados en objetivos.
Un agente es una entidad que recibe como entrada percepciones y devuelve acciones. Desde el punto de vista de la implementación un agente es
un programa que se instala sobre un entorno o arquitectura (mundo virtual). Los entornos con los que vamos a trabajar son entornos totalmente
observables, deterministas y discretos.
Los agentes se pueden programar en función de sus comportamientos
(e.g. atacar, huir). Para realizar una programación basada en comportamientos se deben seguir los siguientes pasos:
1. Estudiar el entorno. Definirlo formalmente mediante parámetros adecuados.
2. Analizar qué es lo qué debe ser capaz de hacer el agente (e.g. moverse,
esquivar obstáculos y oponentes, capturar recompensas.
3. Estudiar cuáles son los comportamientos diseñados y cuándo ocurren
en función del entorno
4. Asociar a cada comportamiento una funcionalidad. Establecer qué es lo
que debe ocurrir como acción asociada a cada comportamiento
Las técnicas habituales de implementación son las Máquinas de Estados
Finitas para implementar las transiciones de comportamiento y los algoritmos de búsqueda para implementar su funcionalidad asociada. Por ejemplo, en el caso del comecocos podríamos tener 3 comportamientos para los
fantasmas: inactivo, persiguiendo y huyendo. Se pasa del estado inactivo al
persiguiendo cuando han pasado dos segundos, del persiguiendo al huyendo
si el comecocos ha comido una pastilla, del huyendo al persiguiendo cuando han pasado diez segundos, de huyendo al inactivo cuando el comemos
está comiendo. Además deberíamos asociar dos funciones a cada comportamiento. la función huir() que deberá implementar la funcionalidad de este
comportamiento y la función perseguir() que implementará la funcionalidad del comportamiento persiguiendo.
Descargar