17 de septiembre de 2013

Introducción a la Vida Artificial

Hace muchos años, (en 1992) comenzé a escribir una investigación grande sobre el tema de Vida Artificial. Logré contactar por Internet a los principales investigadores sobre el tema, y conseguí bastante información que estaba publicándose en ese momento.  Comenzaba a tener auge, y se consideraba como un tema que iba a resultar en grandes avances.

Casi 20 años después, no se escucha mucho al respecto.  ¿Será un tema que no encontró mayor expansión o aplicabilidad?  ¿Fue víctima de una conspiración?  Tal vez sólo fue un tema que fue "moda"...o tal vez ahora se llama de diferente manera (¿machine learning?).

Voy a comenzar a poner los capítulos que aún tengo, quizás le pueden servir a alguien.

¿Qué es Vida Artificial?


¿Por qué no podemos construir una computadora que piense? ¿Por qué no podemos esperar que máquinas que son capaces de realizar 100 millones de operaciones por segundo puedan comprender el significado de formas geométricas en imágenes, o incluso distinguir entre diferentes tipos de objetos similares? ¿Por qué no podemos esperar que las computadoras aprendan de la experiencia, en vez de repetir ciegamente instrucciones codificadas por un programador humano?

Estas son algunas de las interrogantes que se hacen los ingenieros de sistemas, programadores y diseñadores de computadoras, quienes tratan de crear sistemas cada vez más inteligentes.  Sin embargo, se topan con la limitación del modelo secuencial establecido por John Von Neumann, quien además formuló los primeros conceptos de la Vida Artificial.  A pesar de que las computadoras actuales son extremadamente capaces de llevar a cabo procesos matemáticos complejos y manejar grandes cantidades de datos, existen problemas que no tienen una solución secuencial.  Por esto, la nueva frontera de la computación se está extendiendo, hasta llegar a la tecnología de la Vida Artificial.

La Vida Artificial consiste en la aplicación de métodos y soluciones inspiradas en procesos biológicos encontrados en la naturaleza.  Estas técnicas se han hecho populares en los últimos años; algunas han sido probadas y ya se encuentran trabajando actualmente en el mercado, mientras que otras aún se están desarrollando en los laboratorios de investigación.  Existe un futuro promisorio para estas técnicas en el desarrollo de software nuevo, ya que permitirán atacar problemas de mayor tamaño y complejidad, y lograr soluciones viables para problemas difíciles de computación, como el reconocimiento de imágenes y el procesamiento de entornos virtuales.

Las tecnologías de la Vida Artificial están basadas en los resultados de muchos y diversos campos de investigación y están aplicando ya teorías no comprobadas acerca de algunos fenómenos naturales.  El objetivo común de todos estos métodos es el de resolver problemas que no tienen una solución analítica comprobable, como los resultantes de explosiones combinatorias.  En muchos de los casos, estos problemas tienen solución, pero es difícil de encontrar utilizando computadores secuenciales.

Tecnologías existentes

El reconocimiento por computador de escritura, lenguaje hablado u objetos necesitan del procesamiento en tiempo real de muchas entradas relacionadas entre sí.  Solamente el proceso de rastrear objetos de un cuadro de video al otro necesita de miles de cálculos realizados simultáneamente sobre miles de elementos de imagen (pixels).  Los problemas de control automático también necesitan del manejo de muchas reglas simultáneas.  Los controladores robóticos presentan un problema especial, ya que deben resolver cientos de funciones trascendentales sólo para levantar un dedo de manera precisa.

La predicción y otros métodos estadísticos también requieren del manejo de muchas variables simultáneamente.  Por ejemplo, usar una búsqueda exhaustiva para encontrar el camino óptimo para un vendedor rutero visitando una docena de ciudades lleva más tiempo de computador de lo que vale el ahorro en combustible.  Eso nos lleva a la siguiente pregunta: ¿cómo es posible que seres naturalmente inteligentes resuelvan este problema sin realizar un esfuerzo descomunal?   Hasta una abeja puede generar rutas complejas para visitar flores en el menor tiempo posible, comparables a las generadas por un supercomputador.  Copiando la forma en que la naturaleza resuelve estos problemas se puede lograr la creación de software inteligente, más pequeño, rápido y con menos errores.

El éxito más visible de estas técnicas consiste en la aplicación de redes de neuronas, también conocida como neurocomputación, neoconexionismo y procesamiento paralelo distribuido.  Otras técnicas de la Vida Artificial incluyen algoritmos genéticos, autómata celulares, dinámica caótica, y lógica multivaluada (fuzzy logic).

Muchos de estos métodos copian soluciones encontradas en la naturaleza por medio de una simulación en software del proceso e insertando en la simulación los parámetros de un problema real.  Las redes de neuronas se basan en principios obtenidos de la investigación de la forma en que trabaja el cerebro para modelar procesos de reconocimiento, aprendizaje y planeación.  La lógica multivaluada (fuzzy logic) se asemeja bastante a la forma en que los humanos razonamos, con reglas aproximadas y decisiones de forma si/no/tal vez.  Los algoritmos genéticos toman directamente de la investigación genética, modelando los principios de Darwin sobre la selección natural y la supervivencia del más fuerte.