
Los algoritmos genéticos son un resultado de los avances de la computación y de la genética. Son herramientas de la inteligencia artificial porque aprenden simulando parcialmente los mecanismos de la evolución. Su característica principal es su eficacia para optimizar casi cualquier problema.
Los algoritmos genéticos son parte de la Computación Evolutiva, que simula el proceso de selección natural desde un punto de vista neodarwiniano: la diferenciación de las especies dada por pequeños cambios accidentales que, vistos después de mucho tiempo, parecen tener un propósito específico. Darwin analizó las características de los antecesores de las especies e infirió que se trataba de un proceso evolutivo. En esa época no se conocía el mecanismo de la herencia desde el punto de vista molecular. Este se descubrió mucho después, a mediados del siglo 20, cuando Watson y Crick encontraron la forma helicoidal del DNA. Después de esto, se entendió mejor que los cambios ocurrían porque en el proceso de copia de la información -contenida en los núcleos de las células- a veces hay errores. Unos se deben a que el mecanismo de copia no es perfecto y otros a que hay agentes exógenos que producen cambios en los genes. La probabilidad de falla en el proceso de copia de la información genética es bajísima; lo que llama la atención no es que haya errores sino que sean tan pocos.
Si nosotros tomamos la perspectiva de que un ser vivo es la respuesta a los problemas que plantea el medio ambiente, aquel es un diseño de la naturaleza que pretende resolver los problemas de su entorno. Un ejemplo es el del cuerpo de los pingüinos: el volumen de estos animales les permite nadar con muy baja resistencia y a la vez almacenar la grasa en su cuerpo. Este parece ser el mejor diseño. Pareciera como si un ingeniero lo hubiera creado. Pero tal vez el más interesante de todos los diseños lo constituyan los seres humanos, quienes tienen en su cerebro un sistema de simulación que les permite representar eventos que todavía no suceden. Esta característica es la que otorga su principal ventaja evolutiva al ser pensante. A diferencia de cualquier otro animal, puede tomar acciones ante eventos del futuro.
La idea de simular el proceso evolutivo en la computadora para diseñar aplicaciones en, por ejemplo, la ingeniería, la economía, la toma de decisiones financieras, etcétera es la base de la computación evolutiva. Un algoritmo genético trabaja de esa forma, con conjuntos de individuos y proponiendo soluciones distintas. Suponemos que la representación, frecuentemente binaria, corresponde a los genes del individuo (su ADN) y su interpretación – como números, por ejemplo - a las características observables – el color de sus ojos, su estatura, etcétera. A los individuos, los describimos como cadenas de números y un conjunto de éstas forman una población. Así se generan muchos individuos y simulamos, también, lo que hace la naturaleza. Luego, observamos las características que constituyen a las mejores soluciones y calificamos a los individuos – de manera análoga a la forma en que a naturaleza “califica” a los individuos más aptos permitiéndoles sobrevivir con mayor probabilidad. De la población escogemos a los individuos más sobresalientes y seleccionamos un subconjunto de ellos. De esta forma imitamos el procedimiento de selección natural. Por último se simula el intercambio genético. El sexo es un invento maravilloso de la evolución, a través del cual los genes de ambos padres se combinan para rápidamente privilegiar las características que son más adecuadas de cualquiera de ellos para que el individuo sobreviva en su entorno. Durante la mayor parte de la historia de los seres vivos, los organismos fueron asexuales y evolucionaban lentamente. Cuando apareció el sexo la evolución se hizo mucho más rápida. En algoritmos genéticos hacemos lo mismo. De los individuos tomamos una cantidad determinada de características que corresponden al “padre” y otras tantas de la “madre” y se intercambian. En los seres humanos el 50% del material genético proviene de la madre y el otro 50 del padre; pero el individuo resultante es distinto a los dos progenitores. Algo análogo se hace con algoritmos genéticos.
Finalmente, igual que en la naturaleza, se consideran las mutaciones. Contamos con individuos nuevos con las características de los mejores, pero mezclados y además con ciertas mutaciones para explorar posibles nuevas características. En la computadora tenemos la ventaja de que podemos hacer eso varias miles o millones de veces por segundo. Lo que a la naturaleza le toma millones de años, nosotros lo hacemos en unos segundos. El resultado es que logramos una población de individuos y entre ellos, uno va a ser el mejor. De manera libre resolvemos el problema de la manera más económica posible porque en cada generación hacemos un proceso de selección, cruzamiento y mutación, para finalmente encontrar al mejor individuo.
Todo Empezó en los 60…
¿Desde cuándo se usan los algoritmos genéticos? ¿Desde cuándo existen? En los 1960, dos investigadores alemanes - Schwefel y Rechenberg - inventaron las estrategias evolutivas, con las que diseñaron elementos de avión. Ellos trabajaron la evolución, pero sin tomar en consideración la parte genética. Simple y sencillamente tomaron en cuenta la herencia y la mutación. Sus algoritmos tuvieron buen desempeño pero, debido a que su trabajo tenía implicaciones militares, se clasificó la tecnología y no se alentó la publicación del tema. Una década después, el estadounidense John Holland se aplicó a la misma idea, pero sí consideró la parte genética. Fue precisamente él quien los bautizó como algoritmos genéticos.
El auge de esta técnica empezó a principios de los 1980 y realmente se reconoció como una cuestión muy útil a principios de los 1990. A partir de entonces ha tenido una explosión fantástica. Según ciertos autores se publican alrededor de 100 artículos diarios sobre el tema. Parece exagerado, pero es el reflejo de la intensa actividad en el área.
Sí Funcionan, pero ¿Siempre?
Los científicos están convencidos de que los algoritmos genéticos sí funcionan. Ejemplos existen en diversos países del mundo y en México. Sin embargo, es necesario saber en qué casos trabajan y cómo hacer para que siempre sean funcionales. Necesitamos detectar qué problemas hay en este sistema evolutivo para luego tratar de corregirlos. A la gente de computación, le interesa dar con un programa que sea aplicable a la gran mayoría de los problemas.
Los algoritmos genéticos se catalogan dentro de las herramientas de la inteligencia artificial porque el algoritmo aprende. Pero hay que quitarse de la mente el significado antropocéntrico que se tiene de la palabra “aprender”: el de abrir un libro y estudiar. La naturaleza aprende a través de la evolución. Nosotros somos un producto muy acabado de un aprendizaje de muchos millones de años. Así pasa con un algoritmo genético: aprende simulando la evolución. Claro que es una simulación parcial, ya que hay muchos elementos no considerados porque no son necesarios ni útiles en el contexto computacional. Tal es el caso de las cadenas genéticas que son diploides. Esto es, cadenas dobles que permiten que los caracteres llamados recesivos se manifiesten en el individuo solamente si ambos progenitores los presentan. ¿Por qué es útil esto en la naturaleza? porque aquellas cosas que fueron buenas en algún momento para la especie deben poder recuperarse con facilidad. No obstante, el diploidismo en algoritmos genéticos no se usa normalmente porque, usualmente, no lo necesitamos. A nosotros no nos interesa recordar lo que sucedió con las anteriores generaciones porque en la computadora podemos trabajar con 100 millones de generaciones en tiempos cortos.
Sus Aplicaciones son muy Vastas
Los algoritmos genéticos han sido aplicados con éxito en infinidad de problemas, actuando como un proceso de cómputo que emula la forma de proceder de la evolución genética y opera sobre una población de individuos que representan las soluciones potenciales a un determinado problema. Los algoritmos genéticos son herramientas para optimizar casi cualquier problema, ya que éstos pueden trabajar con base en la descripción del medio ambiente, lo cual permite resolver muchos problemas de optimización.
Una de las áreas donde se aplican es en el aprendizaje automático. En inteligencia artificial se conocen como sistemas expertos o programas para la resolución de problemas a los que se cuestiona sobre qué hay que hacer y los cuales dan respuestas. Hay ejemplos de sistemas expertos, por ejemplo, en medicina, abogacía, etc. La mayor parte de los sistemas expertos no incorporan todas las reglas ni todo el conocimiento. Queremos que nuevas reglas se vayan descubriendo y una forma de hacerlo es con algoritmos genéticos.
En trabajos recientemente publicados se ha hecho modelación de sistemas económicos y predicciones en la economía. Aunque los sistemas económicos son caóticos -no existen reglas claras para ellos sólo exhiben esa característica caótica temporalmente. Hay segmentos de tiempo donde sí se comportan de manera regular. Por ello, es posible hacer análisis en períodos de estabilidad y lograr predicciones.
Otro de los campos en los que opera esta herramienta es en el reconocimiento de formas, algo difícil y complicado para la computadora. Esta rama conduce a resolver un problema de reconocimiento de rostros, de aplicaciones prácticas de impacto evidente.
En las telecomunicaciones hay un ámbito más sofisticado en el que también son aplicables. Cuando enviamos información de un continente a otro, por ejemplo, utilizamos satélites que funcionan como espejos. Esto es así porque las señales de alta frecuencia atraviesan la ionosfera y hay que reflejarlas artificialmente. Poner un satélite en órbita es muy costoso, por lo que es importante optimizar el uso de los canales de comunicación. Para este efecto es posible intentar la compresión de datos. Esta se puede realizar con los algoritmos genéticos, ya que éstos aprenden la estructura de los mensajes y permiten transmitir más información por el mismo canal. Otro problema es que, en Internet, las imágenes tardan en llegar porque la información no se comprime al máximo. Podríamos usar algoritmos genéticos para comprimirla del lado del transmisor y descomprimirla de lado del receptor.
Otra cuestión que se usa mucho en computación son las redes neuronales que pretenden simular la estructura del cerebro. Es un mecanismo interesante que aprende también, pero hay que entrenarlo. A las redes neuronales pueden entrenarlas los algoritmos genéticos para que aprendan mejor. Así hacemos inteligencia artificial, pero no directamente. Las redes neuronales se usan en el sector financiero, en análisis de auditorías o en análisis de riesgo financiero, por ejemplo. Pero su desempeño es mejor cuando las entrenan los algoritmos genéticos.
También Tienen Limitaciones…
Los algoritmos genéticos, sin embargo, no son una panacea. Aunque los casos en los que no funcionan bien son pocos es muy importante identificar cuáles son sus limitaciones y para lograr esto hay que entenderlos.
Cuando los algoritmos genéticos encuentran las soluciones lo hacen muy rápidamente y en problemas muy complicados, pero se parecen a los humanos en que no necesariamente hallan cuál es la mejor. ¿Qué haría un tomador de decisiones humano? Probablemente tomaría la decisión más rápida o aquella que más se aproxima a lo mejor que pudimos haber hecho. Ese es el caso de los algoritmos genéticos; no encuentran siempre la mejor solución ¿cómo sabemos cuál es la mejor solución en un caso inesperado? Generalmente no lo sabemos, pero sí podemos encontrar una opción suficientemente buena. Así sucede con el algoritmo genético: rara vez no encuentra una solución cercana al óptimo.
Otro aspecto que interviene en el funcionamiento de los algoritmos genéticos, es el de los problemas “engañosos”. Hay información en los genes que puede llevar al algoritmo hacia una solución errónea. El algoritmo puede engañarse, es decir, el algoritmo “cree” que va muy bien porque cierta información genética lo lleva hacia un destino equivocado. De ahí la tarea de los especialistas para que esto no pase. En los ejemplos ya mencionados no hay este tipo de engaño. Son problemas muy específicos aquellos en donde se presenta esta situación.
Existen muchas variaciones de algoritmos genéticos. Por ejemplo, con el elitismo hacemos que el mejor individuo de toda la progenie nunca muera. En algoritmos genéticos esto se puede hacer; en la naturaleza no. Es también posible conservar al mejor individuo y hacer cruzamientos “pangenéticos”. Esto es, se toma un padre y se hace que tenga miles de descendientes. De manera normal, eso no se lleva a cabo porque típicamente se toman parejas. Pero puede encontrarse a un individuo que esparza su herencia genética en toda la población. El que haya muchas variantes es lo que hace interesante el estudio de los algoritmos genéticos.
Enfoque Integral
La teoría matemática de los algoritmos genéticos es muy incipiente porque se trata de un fenómeno muy complejo, al igual que lo son los de la herencia y la selección natural. Para su manejo adecuado, es conveniente conocer una serie de disciplinas como la estadística, la teoría de la información y de la computabilidad, entre otras.
En México, en este campo, en las diferentes instituciones de educación superior se llevan a cabo investigaciones, algunas en la cuestión práctica, otras en la teórica. Entre otras muchas instituciones están el ITAM, la UNAM, el Tecnológico de Monterrey, el CINVESTAV y el CIMAT.
Paralelamente, la ingeniería nacional está aplicando estas herramientas, pero en general los empresarios mexicanos son muy cautelosos y tienden a no arriesgarse con tecnologías de vanguardia. Primero, porque en México se diseña poco y después porque algunos empresarios prefieren comprar cosas ya probadas aunque hayan sido diseñadas con otro tipo de usuarios en mente: son consumidores, más que generadores, de tecnología.
Sería conveniente producir nuestra propia ciencia y como consecuencia nuestra propia tecnología. Solamente así podremos ser independientes. Mientras no seamos dueños de nuestra tecnología, difícilmente podemos aspirar a una verdadera independencia. Echando una ojeada a la historia, en todos los casos, las culturas hegemónicas son dueñas de la tecnología. En el siglo pasado, por ejemplo, los ingleses y en este, los americanos. Es un esfuerzo a mediano plazo. La sociedad mexicana y el grupo científico tienen que convencerse de que pueden asumir su compromiso social.
Continuará la evolución…
¿Los algoritmos genéticos van a seguir su evolución? Sin duda así ocurrirá porque son muy nuevos en una ciencia como la computación, muy joven de por sí. Los algoritmos genéticos y las redes neuronales, paradigmas inspirados ambos en analogías con la naturaleza, se han hecho posibles porque se ha abaratado la computadora. Si hace 15 años se hubiera planteado el paradigma evolutivo, éste hubiera sido prácticamente incosteable. En la medida en que las computadoras sigan evolucionando y se abaraten, este tipo de técnicas se harán aún más atractivas.
Actualmente, a un algoritmo genético aprender le toma segundos o minutos. Con las nuevas máquinas –más rápidas – aprenderá en milésimas de segundo. Y entonces tendremos algoritmos genéticos hasta en el horno de microondas; podrán, también, reconocer la voz de los dueños de la casa para abrirles la puerta. Los algoritmos genéticos permitirán que las computadoras sepan quienes son sus dueños.



Comentarios recientes
hace 3 días
hace 3 días
hace 6 días
hace 6 días
hace 3 semanas
hace 3 semanas
hace 1 mes
hace 1 mes
hace 1 mes
hace 1 mes