[Grey-Walter] Artículo

Pablo pablo at lechuza.rec.usal.es
Wed Jun 25 20:23:26 CEST 2003


Aquí envío un artículo aparecido en SET25 (www.set-ezine.org). Trata
de forma superficial diferentes apartados de la IA.
-------------- next part --------------
-[ 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
                                                 <janis at set-ezine.org>

[ 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*



More information about the Grey-Walter mailing list