Inteligencia artificial : tipos y ejemplo práctico

La inteligencia artificial, es uno de los campos más complejos pero también más misteriosos de la informática, es por ello que en un futuro, seguramente será uno de los campos más importante de esta ciencia. Vamos a intentar acercar la inteligencia artificial y los desarrollos en este campo de una manera sencilla.

Podemos definir la inteligencia artificial como el proceso de pensar realizado por un agente inerte. Pero dentro del concepto de inteligencia artificial, hay varios “tipos” que son muy distintos entre ellos:

  • Sistemas que piensan como humanos.
  • Sistemas que actúan como humanos.
  • Sistemas que piensan racionalmente.
Representacion de una inteligencia artificial

Llegados a este punto mucho podréis preguntaros, pero entonces lo que nosotros llamamos comúnmente IA es una verdadera inteligencia artificial. La respuesta a esta pregunta nos es exacta, si ponemos un ejemplo en el campo de los videojuegos tenemos:

Inteligencia artificial con estrategias prefijadas

Por una parte un juego de estrategia, tipo Age of Empires o StarCraft (para mí una de las mejores IA), en este tipo de juegos, realmente no se puede considerar que tengan una inteligencia artificial, ya que lo que tienen es un conjunto de estrategias, ya grabadas y predefinidas, pero a nosotros no nos parecen que las partidas sean siempre iguales y si el proceso es secuencial deberían serlas. Sin embargo, lo que los desarrolladores utilizan son un conjunto lo más amplio posible de estrategias, junto con “estados” que permiten cambiar de una estrategia a otra y el acceso a una base de datos donde tienen información importante para poder jugar.

Principalmente esto se realiza con una cola de prioridad, en la que se indica cada elemento (construcción, producción, creación de personaje) junto con la prioridad que tiene crearlos.

Si tenéis ganas de experimentar o profundizar en este campo os recomiendo esta página, en ella hay una serie de inteligencias artificiales programadas por usuarios y se ve el rendimiento que alcanzan.

El campeón por ejemplo utiliza entre otras cosas:

  • Un simulador de combates.
  • Optimización de rutas de recolección (lo típico de ir a la granja sacar X de carne y volver a la base a dejarlo)
  • Optimización del espacio para construcciones.

 

Inteligencia artificial con cálculo en tiempo real de la estrategia óptima

Este tipo de inteligencia artificial se utiliza de forma usual en software de resolución de juegos de mesa, tipo ajedrez, o las damas. En el caso del ajedrez suelen tener un gran conjunto de jugadas de los llamados maestros del ajedrez, precargadas y lo que se hace es simular, qué estrategia es mejor utilizar. Pero no por la posición actual de las fichas, sino por la posición en la que pueden llegarse a colocar dentro de varios movimientos.

El utilizar jugadas precargadas, en lugar de probar todas y elegir la mejor, es debido a que con los ordenadores actuales, el número de combinaciones es tan alto que no pueden optimizarlo a tiempo, es decir si que el usuario nota que tarda varios minutos u horas en responder.

El principal problema

El gran problema es que aunque estas inteligencias artificiales programas son capaces de seleccionar la mejor estrategia dentro de las que tienen todavía les faltaría 2 cosas:

  • Por un lado contar con aprendizaje, esto es por ejemplo, en un juego, guardar las estrategias que desarrolle el jugador para así ir incrementando de una manera constante el número de opciones a seleccionar. En este punto ya la barrera entre persona o máquina, quedaría muy diluido porque si somos capaces de que el ordenador aprenda nuestras estrategias, tendría tantas que todas las partidas serían diferentes y parecería que juega un humano.
  • La otra cosa que le faltaría y seguramente lo más complejo y por lo tanto lo que más tarde en llegar, es que el propio ordenador genere estrategias y sea capaz de guardarlas y aprenderlas. En un juego como el ajedrez, generarla no es muy complejo porque hablamos de 64 casillas y unas pocas fichas con movimientos muy determinados, pero en un shooter o en un juego de estrategia en tiempo real, tendríamos un “mapa” de varios millones de casillas y cada unidad tiene muchos movimientos, esto generaría un número de combinaciones tan alta, que aunque contáramos con un cluster, la respuesta no sería instantánea. Seguramente lo que primero veamos en este punto, es un modo en el cual solo dejamos el ordenador encendido y solo genera estrategias (o las bajamos de una nube, donde tengan 24/7 ordenadores generando las estrategias). Después de esto poco a poco iremos llegando a una generación en tiempo real de los mejores movimientos.

Hay que entender, que esto no es nada sencillo, lo primero de todo porque no es lo mismo contar con una ficha que tiene dos tipos de movimientos, que con un personaje que se mueve en 360º y tiene 40 tipos de armas distintas, que realizan daño distinto y tienen unas ventajas frente a las otras.

 

Con esta pequeña entrada queremos introducir el concepto de inteligencia artificial y ejemplificar con elementos que son comúnmente conocidos. En las siguientes entradas, intentaremos hablar sobre los avances en este campo y un pequeño acercamiento a la programación de ellas.

Jorge Durán

Entusiasta de la tecnología desde los 10 años, desarrollador y creador de varios proyectos de software y autodidacta por naturaleza. Ingeniero Informático por la USAL y .Net backend developer en idealista.

Share
Publicado por
Jorge Durán

Recent Posts

Docker: conceptos principales y tutorial paso a paso

Hoy queremos hablaros de Docker un proyecto que cada día es más usado, porque permite…

3 años hace

Crea diagramas rápidamente usando código

Cada vez estamos más acostumbrados a usar código para generar la infraestructura (IaC), documentar nuestro…

3 años hace

Procesamiento del lenguaje natural con ElasticSearch

Uno de los problemas que se presentan con una mayor frecuencia hoy en día, es…

4 años hace

Elige tecnología clásica y aburrida

Uno de los problemas que solemos tener los programadores, es que nos gusta estar a…

4 años hace

Cómo usar Docker en Windows

Docker es una de las herramientas más usadas por los desarrolladores, sin embargo, usarlo en…

4 años hace

Analiza el coste del uso de JavaScript

Como seguramente sabrás el uso de JavaScript ha crecido exponencialmente en los últimos tiempos, sin…

5 años hace