Tras la fotos de Prisma: el avance de la IA con redes neuronales

Me hablaron hace tiempo de la app Prisma para dispositivos móviles, y en principio no le presté mucha atención al considerarla otra herramienta mas de filtros de imagen, muy artísticos, eso sí. Sin embargo un día que la instalé y me puse a juguetear con ella, me di cuenta de que detrás de ella había mucho más: no es una simple modificación de colores, sino la creación de una nueva imagen pintada desde 0 por una Inteligencia Artificial.

Cádiz tras la tormenta: filtro prisma loneCádiz tras la tormenta: filtro prisma wave

¿Y cómo es que una IA aprendió a pintar, y de paso que el resultado no sea desastroso? Pues el sistema recibe 2 entradas, la imagen que queremos que reinterprete, y una de modelo de estilo. La foto modelo es analizada por una red neuronal de agentes, para determinar el tipo de trazo, colorido, composición, y un largo etcétera de características. Después, cada uno de ellos colaborará para redibujar sobre un nuevo lienzo vacío, basándose en los datos obtenidos en el paso anterior, la primera imagen suminstrada, haciendo varias iteraciones hasta obtener un resultado relativamente satisfactorio. Finalmente, se superpone la imagen final con la original, para corregir la definición de contornos y contraste, evitando el habitual “pues yo no diferencio nada con esos colores”. Lo mejor es que dada su complejidad, el proceso no suele tardar mucho mas de un minuto, pues otros sistemas del estilo y con calidad cercana a la que este ofrece pueden tardar cerca de 1 hora.

Cádiz tras la tormenta: filtro prisma electricCádiz tras la tormenta: filtro prisma comic

Así que el trabajo de innovación es realmente bueno, y más desde que se puede usar la versión más básica offline: esto demuestra que la red es eficiente al ser relativamente rápida en un sistema de gama baja (en mi móvil efectivamente va lento, pero mi tablet lo mueve rápido y tampoco es para echar cohetes), demostrando que no es que usen “un ordenador de la NASA” como servidor. Quien se queja de que tarda quizás no tiene claro lo que sucede de fondo, y quien comenta que otros servicios son mucho mas rápidos, probablemente esos mismos servicios requieran conexión a los servidores (y procesadores) de la respectiva empresa. Definitivamente estamos ante un buen trabajo de programación para lograr una algorítmica tan buena.

Anuncios

El uso de la tecnología de agentes inteligentes en juegos actuales

Si bien Civilizations marcó un antes y un después en el panorama de los videojuegos, el avance de la tecnología de agentes inteligentes no se ha quedado allí.
– En los FPS o First Person Shooters, el usuario tiene la impresión de jugar en un escenario virtual contra diferentes adversarios. Algunos, como Call of Duty, emplean tácticas de equipo para lograr sus objetivos.

– En los juegos de estrategia, ya sean en tiempo real, como Starcraft, o por turnos, como Space Empires existen desde decenas hasta centenares de agentes que deben trabajar en equipo para enfrentarse a otros equipos rivales, aunque en ocasiones, para simplificar existen decenas de grupos que se sincronizan para tomar las decisiones oportunas.

La pantalla de desarrollo militar de Space Empires V
La pantalla de desarrollo militar de Space Empires V

– En los RPGs o Role-Playing Game el usuario controla un personaje con un inventario y diversos poderes sobrenaturales, que se enfrenta a retos y resuelve conflictos. Un ejemplo reciente y muy interesante es The Witcher. En este juego, el jugador encarna el papel del protagonista de la famosa saga de libros polaca Wiedzmin (editada en España bajo el título de “La saga de Geralt de Rivia”), escrita por Andrezj Sapkowski, que es uno de los grandes iconos pop del país. El argumento sigue un esquema de siete capítulos de forma similar al esquema que siguen los libros, habiendo sacado varios momentos de los mismos directamente de los propios libros. Cada capítulo posee un ambiente único, no solo por la localización en la que se desarrolla, sino por la atmósfera que provocan los eventos desencadenados: se produce una rebelión, se firma la paz entre varias naciones, llega la época de la cosecha en una aldea cercana, etcétera. También se nota la influencia de la literatura del romanticismo polaco, ya que varios personajes están sacados directamente de esa fuente.

The Witcher: el brujo Geralt de Rivia en Wyzima
The Witcher: el brujo Geralt de Rivia en Wyzima

Según las decisiones que tome el jugador en nombre de Geralt y cómo este influencie a los personajes con los que interactúa, el comportamiento de los demás seres que viven en ese mundo medieval cambia por completo. Incluso se puede apreciar dentro de un capítulo el efecto de transmisión de rumores, cuando un personaje decide contarle a otro una serie de cosas que ha presenciado, y cómo a la luz de dicha información nueva cambia su forma de actuar. Las decisiones críticas tienen en general un carácter moral, y cada una de ellas tiene consecuencias mas o menos drásticas que alterarán el desarrollo de la trama, las secuencias de la historia e incluso el desenlace de la misma.

El juego emplea como base el motor “Aurora 2003” de Bioware, que destaca no por sus gráficos, sino por su adaptabilidad de cara a los RPGs. Se adaptó en el 2005 para mejorar su capacidad de edición y control de agentes, dando como resultado un nuevo sistema al que llamaron “Djinni”. Los agentes utilizan diversos parámetros para controlar a los personajes no jugadores o NPCs. Por un lado, está su papel en el mundo. Existen 170 tipos de papel de personaje, cada uno de ellos con al menos 1600 animaciones diferentes. Cada personaje tiene una rutina general dependiendo de la comunidad a la que pertenezca: se levanta, realiza diversas actividades relacionadas con su trabajo (por ejemplo, si es un pescador irá al muelle a pescar temprano, y a media mañana se encaminará hacia el mercado a vender su mercancía), busca interactuar con otros personajes conocidos, y volverá a casa al atardecer, pudiendo pasar ocasionalmente por la taberna si ha tenido un buen día. Dicha rutina puede alterarse según el estado de la meteorología (siguiendo con el ejemplo anterior, el pescador no se acercará su bote si hay tormenta, o si empieza a hacer mal tiempo, irá a buscar refugio en una casa o en los soportales hasta que aminore), o la estación del año en la que se encuentre. También importa su estado de salud, de forma que si se encuentra enfermo o herido se quedará en casa hasta sanar, o puede que algún amigo decida ayudarlo a ir al hospital o curandero mas cercano. Por otro lado existen sus niveles de confianza: no solo importa la información que reciben, sino también de quién la reciben o cómo la reciben. No es lo mismo que un amigo le transmita la información que un desconocido borracho en una taberna. Las metas de cada NPC varían desde vivir el día a día a aumentar su influencia, realizar intrigas mas o menos complicadas, aumentar su clase social o hacerse con el control de un área.

Un factor llamativo es el valor de los personajes, no actúan igual solos que en grupo, o dependiendo de la motivación. Si aparece una criatura hostil en la cerca de la casa de un ciudadano normal y un vecino se enfrenta a ella, según su perfil puede que huya a pedir ayuda, que intente esconderse, trate de separarlos y pacificar la situación, o quizás enfrentarse a ese ser si ve que uno de sus familiares o amigos está resultando ser seriamente amenazado. Puede incluso que los personajes que se encuentren cerca presten ayuda o no según sus convicciones, como por ejemplo, un humano podría ignorar la petición de ayuda de un elfo si el primero resulta ser racista, o si conoce a ese personaje y piensa que por su reputación él se ha buscado y el problema y debe apañárselas como buenamente pueda. También se ve las situaciones de conflicto entre leñadores y simpatizantes de los druidas, que pueden verse atados a los árboles intentando detener la tala de los bosques milenarios, tratándose también el tema del ecologismo. Otra situación curiosa es la de jugar al póquer con diferentes NPCs, el juego es puramente de azar, pero pueden emplear diversos métodos para jugar, o incluso intentar hacer trampas.

Los primeros agentes inteligentes en los videojuegos

La inteligencia artificial, junto a la calidad gráfica y la jugabilidad, se ha convertido en uno de los pilares básicos del mundo de los videojuegos. El desarrollo de la tecnología de agentes ha cobrado una gran importancia en éste sector. Hasta hace poco todas las acciones que realizaba un jugador dentro de un videojuego estaban previstas de antemano por los desarrolladores, al igual que el comportamiento de los enemigos, de ahí que las reacciones eran predecibles y relativamente simples. Sin embargo, actualmente se emplean agentes inteligentes que reaccionan a las acciones de otros jugadores, de forma que su comportamiento se mucho mas parecido al de un humano, hasta tal punto que un jugador pueda llegar a pensar que se está enfrentando a un oponente real, de forma similar a la de utilizar un juego en red. Los programadores emplean sistemas multi-agente para coordinar los comportamientos de grupo, simulando personalidades y caracteres diferentes para los diversos personajes del juego. Uno de los primeros juegos en incorporar esta tecnología fue el Civilizations original, de Sid Meier, todo un icono dentro del género de estrategia por turnos. En dicho juego, lanzado en 1991 ocupando únicamente un espacio en disco duro de 3 Megabytes (unos 3 disquetes de aquella época), un jugador debe dirigir el desarrollo de una civilización a través de milenios, llevándola desde la edad de piedra hasta un era espacial. Cuenta con un generador de mapas aleatorios, múltiples formas de ganar y hasta 15 civilizaciones rivales controladas por el ordenador, dándole una rejugabilidad única. Originalmente empleaba tecnología similar a SimCity (el original, no la última e infame entrega de EA cuyo lanzamiento fue un fiasco), orientada a tiempo real, pero resultaba aburrido tras unas pocas horas, puesto que el abanico de posibilidades de sucesos era escaso, haciendo que los desastres naturales programados cada un cierto periodo de tiempo fuesen los únicos factores en contra de la consecución de los objetivos del jugador. El cambio de concepto se dio cuando se cambió su sistema de tiempo real por un sistema de turnos, redefiniendo su aspecto de juego sencillo de tablero hacia uno mas militarizado.

La interfaz original de Civilizations
La interfaz original de Civilizations

Meier inventó diversas unidades individuales que se movían en el área de juego: los colonos irrigaban las áreas y podían cambiar el terreno, fundando ciudades eventualmente, conservando de esa forma la orientación a zonas. Se añadió el concepto de árbol de tecnologías, que permitía a la civilización avanzar a lo largo del tiempo, dando opciones no lineales a los jugadores dado el desarrollo o el comercio de las mismas con los demás jugadores virtuales. Todo esto llevó a Civilizations a ser galardonado con los premios de “Juego de estrategia del año” tanto en revistas europeas como en las de Estados Unidos, pese a que apenas se invirtiese en publicidad.

¿Qué es un agente inteligente?

En la vida real solemos definir un agente como “una persona que actúa en nombre de otra”, o “una entidad que interactúa en un entorno”. En consecuencia, al llevar dicho término al dominio del software, un agente software es un programa informático que, ya sea por encargo de un usuario o de otro programa, realiza una tarea o busca alcanzar un objetivo. Se dice que dicho agente software actúa de forma inteligente cuando:

  • sus acciones son adecuadas de cara a la consecución de sus objetivos.
  • es flexible ante posibles cambios, ya sean dentro del entorno o de sus propias metas.
  • aprende de la experiencia obtenida y toma decisiones a partir de conocimientos que posee.
Representación de un agente inteligente
Representación de un agente inteligente
¿Cómo se caracteriza un agente?
Los rasgos que caracterizan principalmente a dichos programas son tres:
  • su capacidad reactiva: le permite responder a los cambios que se producen en su entorno, de forma que en caso de que se le presente una oportunidad favorable, realizará acciones en consecuencia.
  • su capacidad pro-activa: implica que el agente tiene iniciativa propia a la hora de actuar de cara a la consecución de sus objetivos, en caso de que se le presente una oportunidad favorable.
  • su capacidad social, que expresa su capacidad de comunicarse con otros agentes que se encuentren en su entorno, dándose una posibilidad de comunicación entre ellos.

Otras características propias de este software son su movilidad, veracidad (incapacidad de trasmitir información falsa a conciencia), benevolencia (colaboración entre varios agentes si sus objetivos no son opuestos), racionalidad y capacidad de aprendizaje.

Aplicaciones de la tecnología de agentes:

Las aportaciones que nos proporciona éste nuevo software son una gestión compleja coordinada, realizando tareas de aprendizaje, colaboración y negociación, mediante el conocimiento del entorno y intercomunicación con otros sistemas. Esto ha llevado a la aparición de aplicaciones industriales y comerciales en campos tan diferentes como el control aéreo, los sistemas de transporte de empresas, los simulación de sistemas complejos, el control industrial, el comercio electrónico, los servicios web en el campo semántico, la personalización de servicios, la exploración espacial, la computación P2P, la monitorización o los juegos. Hoy en día se ven prototipos de aplicaciones comerciales tales como representantes virtuales, asistentes personales, negociadores de mercado electrónico, buscadores de información o rastreadores, y sistemas espías.

Un ejemplo de representante virtual es el asistente virtual de un banco, al que cualquier usuario le puede plantear una pregunta en lenguaje natural sencillo, dando asistencia 24 horas, los 7 días de la semana. En caso de que el usuario escriba una frase sin sentido, indica que no entendió la pregunta, quizás por un posible error al introducirla mediante el teclado, y pide que se la repita. Otros ejemplos serían una agenda inteligente, un administrador de subastas, o un rastreador, como es el caso del conocido Google Alert, que nos envía la información referente a los temas que le indiquemos.