Durante los primeros años de la
Inteligencia Artificial (casi podríamos decir, incluso, que durante las primeras décadas) se intentaron diversas técnicas, estrategias y algoritmos, muy diferentes entre si, pero que buscaban encontrar la manera de crear esa inteligencia en las máquinas.
A día de hoy, la resurgida inteligencia artificial se enfoca mucho en el Machine Learning y este, a su vez, en los enfoques conexionistas (redes neuronales, con frecuencia ampliadas con el enfoque de Deep Learning), estadísticos o de tratamiento del lenguaje natural.
Parecen olvidados conceptos, entonces dominantes como, son la representación del conocimiento (ligada a la inteligencia artificial de orientación simbólica), los sistemas expertos (elicitación de las reglas que usan los expertos humanos para resolver problemas complejos y aplicación de esas reglas mediante un motor de inferencia), la lógica difusa ('fuzzy logic') álgebra que maneja etiquetas cualitativas, en lugar de números o valores claros de verdadero / falso)… y de lo que en este artículo hablamos: los algoritmos genéticos.
¿Qué son los algoritmos genéticos?
Debo confesar que nunca los he llegado a estudiar en profundidad, quizá porque es un enfoque que nunca estuvo del todo de moda y, probablemente, porque nunca ha obtenido grandes éxitos, al menos a nivel comercial. En cualquier caso, sí puedo decir que los algoritmos genéticos son un tipo de algoritmos que enfocan la resolución de problemas mediante una estrategia inspirada en la genética y la selección natural.
Con esa idea, lo que hacen los algoritmos genéticos es buscar la solución a un problema generando 'mutaciones', es decir, pequeños cambios más o menos aleatorios en la soluciones posibles, y comprobando si las nuevas soluciones o el nuevo algoritmo mutado, es mejor que lo teníamos antes. Si es así, 'sobrevive' y la mutación permanece; y si no es así 'perece'
Cabe entender que los algoritmos genéticos pueden encontrar su aplicación en problemas muy complejos para los cuales somos incapaces de encontrar reglas claras sobre cómo resolverlos con lo que, de alguna forma, aplicamos una especie de 'ensayo y error' hasta acertar o, al menos, encontrar una solución satisfactoria. También cabe pensar, o al menos yo así lo entiendo, que los algoritmos genéticos son más bien una filosofía para enfocar la resolución de problemas pero que, en realidad, pueden caber dentro de esta etiqueta, una multiplicidad de algoritmos.
Sea como sea, la idea de los algoritmos genéticos tiene, al menos, 30 años y, aunque parecen haber encontrado algunos campos de aplicación, lo cierto es que nunca han alcanzado 'la fama', nunca parece haberse convertido en una tecnología 'mainstream', que se dice.
Personalmente, hace mucho que no encontraba referencia a ellos, a pesar de leer abundante literatura en tecnologías relacionadas con la inteligencia artificial o, incluso, plenamente dedicadas a ella.
Y sin embargo...
Y sin embargo, en el espacio de poco más de un mes, me he encontrado dos referencias a los algoritmos genéticos. En un caso los he visto mencionados como una de las posibles técnicas de 'soft computing' a utilizar en OCR (Optical Character Recognition). En efecto, en el libro '
Optical Character Recognition Systems for Different Languages with Soft Computing' de
Arindam Chaudhuri, Krupa Mandaviya, Pratixa Badelia y Soumya K Ghosh, se menciona a los algoritmos genéticos usados como mecanismo de extracción de características.
¿Es esto casual? ¿No son más que aplicaciones residuales de los algoritmos genéticos que, por azar, han llegado hasta mi de forma concurrente o hay algo más?
¿Es que los algoritmos genéticos se han perfeccionado o se ven beneficiados por el aumento de la capacidad de computación?
¿Están hallando nuevas aplicaciones o métodos? ¿Son más eficaces? O, de nuevo, estamos sólo ante una coincidencia.
¿Asistimos, en fin, al retorno de los algoritmos genéticos? ¿O es que nunca se fueron del todo?
Por si acaso, desde ya, activo las 'antenitas' de detección de tendencias...