¿Cuáles son los pros y los contras de los algoritmos genéticos en comparación con otros métodos de optimización global?

Estoy de acuerdo con el resumen de Ted Dunning:

La respuesta resumida es que los métodos que funcionan bien * realmente * dependen mucho de lo que pueda saber sobre la función que se está optimizando.

Sin embargo, hay más en la historia.

En primer lugar, cuando hablamos de GA, generalmente hablamos de un algoritmo lamentablemente desactualizado. Desafortunadamente para el campo de la computación evolutiva, la publicación innovadora que hizo que el público en general conociera las AG también es la única que parece haber causado una impresión. El libro de Goldberg de 1989, Algoritmos genéticos en búsqueda, optimización y aprendizaje automático, contiene un código Pascal de ejemplo para una AG simple. Esto tiene la ventaja de que cualquiera puede recogerlo y probarlo, y durante más de 25 años, lo han hecho. La gran mayoría de los tutoriales de GA en Internet implementan el GA simple, al igual que muchas personas que trabajan con la optimización convexa y desean comparar sus métodos con una búsqueda heurística de referencia. Lamentablemente, la AG del libro de Goldberg es obsoleta en casi todos los sentidos e inútil para la mayoría de los problemas del mundo real. Su representación binaria no es adecuada para decisiones de valor real, y para decisiones enteras, su enfoque de recombinación es superado por cualquier número de modelos probabilísticos que construyen GA que hacen un mejor trabajo al manejar las interacciones.

El otro problema al comparar las AG con otros enfoques para la optimización global es que la herramienta adecuada también depende del contexto de toma de decisiones. Las técnicas de optimización convexa asumen una relación funcional entre decisiones y objetivos, mientras que los GA son fáciles de conectar a un modelo de simulación de caja negra. Expresar un problema en una forma que pueda optimizarse con la optimización convexa puede resultar en una convergencia más rápida, pero puede requerir mucho trabajo formular el problema de optimización convexa en primer lugar. Si este es un problema que va a resolver una y otra vez, especialmente si es parte de un sistema más grande y desea que se ejecute sin supervisión, puede valer la pena hacerlo. Pero si está optimizando un problema por primera vez, uno que no está bien formado, y solo desea tener una idea de qué tipo de soluciones son posibles, un GA le brindará un gran servicio.

Los algoritmos que aprovechan la estructura de la función que se está optimizando siempre tendrán algunas ventajas. Por lo tanto, si tiene una función convexa, los optimizadores convexos ganarán más algoritmos generales. Del mismo modo, si los óptimos de una función más general se ven obligados a ubicarse en un espacio más simple que el dominio de la función general, un optimizador que descubre esta estructura (correctamente) mostrará beneficios.

Como indica la respuesta de Roman, los algoritmos genéticos genéricos asumen específicamente dominios discretos y funcionan mal en dominios continuos donde otros optimizadores pueden comprender la estructura en las representaciones bit a bit.

Muchos de los conceptos de optimizadores de propósito especial pueden adoptarse en la categoría más general de optimización evolutiva. Mi propio trabajo antiguo sobre la optimización de pasos grabados ([0803.3838] Mutación direccional de pasos grabados para una convergencia más rápida, imagen en acción http://bit.ly/recorded-step-example ) hizo exactamente esto y puede ampliarse para mantener vivos varios pasos para un concepto más complejo de estructura local.

Del mismo modo, los optimizadores de Adagrad tienden a asumir cierto nivel de factorizabilidad en el espacio del problema. Este supuesto está codificado en la tasa de aprendizaje por coeficiente que hace que estos métodos sean tan efectivos. Este mismo concepto se puede usar fácilmente en métodos evolutivos mediante el uso de tasas de mutación por dimensión.

Existen muchos métodos que comienzan con métodos especiales no convexos y luego pasan a optimizadores convexos, ya que el problema parece estar llegando a una solución. Esa estrategia no es tan común como lo fue hace unos años.

También puedes combinar diferentes campos. Por ejemplo, podría mezclar bastante razonablemente Bayesian Bandits (Sorpresa y coincidencia, reflexiones de la larga cola) con algoritmos evolutivos que seleccionan la parametrización de un problema y resuelven el problema en estas representaciones alternativas. La función de la parte bayesiana es agregar cantidades de ruido basadas en principios a las funciones de adecuación de cada solución para mantener la diversidad en el espacio de la solución hasta que sea razonable comprometerse con vecindarios particulares. Esencialmente, esto se convierte en una forma de recocido simulado en capas sobre algoritmos evolutivos.

La respuesta resumida es que los métodos que funcionan bien * realmente * dependen mucho de lo que pueda saber sobre la función que se está optimizando.

Los algoritmos genéticos son más adecuados para la optimización de vectores de factores. Si intenta optimizar un vector de variables continuas, enfrentará una tremenda pérdida de rendimiento (hablando de versiones básicas del algoritmo).
La complejidad de la codificación es prácticamente la misma cuando se compara el Descenso de gradiente, el Recocido simulado y los algoritmos genéticos básicos, y puede implementarlos muy rápidamente (lo hice como una tarea en mi universidad y me llevó aproximadamente media hora).

En cuanto a la disponibilidad de bibliotecas externas, todas se pueden encontrar en GitHub, no hay ningún problema aquí.

More Interesting

¿Cuáles son los principales rasgos necesarios para tener éxito con Big Data?

¿Puedo solicitar puestos de trabajo en Data Science si he aprendido el campo con MOOC?

¿Cuál es la diferencia entre la recuperación de información y la minería de datos? ¿Cómo se relacionan los grandes datos con estas dos técnicas diferentes?

¿Cómo es ser un pasante de ciencia de datos en Instagram?

¿La computación cognitiva y los sistemas como IBM Watson reemplazarán a los científicos de datos en los próximos 5 años? Si no, ¿en qué casos un ser humano puede sobresalir y Watson no?

¿Qué papel debería elegir / jugar, si quiero trabajar en Big Data Analytics / Machine Learning?

¿Les resulta fácil a los físicos trabajar como científicos de datos?

Si mi interés principal son las series temporales, ¿debería enfocar mi energía en aprender Python o R?

¿En qué se diferencian la investigación de operaciones y la gestión de la cadena de suministro (bajo ingeniería industrial) del análisis de datos?

¿Qué es una tubería de análisis de datos?

¿Cuál es la relación entre NumPy, SciPy, Pandas y Scikit-learn y cuándo debo usar cada uno de ellos?

¿Qué programación es beneficiosa para los científicos de datos?

¿Cuáles son las herramientas más útiles para aprender sobre análisis de datos e informes?

Si encripta un SSD sin primero borrar de manera segura los datos antiguos, luego llénelos con datos encriptados, ¿podrían los datos no encriptados aún ser recuperables?

¿Cómo obtener datos reales para la investigación de seguridad cibernética?