Vida Artificial

Investigación

Artículos

Autor

Otros

Un breve vistazo a la Vida Artificial
Rafael Alberto Moreno Parra
Profesor Hora Cátedra
Facultad de Ingeniería de Sistemas

Resumen

Día a día las tareas que debe desempeñar el ser humano son mas complejas y largas, se requiere el desarrollo de nuevas herramientas automatizadas que sepan sortear la gran complejidad del medio ambiente. La Naturaleza ya ha solucionado esto a través de la vida. La vida artificial es la disciplina con la cual se estudia la vida y como sus características pueden ser implementadas en software y hardware.

Palabras Clave

Vida Artificial, Evolución, Complejidad, Algoritmos Evolutivos.

Introducción

La reciente tragedia del Columbia fue un triste recordatorio sobre los peligros que acarrean ciertos oficios. Hay personas que se juegan la vida diariamente manipulando sustancias tóxicas o radioactivas, desarmando explosivos, explorando los cráteres de volcanes semi-activos, manejando mortíferos virus o bacterias para buscar curas contra terribles enfermedades, .... la lista de ejemplos es larga. Imagínese un día soleado de campo, pero no para disfrutar del paisaje sino para buscar minas terrestres antipersonales y desactivarlas, es un oficio bastante peligroso pero "alguien debe hacerlo": ¿no sería mejor que en vez de un "alguien", fuera un "algo" que hiciera dicha labor?.

Veamos este otro caso: la distancia de la Tierra a Marte es de 55 millones de kilómetros cuando ambos planetas están lo mas cerca uno de otro (en astronomía se denomina oposición favorable) y están un máximo alejados en 100 millones de kilómetros. Ahora supongamos que enviamos un robot explorador terrestre a Marte (actualmente no se pueden enviar seres humanos), si se usa el clásico control remoto desde la Tierra (con ondas de radio que viajan a la velocidad de la luz o aproximadamente 300.000km/seg.), el envío de una orden tardaría 183 seg. o casi 3 minutos (planetas en oposición favorable). Hagamos de cuenta que nuestro robot posee una cámara de video y envía la señal al centro de operaciones en la Tierra, dicha señal de video llega con una tardanza de 3 minutos. Si el robot se dirige a un agujero donde puede caer y destruirse (perdiéndose millones de dólares en investigación), el tiempo que toma el envío de la señal de video a la Tierra y el envío de la señal a Marte para cambiar de dirección o detenerse sumarían 6 minutos, demasiado tiempo para evitar el accidente. ¿No sería mucho mejor que el robot cambiara la dirección cuando detecte un hueco?.

Otro caso: En una planta industrial donde se producen miles de unidades de cierto producto por lotes, durante las inspecciones de calidad que requieran intervención humana (por ejemplo, verificar que el olor y el color sean lo esperado) se toma una muestra representativa de cada lote y se examina, si en la muestra se detecta algún problema, todo el lote pasa por una revisión mas a fondo, pero si la muestra esta acorde a los criterios de calidad, el lote es aprobado. Pero aquí funciona el factor suerte: es posible que en la muestra no aparezca ninguna unidad "mala", pero si la haya en el lote. La única opción para garantizar cero fallas es verificar todas las unidades del lote, una tarea muy larga y tediosa para una persona. ¿No sería mejor que esa tarea fuera realizada por una máquina que no se cansa, no se equivoca y no protesta?.

Estos casos y muchos mas nos muestran que ciertas tareas no son para ser realizadas por personas (por peligrosas, por limitantes físicas o porque vulneran la dignidad humana). Nuestro desarrollo tecnológico persigue la creación de herramientas que faciliten nuestro trabajo. Sin embargo, las tareas cambian o se vuelven cada vez más complejas, luego es imperante el desarrollo de herramientas cada vez más complejas. Es una carrera sin fin.

Las tareas más complejas requieren el manejo de miles de variables donde cada una puede afectar a la otra en innumerables modos. Deducir un modelo matemático que cubra el comportamiento de todas esas variables es una empresa prácticamente imposible y en caso de lograrse, calcular el comportamiento de esas variables requeriría poderosas computadoras por años.

¿Un ejemplo? Igualar una ecuación de grado dos a cero con solo una sola variable independiente:

image

La solución la conocemos desde la secundaria:

image

Ahora si se aumenta a grado tres:

image

La solución es un poco más compleja:

image

donde

image y image

Y las de grado cuatro

image

despejar X da una solución tan larga que por motivos de espacio me abstengo de publicar. Las de grado cinco en adelante, un joven matemático francés llamado Niels Henrik Abel (1802-1829) demostró que era imposible encontrar una fórmula usando radicales para dar con el valor de X.

Como se puede observar, con tan solo una variable independiente ya las soluciones empiezan a ser complejas. El mundo a nuestro alrededor maneja muchas mas variables, interrelacionadas en diversas formas, solo imagínese la complejidad.

¿Variables? ¿Qué variables? Mientras usted esta leyendo este artículo, diversos factores (a los que llamo variables) lo están afectando, como la fuerza de gravedad, la temperatura, las corrientes de aire, la composición del aire, los diversos sonidos y eso solo para mencionar unas pocas externas; su propio cuerpo tiene varias variables como pérdida de agua por transpiración, calor corporal, etc.. algunas de estas variables sean internas o externas las percibimos, otras no. ¿Siente el paso constante de millones de neutrinos a través de su cuerpo? No lo creo, pero en realidad eso sucede.

Complejidad es la palabra clave. Volviendo al caso de un robot terrestre de exploración marciana, nos enfrentamos a diversas variables como el tipo de terreno que esta pisando el aparato, la inclinación, los fuertes vientos que pueden volcarlo, los obstáculos (enormes piedras o profundos huecos), las bajas temperaturas que pueden afectar el funcionamiento de los circuitos, la radiación que recibe del sol, los guijarros que pueden golpearlo impulsados por el viento, la cambiante luz, la noche y el día, todo eso solo para que el aparato pueda desplazarse y sobrevivir, aún falta que explore y si encuentra algo interesante (¿cómo se le define el concepto de "interesante" a una máquina?) vaya hasta allí y lo analice.

Tanta complejidad nos abruma. ¿Existe un método, modelo, abstracción, procedimiento o algo que ya haya solucionado esto? La respuesta es si, existe eso y se le conoce como "Vida".

Aprendiendo de la Madre Naturaleza

Los seres vivos son la respuesta a un ambiente complejo y cambiante. Entonces la pregunta ¿Cómo manejamos tanta complejidad? se convierte a ¿Cómo hizo la Madre Naturaleza para manejar tanta complejidad? (es más fácil hacer "Ingeniería Inversa" que generar una idea extraordinariamente novedosa).

Con la nueva pregunta, tenemos un punto de partida y es el estudio de la vida y como poder implementar las características de la vida en nuestras herramientas con el fin de poder dar solución a situaciones muy complejas. A esta disciplina se le conoce como "Vida Artificial".

Los pasos hacia la Vida Artificial

Charles Robert Darwin (1809-1882) sentó las bases de la moderna teoría de la Evolución de las Especies, un concepto que explica como todos los seres vivos son moldeados lentamente por el proceso de la selección natural.

En la naturaleza, los seres vivos compiten por los escasos recursos y además intentan sobrevivir al ambiente inclemente. Solo los más aptos pueden vivir hasta poder reproducirse. El ser más apto significa que el ser vivo tiene una variación natural conveniente (producto de una mutación) y es esta variación la cual es heredada a su descendencia, por lo tanto, generación tras generación, la especie se va adaptando mejor al ambiente circundante.

Este principio se aplica en las simulaciones de vida artificial. Un sencillo experimento: dado una serie numérica de entrada y una serie numérica de salida, determinar que operaciones matemáticas debieron ocurrir para que la serie de entrada se convirtiese en la serie de salida.

Un ejemplo:

Serie de Entrada: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
Serie de Salida: 1, -2, 3, -4, 5, -6, 7, -8, 9, -10, 11, -12, 13

A simple vista, la solución es que los números pares son multiplicados por -1 y los impares por 1. Fácil decirlo. El reto es decirlo en un lenguaje de programación.

A continuación, el texto estará orientado a personas familiarizadas con desarrollo de software.

El propósito del experimento es que utilizando la Teoría de la Evolución, un software genere algoritmos al azar y por "selección natural" se escoja cual algoritmo dada esa serie de entrada, genere la serie de salida.

Generar algoritmos validos al azar para después evaluarlos requiere hasta plantearse como sería ese lenguaje de programación. La sintaxis de lenguajes de programación modernos como Delphi, Visual Basic, C++, Java hacen en extremo difícil generar programas al azar y que funcionen. Así que la inspiración viene del clásico lenguaje ensamblador. Este lenguaje es muy simple, todo esta en asignaciones, comparaciones y saltos, el problema es que se genera código espagueti (muy difícil de mantener), pero será útil para el experimento.

El nuevo lenguaje de programación tendría estas características:

1. Solo cuatro(4) variables de tipo flotante.
2. Hay asignaciones y comparaciones.
3. Las comparaciones generan saltos.
4. No hay ningún tipo de estructura procedimental u orientada a objeto.

Las líneas de código son de dos tipos:
1. Asignación
2. Validación IF

En la asignación el modelo de construcción es:
Label: Variable = Expresión;
Variable puede ser W, X, Y, Z y Expresión es una expresión matemática de una sola variable independiente (que puede ser W, X, Y, Z).
Ejemplos de asignaciones:
X = Y * 3 / 2 + Y * Y - 7;
W = 45 + (3 * Z - Z * Z * Z);
Z = 4 * Z - 2 * Z * Z;

En la validación IF el modelo de construcción es:
Label: IF ( Variable Condición Expresión ) Goto LineaCodigo
Donde Variable puede ser W, X, Y, Z; Condición puede ser > (mayor que), < (menor que), !(diferente), =(igual); Expresión es una expresión matemática de una sola variable independiente (que puede ser W, X, Y, Z); LineaCodigo es a que línea de código el programa irá si la condición es evaluada como verdadera.
Ejemplos de validaciones son:
IF ( X > (4 * Y - Y * Y + 7) ) Goto 2;
IF ( Z ! (12 -X + X * X + 7) ) Goto 8;
IF ( W < (W * W - 7 * W - 43) ) Goto 4;

Uniendo asignaciones con validaciones obtenemos un programa, por ejemplo:
1: IF ( X> (3 + X + X*X )) Goto 3; // Es in If condicional
2: Y = 4 - Z +Z * Z * Z; // Es una asignación
3: Y = 10 - W * W; // Es una asignación

Las expresiones tienen las cuatro operaciones básicas (suma, resta, multiplicación y división, no existe división módulo).

Como desarrollador de software y teniendo en cuenta estas limitantes, el algoritmo que debería generarse para cumplir con el ejemplo es el siguiente:

Función CambiarSerieSalida(X)
1: Y = X;
2: W = X;
3: W = W - 2;
4: If (W < 0) Goto 8
5: If (W = 0) Goto 7
6. If (Z = 0) Goto 3
7. Y = X * -1;
8: Retorna Y;
Fin Función.

Las líneas que deberían generarse al azar son de la primera(1) a la séptima(7), ¿Creen que al puro azar este algoritmo se pueda generar? Veamos un poco de probabilidades:

Tipo de Instrucción (Asignación o Comparación): 1 de 2
Variable a comparar o asignar: 1 de 4
Si compara, que tipo de comparación (mayor, menor, igual, diferente): 1 de 4
Expresión (si es un simple: numero operando numero): 13 * 4 * 13
Salto, dependiendo del número de instrucciones: 1 de 8

Las probabilidades de que resulte este algoritmo son aproximadamente de: 1 en 1e30 (un 1 seguido de 30 ceros) en el mejor de los casos. Si tuviese un computador muy rápido que cada algoritmo sea generado y evaluado en una diez mil millonésima de segundo tardaría mas de 1 billón de años en dar con el algoritmo.

Con nula esperanza ejecuté la simulación. Para mi sorpresa, a las 3 horas en un Pentium III a 450Mhz (bastante lento en comparación con el computador rápido que imaginé), ya se había generado el algoritmo, pero no era el mismo que había pensado como programador, era otro pero cumplía con lo previsto.

float fSerVivo(float X)
{
float W=0, Y=0, Z=0;
1: if( Z = (8-X) ) goto 3;
2: if( Y ! (6-X) ) goto 8;
3: W = 3-8+X;
4: if( Y < 9-W-W ) goto 7;
5: if( W < 2+6-X ) goto 3;
6: if( W < 1+6-W ) goto 12;
7: X = X-X-X;
8: if( W = 9+1-X ) goto 12;
9: if( Y = 2-(X) ) goto 5;
10: Y = X+1-X;
11: if( Z = 8-X-X ) goto 4;
12: Z = Y+Y*Y;
13: if( X = 3+7+Z ) goto 3;
14: if( Y > 6-Z+Z ) goto 13;
15: Y = X/X*X;
return Y;
}

¿Fue cuestión de pura suerte? Ejecuté la simulación varias veces y se generaron otros algoritmos que cumplían con lo exigido. La "selección natural" funciona.

¿Cómo trabaja la simulación? Se generan al principio algoritmos al azar y se buscan si dada la serie de entrada, se genera la serie de salida, el algoritmo que más se acerca se le crea descendencia; cada hijo tiene una mínima variación del padre (cambia algún operador, una variable, etc.), los hijos nuevamente son evaluados; el hijo que se acerque mas a la serie de salida se convierte en padre y así sucesivamente.

Este sencillo experimento ilustra una manera de empezar con el tema de la computación evolutiva.

No se ha dicho la última palabra

Si usted decide fabricar un avión, ya hay abundante material que le indica que principios debe tener en cuenta para el diseño. Aquellos viejos tiempos en el que los pioneros buscaban como hacer volar a una máquina, creando artificios que agitaban alas de madera o metálicas emulando a las aves son curiosidades y a mas de uno se le dibuja una sonrisa el ver esas viejas películas sobre los intentos del hombre por volar.

En el campo de la vida artificial, se están todavía agitando alas de madera, hasta ahora no hay un diseño o camino claro para donde ir. Ningún software o hardware actual se acerca a lo que es capaz de hacer un humilde insecto. No niego que hay adelantos en el campo de la Inteligencia Artificial y lo han demostrado, por ejemplo, Deep Fritz y Deep Junior, desarrollados para jugar ajedrez y que no fueron vencidos por los mejores jugadores del planeta en un torneo oficial. Pero la vida es mucho más compleja que un juego de ajedrez.

Es hasta irónico, lo que para nosotros es en extremo sencillo, es en extremo difícil o no se tiene la menor idea de cómo implementarlo en una máquina.

Un ejemplo: Le dan a usted una serie de fotografías y le encargan la tarea de categorizarlas, una tarea sencilla para nosotros como humanos, pero detrás de escena, nuestro cerebro esta interpretando la información visual y la compara con recuerdos y conceptos, para después tomar la decisión a que categoría debe ir. La tarea puede ser divertida, pero si es de un tema que no es del agrado de la persona o no es un puñado de fotos sino millones entonces estamos frente a un problema. Categorizar millones de fotos requerirían un ejército de personas pagadas que tardarían cierto tiempo en completar esa tarea. ¿Podría un software / hardware hacer lo mismo? La respuesta por ahora es NO.

Si usted decidiera desarrollar un sistema operativo o un procesador de palabras y quiere sacarles provecho comercial, se dará cuenta que estos tipos de software hace rato han sido cubiertos o hay un gigantesco avance con miles de programadores expertos en la materia. No sucede lo mismo con la vida artificial. Esta puede ser una gran oportunidad. Abordar este tema tan difícil, requiere de creatividad, mente abierta, persistencia, mucha paciencia, investigación, cuidadosa observación y pasión.

El día que la humanidad logre este hito, el salto tecnológico será enorme, las nuevas herramientas que nacerían con esta tecnología nos permitirán hacer cosas inimaginables actualmente: la conquista del espacio será una realidad, los avances médicos serán maravillosos (imagínense tener un sistema inmunológico artificial: enfermedades como el SIDA o el cáncer serían tan solo malos recuerdos), la generación de nuevos materiales, mas baratos, cero contaminantes utilizando ejércitos de nanomáquinas podría ser la respuesta al creciente y muy preocupante problema de la contaminación, es más, se podrían dejar que evolucionen nanomáquinas que destruyeran elementos contaminantes y evitarán desastres ecológicos.

¿Hay riesgos?

Desgraciadamente varias personas tienen una visión muy oscura y negativa de la vida artificial y esto en gran parte es debido a películas de cine y televisión que muestran como en el futuro robots y máquinas inteligentes se apoderan del mundo y destruyen a los humanos. Despertar miedos y acercarlos lo más posible a la realidad ha sido una fórmula muy rentable para las grandes productoras de películas. Un paralelo a esto podemos verlo con los tiburones: aunque ser atacado por un tiburón es extremadamente raro, la gente les tiene muchísimo miedo, los han cazado indiscriminadamente y los han llevado casi al borde de la extinción por lo que algunos países tuvieron que protegerlos; la culpa es debido a las películas mostrando lo que NO es un tiburón. Realmente lo que muestran es el lado maligno de los humanos pero en el cuerpo de un Tiburón o una Anaconda o un Cocodrilo.

No es prudente entonces juzgar los riesgos de la vida artificial con lo que se exhibe en las películas. Una fuente más fiable es ver que sucede en un entorno real y la misma naturaleza puede enseñárnoslo: cuando dos especies requieren de un mismo recurso y este es muy escaso, hay competencia y rivalidad. Un ejemplo se puede ver en las estepas africanas, donde los leopardos y leones son enemigos declarados. También está el caso de los pumas y lobos en varios parques porque compiten por las presas. Son depredadores y su comportamiento agresivo es instintivo. Pero si varias especies están en un mismo espacio (no hay depredadores ni presas) es más probable que hayan relaciones simbióticas entre estas o simplemente la indiferencia porque cada especie va por recursos distintos.

Existe otro factor: nuestra especie, la humana, es una de las más agresivas en el reino animal. Algunas razones que explican dicho comportamiento es por la propia debilidad de nuestro cuerpo, el cual no tiene dientes grandes o garras. Para compensar esta debilidad debimos ser más agresivos: una consecuencia evolutiva. Si a este fuerte instinto agresivo se le une una prodigiosa inteligencia para desarrollar herramientas, entre ellas armamento, nuestra historia ha mostrado los resultados de esta combinación. ¿Y a que viene todo esto? Sucede que nuestro juicio hacia otras especies la vemos desde la óptica humana, desde una muy agresiva óptica humana. El solo hecho de pensar que nuevas especies aparezcan supone para nosotros una posible amenaza, mas que una oportunidad de interrelacionar con ellas.

Imaginemos el siguiente ambiente: máquinas vivas que se reproducen, evolucionan y piensan en forma autónoma, sin intervención humana. Libres.

Cuando menciono máquinas vivas, no me refiero a robots súper-avanzados exclusivamente, pueden ser programas (software) que viven dentro de un computador o una red de computadores. Una máquina podría tomar el control de un robot y hacer cosas, pero es algo opcional.

¿Serán nuestras amigas o enemigas estas máquinas vivas?

Como humano ya percibo la amenaza de estas nuevas especies, pero es un juicio parcializado por mi instintiva agresividad y miedo. Siendo más racionales y aplicando lo visto anteriormente, estas máquinas vivas, estas nuevas especies, serán completamente distintas a nosotros, incluyendo los recursos que consumen. Aquí expongo una serie de razones por las cuales considero que entre las máquinas vivas y los seres humanos habrá indiferencia:

1. Si evolucionan de las máquinas sin vida que tenemos actualmente, entonces su recurso primordial será la energía eléctrica. Aquellas máquinas que logren conseguir electricidad de forma fácil se impondrán por selección natural a aquellas máquinas que la consiguen de formas difíciles. Los humanos no se recargan con electricidad directamente, nosotros somos plantas químicas que necesitamos agua y alimentos que después son convertidos en energía. Por ese lado no hay competencia entre humanos y máquinas.

2. Para crecer y reproducirse las máquinas necesitaran materiales como metales, plásticos, etc.. Nosotros los humanos, crecemos y reproducimos con materiales generados por el metabolismo propio de nuestro cuerpo gracias al consumo de agua y alimentos. Tampoco hay competencia.

3. Las máquinas podrían vivir eternamente, mientras encuentren "repuestos" y electricidad que las mantenga. Los humanos no podemos escapar de la muerte. Entonces nuestras preocupaciones o ideologías serán completamente distintas a las de máquinas vivas. Los pensamientos de ellas no nos interesarán a nosotros y viceversa.

4. Al estar vivas, las máquinas evolucionan, luego se generan multitud de especies, algunas haciendo simbiosis y otras compitiendo. Estos asuntos serían muy preocupantes para las máquinas, ocupando la mayor parte de su tiempo. El ser humano ni coopera, ni compite luego muy rara vez sería tenido en cuenta por ellas.

5. Una máquina casi inmortal no se enfrentaría a humanos, porque correría el riesgo de morir. Mas inteligente es alejarse y dejar que el tiempo se encargue de los humanos (finalmente nosotros moriremos). Una máquina que puede vivir eternamente, esperar cien años no es gran cosa.

En cambio, las máquinas vivas y posiblemente inteligentes (tanto o más que nosotros) pueden ser muy útiles para nuestra especie:

1. La exploración espacial es muy difícil hacerla con nuestros cuerpos físicos, el ambiente espacial es hostil (radiaciones letales, falta de oxigeno, temperaturas extremas, sustancias químicas dañinas, diferencias de presión atmosférica, gravedad o muy baja o muy alta). Las máquinas soportarán mejor estas condiciones y pueden adaptar esos ambientes extremos para que podamos después ir allí sin problemas.

2. Uno de los grandes problemas de la exploración espacial es que el ser humano requiere de espacio para moverse y por ahora nuestras naves espaciales son pequeñas. Viajar durante meses y años por el espacio en un lugar estrecho, con poco o nulo contacto social afectaría la salud mental de los astronautas. Este problema no lo tendrían las máquinas vivas ya que pueden vivir en el interior de una computadora con terabytes de memoria.

3. Algunos oficios peligrosos para nuestros cuerpos orgánicos podrán ser fácilmente hechos por las máquinas (usando robots), por ejemplo, exploración de volcanes activos o enormes profundidades marinas.

4. Nuestra contaminación y desechos podrían ser alimento para las máquinas, luego ellas convertirían esta contaminación en materiales benignos para seres orgánicos como nosotros.

5. Nuestra existencia no esta garantizada, millones de especies han desaparecido para siempre ya sea por cambios climáticos, falta de alimentos, competencia con otras especies, autodestrucción, etc.. Es posible que nuestra especie, la humana, algún día desaparezca, se extinga. Al menos, nos quedaría la satisfacción que una especie creada por nosotros sobreviva y evolucione llevando parte de nuestra cultura, ideología y forma de pensar a otros planetas.

¿Si habrá éxito en esta empresa?

Personalmente creo que si se conseguirá el éxito en lograr la vida artificial, ya no la llamaríamos así, porque sería vida como cualquier otra. Esta es una labor conjunta entre varias disciplinas.

La naturaleza guarda varios secretos celosamente, el primer paso esta dado con la Teoría de la Evolución de las Especies de Charles Darwin, pero como ocurre con cualquier teoría hay que complementarla. Por el lado de la Biología y la Genética se esperan nuevas ideas que nos iluminen el camino sobre que características tiene la vida y como funcionan y así poder implementarlas en software y hardware. Por ejemplo, la hipótesis de la SimbioGénesis (Generación por Simbiosis) la cual predica que criaturas complejas como mamíferos, lagartos, aves, son en realidad la perfecta simbiosis de criaturas mucho más sencillas.

Está la fotónica la cual permitirá generar computadores cuánticos varias veces más rápidos que los actuales más veloces. Las simulaciones complejas de vida artificial requerirán gran poder de cálculo.

Las matemáticas, pilar fundamental de la programación. Los adelantos en esta materia mejoraran los algoritmos actuales.

Mayor Información

Puede visitar mi página Web en http://www.geocities.com/krousky , en esta página encontrará artículos, simulaciones, hipótesis y diversos temas que tienen que ver con mi investigación sobre Vida Artificial.

Descargar Documento en Word 2000

1