-[ 0x06 ]-------------------------------------------------------------------- -[ Inteligencia Artificial ]------------------------------------------------- -[ by Janis ]---------------------------------------------------------SET-25- Una introduccion a la inteligencia artificial --------------------------------------------- 1 - Preambulo. "A single cell cannot do much without interaction with other cells. A single cell has no concept of the whole. " Stewart Dean Corre el a~o 1950 cuando Alan Turing, el padre de la teoria de la computacion moderna propone en la prestigiosa "Computing machinery and intelligence" el llamado 'Test de Turing'. En dicho escrito se proponia, a grandes rasgos, la posibilidad de la existencia de un programa o maquina que pudiera contestar a las respuestas propuestas por un ser humano sin que este pudiera darse cuenta si estaba hablando con una persona o una maquina. El citado articulo causo un gran revuelo en la comunidad cientifica de su tiempo. Por primera vez se teorizaba sobre la creacion de un ser a imagen y semejanza del hombre. Ya por el siglo XVIII Jacques Vacaunson fue capaz de crear maquinas que simulaban comportamientos en seres vivos o en el propio humano. Asi podemos encontrar entre sus multiples trabajos un pato mecanico, capaz de comer y andar y una maquina flautista, capaz de ejecutar piezas musicales con gran precision. Hubo que esperar al siglo XX y al desencadenamiento de la II Guerra Mundial para poder estudiar los primeros pasos de la ciencia en el campo de la computacion y de la Inteligencia Artificial. Asi Von Neuman, el modelador de las tarjetas perforadas que usaria IBM; junto a un militar encargado de ciertos proyectos de alto secreto se reunieron para modelar la primera maquina que simulaba un comportamiento logico-matematico. El ENIAC. Posteriormente vendrian a desarrollarse otras maquinas como UNIVAC, etc. hasta el IBM 731. Sin embargo, no fue hasta 1957 cuando se acu~o por primera vez el termino Inteligencia Artificial. Hoy en dia las aplicaciones de la inteligencia artificial han quedado relegadas a basicamente, programas que toman decisiones "similares" a las humanas. Por ejemplo, sistemas de control en coches, aeropuertos, estudios mercantiles etc. es decir, bastante alejado del sue~o primitivo de crear un ente pensante. Este articulo no va destinado al hecho en si de exponer las ventajas de un sistema experto en una empresa, sino a retomar la utopia (o no tanto) a la que volcaron tantos esfuerzos los padres de la informatica. - Elementos de la inteligencia humana y artificial. ------------------------------------------------ En el caso de que quisieramos emular una inteligencia similar a la humana que elementos tendriamos que desarrollar?. Aunque parezca sencillo, el limitado conocimento humano sobre el funcionamiento de la inteligencia de las personas, supone un gran limite a la hora de dise~ar un automata. De ahi que existan diversas ramas en la intelgencia artificial, desde la simulacion de parametros biologicos (redes neuronales vs. bombas sodio-potasio de la estructura de nuestro cerebro, vida artificial, etc.) hasta las logico-matematicas (gramaticas y estructura del lenguaje). En este articulo vamos a tratar solamente tres de estos temas, en _mi_ opinion personal los tres puntos sobre los que se deberian basar un sistema que se comportara como una persona. -Sistemas celulares: juego de la vida, jardines de Lindenmayer, algoritmos geneticos -Sistemas de captacion fisica: sensores, procesamiento de informacion -Sistemas logico-matematicos: procesamiento del lenguaje, gramaticas etc. Desde que Oppenheimer desarrollara sus teorias de la creacion de la vida a partir de macromoleculas, muchos han sido los investigadores que han tratado de simular las condiciones experimentales necesarias para crear vida a partir de elementos inertes. En la teoria de la computacion hallamos distintas teorias que bien se podrian asemejar a estas lineas de investigacion en la microbiologia. ___________________ |AUTOMATAS CELULARES| ------------------- [1] Juego de la vida : http://www.bitstorm.org/gameoflife/ [2] http://cgi.student.nada.kth.se/cgi-bin/d95-aeh/get/lifeeng [3] Cellular Automata and Complexity. Stephen Wolfram. Addison Wesley Que es un automata celular?. Segun su creador, John von Neumann; es una matriz de n dimensiones que contiene celulas o unidades basicas de informacion y que pueden actuar unas con otras. Segun esto, el universo estaria acotado a las dimensiones de nuestra matriz y las reglas de actuacion simularian las leyes de la Naturaleza. Asi, el famoso juego de la vida de John Conway [1] es un ejemplo de lo que este tipo de automatas puede llegar a ser. Partiendo de la base de que una celula que este sola o acompa~ada por una celula muere y toda aquella que este acompa~ada de mas de 3 tambien muere, solo nos queda asignarle un cuanto de tiempo al juego y esperar. Los efectos son sorprendentes. Partiendo de un tablero rellenado aleatoriamente, las celulas tienden a formar colonias y a separarse por grupos. Estadisticamente, los grupos que se unen tienen mas posibilidades de sobrevivir que los que se encuentran aislados. El parecido con la biologia animal es sorprendente. En las formacion del feto, existen transmisiones de informacion entre celulas para saber que destino histologico va a tener cada uno. No en vano, cada celula guarda cierta informacion y la transmite por medio de el ADN y ARN, conviertiendo un celula en lo mas similar a una computadora. Recibe una informacion de entrada y devuelve otra. Esto se consigue en simulacion por ordenador a~adiendo nuevas caracteristicas a las celulas y proporcionandoles reglas mas complejas. En [2] encontramos unas celulas compuestas por otras partes mas peque~as. Debido a esto las agrupaciones pueden tomar formas geometricas (triangulares, etc.) gracias a las nuevas modificiaciones. Es importante se~alar que los automatas celulares no son una herramienta puramente teorica. Gracias a ello el estudio de la mecanica de fluidos ha mejorado mucho, sobre todo en el aspecto de simulacion. _______________________ |JARDINES DE LINDENMAYER| ----------------------- [1] http://www.cogs.susx.ac.uk/users/gabro/lsys/lsys.html Uno de los desarrollos mas interesantes de la teoria de automatas y lenguajes formales ha sido la llevada a cabo por cientificos como Astrid Lindenmayer (el creador originario) o Przemyslaw Prusinkiewicz. Utilizando las recientes teorias sobre gramaticas incontextuales (en las que cientificos como Chomsky han trabajado), Lindenmayer postulo los principios de los L-Systems o sistemas-L. Una gramatica que permitia la "construccion" de plantas de un modo asombrosamente parecido al que encontramos en la naturaleza. Una gramatica no es mas que un formalismo para la construccion de un lenguaje. De esta manera una gramatica esta formada por cuatro elementos: El universo de los simbolos terminales (esto es, las letras), los simbolos no terminales (los que pueden ser sustituidos), las reglas de construccion y el estado inicial. {a,b} Simbolos terminales {A,B} Simbolos no terminales A--> aB B--> b Nuestras reglas Estado inicial: ABA Bien, gracias a estos cuatro elementos vamos a ser capaces de construir palabras y lenguajes gracias a la recursividad. El sistema consiste en la mera sustiucion de elementos gracias a las reglas de construccion. Asi pues, aplicando las reglas de construccion: (1) aBbaB (2) abbab Nuestra palabra. Una vez hablado de esta teoria podremos comprender mas facilmente lo que pretendia Lindenmayer. En vez de limitarse a sustituir elementos, Lindenmayer ademas propone dibujarlos. De esta manera podemos conseguir el dibujo de arboles. Asi pues, los elementos que Lindenmayer proponia eran los siguientes. En primer lugar una tortuga. Dicha tortuga posee tres parametros, los cuales son: posicion X, posicion Y y el angulo. Gracias a las reglas, dicha tortuga se ira moviendo hacia un lugar u otro y se decidira si va coloreando el camino o no. En segundo lugar una gramatica cuyos elementos mencionamos aqui: F: Mueve hacia adelante un paso (longitud d, predeterminada). La tortuga cambia a la posicion x'= x + d cos(a) and y'= y + d sin(a), siendo ŽaŽ el angulo. f: Mueve hacia adelante, sin pintar. Identicas formulas que en F. +: Gira en el sentido de las agujas del reloj. -: Gira en sentido contrario. Una vez definido esto, solo nos queda proporcionar una serie de reglas y empezar a trabajar. palabra: F+F+F+F regla : F -> F+F-F-FF+F+F-F Puesto que es un metodo recursivo, hemos de limitar los pasos que queremos dar. Podeis ver el objeto resultante en [1]. No en vano, la utilizacion de estos elementos, limita bastante a la hora de construir elementos como "tronco", "ramas", etc. debido sencillamente a la estructura mas intrinseca de las gramaticas (la recursividad sobre todo). Asi pues, era necesario incluir elementos que permitieran la construccion de estructuras mas lineales. Asi que se opto por el uso de pilas. [ : Introduce el estado actual de la tortuga en una pila. ] : Saca el estado de la pila y lo asigna al actual de la tortuga. En [1] podeis ver mas ejemplos de estas modificaciones. Breves comentario: Con los jardines de Lindenmayer hemos visto uno de los puntos mas importantes sobre los que se basa la creacion de vida. El crecimiento del ser. En E.G.B. nos ense~aban que un ser vivo es aquel que nace, crece, se reproduce y muere. Hasta ahora vemos que es facilo realizar las dos primera tareas y la ultima. No en vano, la reproduccion fisica (no simulada en un ordenador) es quizas la mas dificil de representar (no podemos limitarnos a meter dos robots de sexo opuesto en una habitacion con cama, para tener peque~os robotitos por la ma~ana). En mi opinion las bases logico-matematicas para crear un ser vivo (que no inteligente) estan bien fundamentadas y muchos algoritmos de comportamiento ya estan dando sus primeros resultados: colonias de hormigas sinteticas en el MIT, robots que expresan emociones en Japon... etc. Los avances tecnologicos son muy importantes, sin embargo se deberian abrir nuevas lineas de investigacion hacia avances biologicos o la posibilidad de crear entes sinteticos capaces de reproducirse. Crear celulas vivas. Como he mencionado arriba, las teorias de Oppenheimer sobre la creacion de la vida (el famoso caldo primigenio) han permitido a biologos, geologos y quimicos la posibilidad de reproducir las condiciones medio-ambientales que permitieron que un conjunto de elementos quimicos pudiera llegar a tener conciencia de si misma. Quizas en un futuro las investigaciones permitan que los humanos podamos hacer biodroides (dejandonos de Terminators y cyborgs), modelos sinteticos capaces de reproducirse, o lo que es lo mismo seres artificiales. ________________ |REDES NEURONALES| ---------------- [1] http://www-ra.informatik.uni-tuebingen.de/SNNS [2] http://pagina.de/wintermute W. Pitts y W. Culloch lanzaron en su dia una teoria revolucionaria que intentaba explicar el cuadro de funcionamiento sinoptico del cerebro. En resumen, proponian que una neurona por si sola no realizaba un gran trabajo. Sin embargo la union de esa neurona con el resto era lo que producia resultados. A mayor numero de conexiones mayor capacidad de la neurona. Estas teorias han sido ratificadas en nuestro tiempo, en lineas de investigacion diferentes a las de la computacion, con enfermades como el Alzheimer o el Parkinson. Asi pues las redes neuronales computacionales simulan el comportamiento de las neuronas en un sistema nervioso. _______ X | | Y ----->| f(X) |-------> ------- Esto que he dibujado arriba es una neurona. Un conjunto de neuronas permite realizar trabajos como reconocer objetos en fotografias. X representa una serie de se~ales de entrada. Por decirlo de una manera osca, es la informacion que introducimos a la neurona. f(X) es una funcion mas o menos compleja que transforma nuestra informacion de entrada en Y, que sera la informacion una vez procesada. Lo que da potencia a las redes neuronales es la combinacion de estructura, algoritmos y cantidad de unidades computacionales. Uno de los elementos mas caracteristicos de las redes neuronales es su capacidad de almacenamiento o aprendizaje. Al igual que en neurobiologia se cree que las neuronas adoptan patrones de comportamiento debido a la transmision de flujos electricos, las redes neuronales adoptan este tipo de comportamiento. Esto normalmente se reduce a guardar informacion sobre los datos que entran y salen de las redes. Si el aprendizaje es supervisado, significa que existen elementos externos (humanos, sistemas expertos) que revisa, por asi decirlo, la calidad de la informacion y la genera guardandola en la red neuronal. Si no existen tales elementos reguladores, la red sera no revisada. Ejemplos de este tipo de aprendizaje es el hebbiano y el cooperativo. Para finalizar os recomiendo que busqueis informacion sobre las siguientes redes neuronales reales (podeis encontrar simuladores en [1]). Una pagina realmente impresionante es la mantenida por Wintermute, "ex"-29A que incluye tanto articulos propios como ajenos todos ellos con una calidad envidiable y bastante originales. Podeis encontrarla en [2]. ______________________________ |ELEMENTOS MATEMATICOS DE LA IA| ------------------------------ [1] Fundamentos de algoritmia. G. Brassard y P. Bratley. Prentice Hall. [2] Kasparov vs. Deeper Blue. Daniel King. Editorial Paidotribo Para finalizar voy a hablar ligeramente sobre algunos elementos esenciales del mundo de la inteligencia artificial. [3] Tractatus logico-philosophicus. L. Wittgenstein. [4] http://library.thinkquest.org/18242/nlpoverview.shtml [5] http://dir.yahoo.com/Recreation/Games/Computer_Games/ Internet_Games/Web_Games/Artificial_Intelligence/ [6] http://www.seattlerobotics.org/encoder/mar98/fuz/flindex.html - Metodologia de la programacion: Consisten en una serie de algoritmos y formas de programacion que favorece la toma de decisiones en un sistema informatico. Por ejemplo, tecnicas de ramificacion y poda en estructuras de datos como arboles permiten que un juego de ajedrez sea capaz de ganar a un contrincante. Me explico, los juegos de ajedrez suelen dar unos valores a cada posible jugada; sin embargo a medida que se van calculando nuevas posiciones, los arboles de decision (las jugadas) crecen exponencialmente siendo necesarias ciertas restricciones. Por ejemplo, rechazar jugadas en las que se pierda la reina. Los monticulos mini-max son utiles de este tipo, programacion dinamica, "backtracking" o vuelta atras, son estilos y formas de programar. Podeis encontrar algo de esto en [1]. Para el ajedrez os recomiendo [2]. -Elementos sintacticos. O el reconocimiento de estructuras del lenguaje. Desde identificar que clase de pregunta estamos formulando hasta permitir que un ordenador pueda comunicarse con nosotros. Os recomiendo para introduciros lecturas de Wittgenstein [1] y Noam Chomsky. Despues podeis visitar algunas paginas en las que vereis programas como Eliza y Barry (programado originariamente en LISP) en [4]. Y para echaros unas risas: [5], desde donde podreis hablar con John Lennon o el propio Jesucristo. -Logica difusa. Que trata la logica booleana desde un punto de vista mas estadistico, viendo las probabilidades de que un dato se encuentre en un determinado grupo (por ejemplo tama~os de ruedas, habra unos estandares y unos tama~os especiales). Mirar [6]. -------------------------------------------------------------------------- Desafortunadamente existen muchos elementos que no han sido tratados en este articulo (recuerda que no formamos a nadie ;) ), pero si quereis saber mas podeis probar a buscar sobre los siguientes temas: - Sistemas expertos. - Programacion orientada a objetos (Eiffel, C++). - Lenguajes especializados como LISP, PROLOG, Haskell. - Maquinas de Turing... En definitiva, he tratado de dar una vision al menos curiosa de lo que es y lo que puede llegar a ser la IA. Espero que os haya gustado y que nos veamos en la proxima peli de Spielberg ;). Janis [ Editor: Si os interesa el tema otra vision la da John Searle en su libro "Mente, cerebro y ciencia" donde expone la hipotesis de la habitacion china ] *EOF*