Showing posts with label vida artificial. Show all posts
Showing posts with label vida artificial. Show all posts

Tuesday, September 27, 2022

David Heiserman y su libro sobre Inteligencia Artificial

Tengo un libro relativamente antiguo, cuyo autor es el estadounidense David Heiserman que, según entiendo, ha publicado más de 40 obras técnicas y científicas, la mayoría de ellos en la desaparecida editorial TAB Books. El título del libro al que hago mención es "Projects in Machine Intelligence for your Home Computer". La edición que tengo es del año 1982.

El título probablemente llama la atención sobre las pretensiones de la obra. Sin embargo, hoy es no solamente un libro obsoleto, sino bastante malo como para tomarlo con seriedad. Y quiero ser benevolente con el autor. En el momento de la escritura de dicha obra, probablemente el trabajo que hizo se veía razonablemente interesante. Hoy día, no obstante, resulta trivial y primitivo en muchos de los conceptos que expone, aunque desde luego, no podemos sustraerlo de su contexto histórico, es decir, en la época de cuando se escribió el mismo.

Heiserman intenta trabajar con la idea de autómatas celulares, a los cuales pretende buscarles un comportamiento que podamos considerar como complejo, al menos en algún sentido. Para ello, comienza creando una "creatura alpha", la cual es un puntito en la pantalla, encerrado entre cuatro paredes (los límites de la pantalla), y en donde esta creatura se mueve azarosamente uno o dos pasos en todas direcciones. El autor entonces muestra a su creatura moviéndose al azar (aunque jamás discute el tema de que el azar de la computadora no lo es estrictamente) y quiere darle una interpretación a sus movimientos. 

Por ejemplo, decide poner en la pantalla "obstáculos" para ver cómo se mueve dicha creatura cuando enfrenta un nuevo entorno físico Si por ejemplo, le pedimos al programa (del cual Heiserman entrega el código fuente en Applesoft (Apple II) y TRS BASIC (Tandy Radio Shack Z80), que es más de la mitad de las páginas del libro), que la creatura deje un trazo por donde va pasando y éste se vuelva un obstáculo para seguir pasando por ahí (como si creara una pared para la creatura), entonces ésta se comportará de cierta manera. Y explica entonces: "El comportamiento de la creatura mientras trabaja sobre un rastro impenetrable es especialmente significativo en el contexto de la psicología de las máquinas". Una frase que no dice nada, que no explica nada y que quiere convencer que la creatura azarosa hace algo que podríamos considerar inteligente o al menos complejo, que en este contexto sería, difícil de explicar.

Poco después Heiserman hace una nueva creatura a la que llama beta y le otorga un poco de más capacidades, por ejemplo, memoria de eventos pasados para así hacerla "más inteligente", al menos con respecto a la creaura alpha. Pero esta modificación no hace nada significativamente diferente. Simplemente, cuando la creatura beta encuentra un obstáculo y tiene su memoria vacía, actúa como una creatura alpha. Sin embargo, en ese momento -cuando encuentra una salida al problema del obstáculo- guarda esta información en su memoria. Si de pronto encuentra una situación similar, puede acudir a su recuerdo para ver si puede salir del atolladero. 

La realidad es que los experimentos en inteligencia de máquina que propone Heiserman son triviales y además, llenos de interpretaciones dudosas del autor. Déjenme poner esta analogía. Yo tenía una perrita Snauzer, la Pupa, a la cual un día le pedí que buscara su pelota para jugar. La perrita salió en busca del juguete y al rato regresó con una cápsula de huevo kínder (que contiene un juguete), pues no halló su pelota. Yo podría decir: "la Pupa entiende de figuras geométricas y al no encontrar su pelota, decidió traerme lo más parecido a ese objeto". Más de uno podrá decir que esa es meramente una interpretación del evento. ¿Qué tal si simplemente encontró la cápsula y se olvidó de lo que buscaba y por eso te llevó ese objeto? Vamos, no tenemos certezas porque no podemos pedirle a la Pupa que explique porqué actuó así. Entonces queda como una especulación indemostrable. Bueno, pues eso le ocurre a Heiserman con las explicaciones que da en su obra.

Llama la atención que el autor no haya profundizado un poco en la idea planteada en los autómatas en dos dimensiones, como en el caso del "Juego de la Vida" de Conway, que se volvió popular en 1970, por lo que -quiero creer- Heiserman debería haberlo conocido. Y es que los autómatas de Heiserman y sus resultados no llevan a nada. No hay comportamiento complejo ni inteligente. Sólo unos puntos en la pantalla que se mueven de forma azarosa y que en las variaciones que propone el autor, no cambia significativamente su comportamiento.


David Heiserman


El problema con los autómatas de Heiserman es que no ha pensado en el tema de la autoreplicación y la recursión. Vamos, los seres vivos tienen una propiedad increíble: pueden crear copias de sí mismos. Y para ello, se necesita que exista un proceso que permita esta autoreplicación y uno de los procesos que permite un sinfín de ideas complejas y difíciles de explicar es dotar de reglas recursivas a los autómatas. ¿Cómo podemos asegurarnos que las reglas que inventemos sean recursivas? Pues entendiendo que se llaman a sí mismas y que en muchos casos, sino es que todos, estas reglas requieren de un stack para ir guardando valores temporalmente. Desde luego que no es condición sine qua non esto, pero probablemente ayuda.

Reconozco que el libro de Heiserman me decepcionó, pero entiendo que hoy conocemos de temas mucho más sofisticados en los automatas celulares, llámense "sistemas-L", de Lindenmayer, hormigas de Langton o autómatas de Wolfram, entre otros. Quiero creer que la obra de este autor es obsoleta y poco enriquecedora para aquellos que quieren hacer inteligencia artificial con simulaciones de computadora y la culpa es que probablemente Heiserman no tenía acceso a mucho de lo que hoy sabemos del tema..

Tuesday, March 15, 2022

El increíble mundo del Core War


La computadora ha logrado abrir nuevas puertas en la investigación de un sinfín de temas. Por ejemplo, hoy algunas demostraciones en matemáticas se hacen por exhaución, es decir, viendo todos los posibles casos. Si mal no recuerdo, el teorema de los cuatro colores está demostrado analizando todas las posibilidades de crear mapas para pintarse con no más de cuatro colores.

Sin embargo, en otros casos con la computadora podemos especular al respecto de la vida misma. Así nace la "vida artificial", la que propone en cierta medida tomar conceptos que existen en la vida biológica y ver qué pasa en un ambiente simulado dentro de la computadora. Por ejemplo, podemos simular nacimientos de células, reproducción y muerte de las mismas, basándonos en reglas ciegas, que se cumplen en cada generación de células que pintamos en la pantalla. Los resultados de estos experimentos muchas veces nos asombran, pues muestran comportamientos complejos inesperados, los cuales no son fáciles de explicar.

Pues bien, una idea que me parece muy interesante es el de Core War, que se trata de una especie de juego de computadora, en donde dos programas buscan establecerse, eliminando al programa rival. El nacimiento de esta idea la platica  A. K. Dewdney en un artículo publicado en Scientific American en 1984 y que puede leerse aquí

Dewdney indica que probablemente la historia es falsa, pero que fue el detonante de este juego al que eventualmente se denominaría Core War. Dice que se habla de un malévolo programador que escribió un programa en ensamblador llamado "Creeper", cuya única función era la de duplicarse en memoria cada cierto tiempo cuando éste se ejecutaba. El programa lo único qaue buscaba hacer era perpetuarse a sí mismo en la memoria de la computadora. Eventualmente con el tiempo habría más copias de Creeper que de cualquier otro programa en memoria, incluso inutilizando las posibilidades de usar la máquina para algo más. Entonces a alguien se le ocurrió escribir un programa, llamado "Reaper", cuya función era simplemente destruir las copias de Creeper que pudiese encontrar hasta que las eliminara completamente y entonces, eliminarse a sí mismo del sistema. Con esto se restauraría la posibilidad de seguir usando la computadora.


A.K.Dewdney (de su página personal; https://www.csd.uwo.ca/~akd/akd.html)


Entonces imagínese a programadores escribiendo código cuya intención es mantener en memoria su programa, eliminando el código del o los adversarios. El juego no sería como muchos, porque en este caso se escribirían los programas y entonces se pondrían en la memoria a competir, en donde un programa simulador de la computadora ejecutaría alternativamente una instrucción de cada programa ejecutándose. Si un programa encontrase una instrucción ilegal para ejecutarse, dicho código se consideraría el perdedor.

Dewdney junto con la ayuda de un estudiante de la Western University de Ontario, Canadá, trabajarían en este simulador del juego, que se llamó Core War, en referencia a las viejas memorias que se usaban para guardar información a través de núcleos que se polarizaban en una malla metálica (hoy se usan semiconductores para esta labor, pero se mantuvo el nombre casi por ser emblemático).

Core War es pues un simulador que tiene cuatro componentes: un arreglo de 8000 direcciones de memoria, un lenguaje de programación (a nivel ensamblador), llamado Redcode, un programa ejecutivo denominado MARS (Memory Array Redcode Simulator) y un conjunto de programas escritos por los usuarios para luchar en la memoria. Los programas se cargan en memoria que es al azar y que nadie sabe cuál es. La meta es, desde luego, destruir al otro programa en memoria destruyendo sus instrucciones. Cada programador decide lo que su código puede hacer. Por ejemplo, si nota que hubo un cambio en sus instrucciones, puede bien regenerarse o copiarse a otra parte de la memoria. Cuando el programa quiere ejecutar una instrucción inexistente, pierde.

El autor del juego hace una descripción del lenguaje ensamblador, que es un lenguaje de programación de bajo nivel, pero que cumple con las ideas establecidas por Core War. Es de hecho un subconjunto de lenguajes de programación ensamblador reales, en donde se tienen modos de direccionamiento, cuestión que está limitada en Redcode. El lenguaje contiene 9 instrucciones y por ende, aprender a programar en Redcode no es algo que lleve mucho tiempo.

Dewdney muestra -en su artículo original- una serie de programas, "creaturas informáticas", que buscan ganar el encuentro en la batalla de Core War. E increíblemente muestra algunas de ellas que son muy simples de programar, muy estúpidas en su comportamiento, pero que en el fondo nos muestran su peligrosidad para mantenerse en la memoria para así ganar el juego.

Y es aquí donde me quiero detener. Claramente hay una analogía entre un virus que por ejemplo, enferma a un ser humano, el cual es un "programa con un código que se ejecuta ciegamente", y que para combatirlo ponemos un nuevo código -digamos una medicina- que destruye el código virulento. La comparación hace pensar que finalmente la abstracción de la vida en Core War nos puede enseñar muchas más cosas de cómo se comportan los seres vivos. 

En un siguiente artículo hablaremos del código de algunas de las creaturas que luchan en MARS.

Thursday, April 11, 2019

La UNAM publicará mi libro de Vida Artificial (*)


Hoy fui a Fomento Editorial de la UNAM, en donde desde hace un par de meses trabajaban sobre el dictamen de mi libro sobre vida artificial llamado "Jugando a ser Dios". Es un libro de divulgación sobre cómputo, en donde se hace un largo camino por toda esta "nueva ciencia" de lo que eventualmente se ha llamado como "Alife".

El libro, anteriormente, fue evaluado por el comité editorial de la Facultad de Ciencias de la UNAM, cuyo dictamen fue favorable, pero con la salvedad de que no había dinero para la impresión del mismo. Vamos, este es un problema recurrente en este sentido y no sólo en la Academia.

Anteriormente, había enviado el libro a la parte de divulgación de la ciencia de la UNAM, quien dio el visto bueno y prometió publicarlo. Sin embargo, la colección de libros "Cómo ves", me pidió una serie de cambios para mantener el formato que ellos usan. Hice los cambios y pasó casi un año para que de pronto me mandaran una carta, respondiendo a la mía sobre qué había pasado con mi libro, indicando que no lo editarían ellos, no hoy ni nunca. En fin, un mal momento, un pésimo trato a un autor al cual ya le habían aceptado su obra. Jamás, en ninguna parte y menos en la UNAM, alguien me había tratado de esa manera.

Como sea, todo parece haberse resuelto y Fomento Editorial de la Universidad Nacional me ha dado la buena noticia que a más tardar para el 2020 sale mi libro, pero que podría acelerarse si ocurren algunas cosas favorables. Si tengo más información, se las haré llegar a mis cuatro lectores que aquí me leen.

____
(*) La portada que ven es un boceto de mi hermana Marga,a pedido mío. No sé si esta sea la portada final.

Wednesday, January 22, 2014

Vida artificial: las hormigas de Langton


La vida artificial busca estudiar el fenómeno de la vida a partir de modelos lógicos simulados con la computadora. El término fue acuñado por Chris Langton en 1986, en lo que fue la primera conferencia internacional de la síntesis y simulación de sistemas vivientes.Un ejemplo es el juego de la vida de Conway, el cual en la década de los setenta tuvo un boom notable, probablemente gracias a Martin Gardner, que publicó un interesante artículo en Scientific American, en octubre de 1970. Por ejemplo, se pudo demostrar que el juego de la vida es una máquina universal de Turing. Hay un campo vastísimo para estudiar este autómata celular en 2 dimensiones.

Pero hay otras ideas en este mismo sentido que son aún incluso un enigma en el estudio de la vida artificial. Uno muy interesante es la hormiga de Langton, la cual no es otra cosa que una malla en dos dimensiones blanca. Una “hormiga” de Langton se coloca en medio de la malla y la hormiga puede moverse de acuerdo a las siguientes reglas:

  • Si la casilla es blanca, se convierte en negra. Se mueve la hormiga una casilla y se gira la derecha 90 grados.
  • Si la casilla es negra, se convierte en blanca. Se mueve la hormiga una casilla y se gira a la izquierda 90 grados.

La hormiga de Langton se define como una máquina de Turing que tiene un resultado emergente muy complejo. La universalidad del autómata de Langton se demostró en el año 2000. Hay de hecho maneras de generalizar con más colores este autómata, por  ejemplo usando las llamadas turmitas, o mejor dicho, termitas de Turing.

Se puede hallar, al ejecutar la hormiga de Langton, tres comportamientos, a saber:

  • Simplicidad. Durante los primeros doscientos pasos se crean patrones muy simples y frecuentemente simétricos.
  • Caos. Después de estos primeros doscientos pasos, aparecen patrones irregulares y la hormiga traza caminos pseudo aleatorios.
  • Orden emergente. Finalmente, alrededor del paso 10,000 se crea una especie de camino, una trayectoria que se repite indefinidamente. Se dice que es un atractor, pero no ha sido demostrado. Lo que sí se sabe es que sin importar la configuración inicial, la trayectoria de la hormiga no está acotada. A esto se le conoce como el teorema de Cohen-Kung.

Con todo esto, escribí mi propia versión de la hormiga de Langton. Obsérvese el comportamiento del mismo. Es increíble que de pronto la hormiga caiga en un ciclo recurrente y se genere este atractor.

La pregunta que se me ocurre es: ¿Califica esto como vida? (*)

_______ 
(*) A quien le interese mi software experimental de las hormigas de Langton, escríbame y se lo mando gratis a vuelta de correo (morsa@la-morsa.com)