La Inteligencia Artificial es la rama de la informática que trata fabricar progamas que se puedan catalogar de alguna forma como racionales, es decir, que analicen una información dada y sean capaces de comportarse de distinta forma para lograr un objetivo más óptimo para los datos de que disponen.
Por ejemplo, para hallar la salida a un laberinto se podría hacer un programa que recorriese todas las direcciones posibles sin ninguna distinción, volviendo atrás cuando se bloquease y probando los distintos caminos. Al final, llegaría a la salida siempre. Esto en informática se denomina backtracking o técnica de ensayo-error, y es justo lo contrario a la inteligencia artificial.
Un programa “inteligente” tendría ciertas preferencias, como los caminos hacia la derecha si sabe que la salida está en ese sentido. En este caso concreto, seguramente, resultaría completamente inútil, pero está analizando su entorno respondiendo de forma aparentemente más óptima y, en todo caso, más racional que probando todas las opciones sin ningún criterio.
Para lograr una salida óptima hay muy diversos métodos que dividen a la Inteligencia Artificial en varias ramas completamente distintas entre sí. Se puede, por ejemplo, crear una extensa base de datos (conocimientos) con las mejores soluciones conocidas para diferentes situaciones. Son los llamados sistemas expertos y pretenden simular a una persona con gran experiencia en cierta labor, siendo esa base de conocimientos con los que cuenta la máquina los que habría adquirido esa persona durante toda su carrera. Sería, por ejemplo, resolver un cubo de Rubik sabiendo que primero se debe completar una cara, luego una fila de las caras contiguas, dejar ciertas piezas en una posición determinada y luego efectuar 17 movimientos conocidos (creo que la forma de resolverlo era algo similar, no pretendo ser exacto, sólo dar un ejemplo).
Otra opción es estudiar las implicaciones de nuestras diversas acciones y seleccionar las que nos reporten mayores beneficios en base a unas reglas. Es lo que se suele utilizar en ajedrez y juegos del estilo. La máquina analiza cada uno de sus movimientos y cada uno de los movimientos del contrario, y lo que ella respondería… así hasta unas cuantas jugadas más adelante. Obviamente esto implica una explosión combinacional imposible de computar, por lo que se descartan muchas según diversos criterios heurísticos. Luego, en base a esos criterios, se estudia qué jugada nos reporta más ventaja.
Como curiosidad, el primer programa para jugar al ajedrez lo escribió Alan Turing en 1952. Por entonces las computadoras no tenían suficiente capacidad para procesarlo, así que tenía que hacerlo él mismo a mano, ¡tardando hora y media para cada movimiento! En la única partida registrada, el programa perdió contra un amigo de Turing.
Otros intentos de crear Inteligencia Artificial mucho más interesantes y recientes son las redes neuronales y los algoritmos genéticos, ambos inspirados en la naturaleza.
Pese a que las primeras fueron enunciadas hace más de medio siglo, no se han estudiado y aplicado realmente hasta hace relativamente poco, y los algoritmos genéticos datan de la década de los setenta. Estos últimos creo que están orientados a problemas de optimización, basándose en las ideas de la evolución darwinista. Se crean un montón de soluciones aleatorias y las que que parecen mejores se combinan entre sí durante varios ciclos, añadiendo mutaciones azarosas para mantener la variedad. Supuestamente al final sólo quedan las soluciones más óptimas. Como casi siempre en estos casos, la entrada inglesa Genetic algorithms es mucho más completa y lo que he leído me ha quedado más claro que en la Wikipedia en español.
Las redes neuronales intentan imitar el sistema nervioso animal. Se basan en unas “neuronas” que reciben unos valores de entrada a los que aplican una función específica y su salida la envían a otras neuronas que siguen el mismo proceso hasta alcanzar la salida. Obviamente ésta salida será un número más, y dependiendo del mismo se tomarán unas decisiones u otras. Hay diversos tipos de redes con distintas filosofias y formas de interconectarse, pero por lo general están pensadas para problemas de reconocimiento de patrones. Lo realmente interesante de las redes es que son “entrenadas” y una vez lo han hecho es cuando está preparado el modelo para ser implementado y utilizado. Al igual que antes la versión inglesa es mucho más completa.
Existen otras formas de inteligencia artificial, pero he considerado éstas como las principales, y creo que dan una idea de en qué consiste esta disciplina. Las redes neuronales las veremos más a fondo en un capítulo dedicado exclusivamente a ellas.
Como se ha visto, la Inteligencia Artificial lleva rondando a los expertos desde los primeros tiempos de la informática, y aún así está actualmente muy en pañales. ¿Por qué? El problema es debido a que en su momento se predijeron muchos progresos en los diez siguientes años y, al no darse debido a la paupérrima capacidad de computación de los ordenadores de entonces, se desechó como inútil. Sin embargo, y con la creciente capacidad de los procesadores actuales, recientemente ha vuelto con fuerzas redobladas para instalarse como “el futuro” de la computación.
Pero la Inteligencia Artificial no se limita sólo a la informática/matemáticas, al tener unos objetivos tan complejos implica todo un debate filosófico detrás, que puedes seguir leyendo en el siguiente artículo de la serie.
The Inteligencia Artificial: Introducción técnica by Ender Muab'Dib, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 Spain License.
{ 7 } Comentarios
Muy buen resumen del “estado del arte”
Supongo que en algún momento hablaré de algoritmos genéticos ahora que parece que me voy a dedicar a eso profesionalmente :S
De todas formas decir que personalmente me parece que este tipo de algoritmos son una estafa. Y digo por qué:
Se basan en heurísticas (algunas de dudoso origen).
Su gran ventaja es que son más rápidos que la fuerza bruta, pero resulta que si se realiza la fuerza bruta de forma “lista” (algoritmos de ramificación y corte) los resultados son similares, cuando no mejores.
Pero el colmo es ya cuando te dicen que los parámetros del algoritmo se optimizan “al tuntún”.
Pero es que hay más. Para explicarlo tendré que hacer una entrada en la que explique que parámetros definen un algoritmo genético, pero os aseguro que el último punto es ya la monda.
De las redes neuronales tengo que admitir que salvo su funcionamiento teórico no tengo muchos datos… ¡a ver si comentas cosas interesantes!
Parece que puede ser interesante. Será cuestión de cuánto te mojas. Aunque si estás trabajando en eso, no esperamos menos de ti
Yo sólo ojeé un poco de LISP para ver si aprendía algo de IA y al final sólo aprendí que en LISP “todo son listas” y que con funciones recursivas también se pueden hacer las cosas.
Joel: LISP significa “Lots of Insipid and Stupid Parenthesis”. Nunca sirvió para nada serio.
Cruzki: Confía, hombre. Los algoritmos genéticos tienen su campo, que es sobre todo cuando no tenemos ni la más remota idea de por dónde hincarle el diente al problema. Si sabemos algo sobre él, sobre cómo se podría resolver, es muy posible que otras técnicas sean mucho más eficaces. Pero tén en cuenta que da lo mismo que el proceso de aprendizaje tarde un día o una semana: si la solución encontrada es útil, se implementa en los Sistemas reales y sirve durante mucho tiempo, así que no importa si tardas más o menos, sino la fiabilidad de la solución. Además, en el mundo real no se usa una sola técnica ante un problema de descubrimiento, sino varias de ellas, tanto simuláneamente como en cadena, para irse quedando con la que mejor funciona.
Profeta de Arrakis: Adelante. Ya iré comentando cosas que me parezcan interesantes conforme avance la serie. Siempre teniendo en cuenta que cuando estás en la Universidad te crees que las cosas son de un modo, y luego en la vida real son de otro completamente distinto y sirven para cosas que ni te imaginas. Desde mi punto de vista, ése es el ENORME problema de la Universidad española. ¡Suerte!
Saludos
Joel, bueno, trabajar en ello debería tener sus matices, quizás fuese más exacto trabajar “para” ello. Yo realmente no estoy estudiando a fondo los sistemas inteligentes ni creando nada con ellos, hago una aplicación para facilitar su configuración y entrenamiento de la red MLP (que es un coñazo). Para lo cual, obviamente he de entender cómo funcionan y qué espera el usuario. Así que me mojaré todo lo que sea capaz .
Cruzki, ¡genial! Aunque sea una imagen derrotista me encantaría saber algo más sobre los algoritmos genéticos, que parecen interesantes. No tengo ni idea del resto de sistemas inteligentes, casi todo lo que he escrito aquí ha sido lo que he querido informarme a título personal en el campo, pues no lo requiero para mi aplicación.
Macluskey, es obvio que estás muy puesto en el tema ¡Si hace 30 años ya calculabas si el perceptrón convergía o no! Va a estar bien tener a alguien con más conocimientos deshaciendo entuertos y apuntando datos interesantes. Comparto tu visión de la universidad. Tuve la desgracia de que la asignatura de IA la daba un incompetente de libro y lo único que aprendimos fue el algoritmo MinyMax, la poda alfa-beta. Y la base de hechos de tres problemas clásicos (garrafas de 3 y 5, pastor cruzando el río, y poco más). Por suerte, el PFC me lo está llevando el profesor de estadística, que se está doctorando en el tema y creo que me está dando una visión bastante realista del tema.
Un saludo y me alegro que que os haya gustado “mi primera vez”.
Huy, releyendo mi comentario anterior, me he dado cuenta de que no eres Muad’Dib (o sea, Paul Atreides, profeta de Dune (alias Arrakis, o quizá al revés), sino Ender Muad’Dib, o sea, mitá Andrew Wiggin mitá Paul Atreides…
A no ser que mi (estupenda) memoria me falle y en alguna de las últimas novelas de la saga de Ender de Orson Scott Card el propio Ender se llame a sí mismo Muad’Dib, que es posible, puesto que este término quiere decir “El Profesor” en árabe clásico.
Perdón por el gazapo.
Tengo entendido que Theo Jansen, ingeniero y artista creador de “Strandbeest” o “bestias de arena” (buscad información, es impresionante), usó algoritmos genéticos para determinar la longitud óptima de cada segmento del animal-máquina, aunque luego tuvo que admitir que la simulación no era muy buena y recurrió a hacer lo mismo, pero sobre el terreno. Es decir, selección artificial de toda la vida (se tienen 2 versiones, la que funciona peor se destruye, la otra “sobrevive” para pasar a la siguiente generación). Tengo curiosidad en ver cómo continúa la serie. Parece que promete.
[seguiré el off topic] Correcto Macluskey, soy mitad y mitad. Efectivamente está mal escrito, debido a que la primera vez que lo usé lo escribí mal, y luego decidí dejarlo así en el futuro para “personalizar” el nick. Y estoy hablando de la primera vez que me registré en un foro de internet, que recién me había leído la novela y me encantó el personaje.
Años más tarde, a punto de registrarme en otro foro, había terminado El Juego de Ender (no sé entonces la saga completa o sólo parte) y como Andrew también me apasionó opté por actualizar mi nick.
Finalmente decidí convivir con ambos y así se quedó. Los uso, más o menos, como nombre y apellido . [/off topic]
No tenía ni idea de cómo había construído sus máquinas Theo Jansen. Recuerdo cuando vi sus primeros vídeos por internet y quedé maravillado, qué increíbles son esos Strandbeest.
¡Saludos!
Escribe un comentario