¿Tiene sentido una optimización de enjambre de partículas posterior a un algoritmo genético?

Si, tiene sentido.

Los métodos globales necesitan especificar límites y un montón de hiperparámetros. La reparametrización y el arranque en caliente pueden ayudarlo a pulir el resultado. A partir de su evaluación del algoritmo genético, estoy un poco confundido, cuando dice “mi”, ¿se refería a su implementación?

Además, encuentro la expresión ‘alcanzarlo exactamente’ un poco confusa. ¿Cómo define exactamente en un cálculo de coma flotante? Con todas las técnicas de optimización que dependen de la operación de punto flotante, tiendo a usar ‘tolerancia’. O el resultado dentro o fuera de.

¿Cómo sabes dónde está el punto dulce global? Si lo sabe, ¿por qué no reducir la restricción de la caja?

¿Revisaste PaGMO? Un marco de optimización global basado en el método Island y le permite implementar un conjunto de métodos de optimización al mismo tiempo.

La optimización del enjambre de partículas, como se le conoce en el aprendizaje automático o la inteligencia de enjambre, ya que también se conoce no solo tiene sentido, sino que se recomienda para problemas de un determinado dominio.

Imagine un dominio de búsqueda matemática de números reales en n R (n) dimensiones. Está tratando de encontrar un punto de rendimiento óptimo en una región determinada. Los métodos analíticos no pueden comenzar a enmendar el problema que enfrenta, está analizando las lecturas de un sensor o claridad de imagen y durante la experimentación queda claro que está tratando con una ecuación que se ve así (a continuación) en n dimensiones. Digamos que está lidiando con el problema en 10 dimensiones.

[matemáticas] 10n + xi 2 −10cos 2πx ((i)) en i = 1 n ∑ [-5.12,5.12] n [/ matemáticas]

¿Me está diciendo que intentará métodos analíticos normales para encontrar el punto de rendimiento óptimo de esta ecuación? En 10 dimensiones? De hecho, seguí adelante y obtuve la matriz de Hesse y seguí y obtuve los determinantes de la matriz y obtuve los puntos óptimos (usando la primera y segunda derivadas) de algunas ecuaciones en tres dimensiones solamente y fue un proceso largo. En 10 dimensiones, llevará mucho tiempo resolverlo analíticamente.

¿Qué debería usar entonces? Los algoritmos de búsqueda de solución única no funcionarán. ¿O algoritmos de búsqueda basados ​​en gradiente? Podría haber miles de máximos (o mínimos) locales para trabajar en el dominio de búsqueda dado.

Necesita un algoritmo de búsqueda basado en la población, como la optimización del enjambre de partículas o la inteligencia del enjambre. Genera un conjunto aleatorio de soluciones de prueba, dentro de estas soluciones se encuentran los óptimos globales, cada solución de prueba tiene conocimiento del mejor punto óptimo actual en el conjunto completo de soluciones, cada solución mantiene su mejor solución y la solución de prueba actual que tiene, las partículas buscan iterativamente el óptimo global, en diferentes direcciones de la región de búsqueda.

Cada solución de prueba puede verse como una partícula y tiene un índice i, puede haber partículas NP, cada partícula compara su solución de prueba actual con su propia mejor solución y se actualiza si es necesario, cada partícula compara su mejor solución actual con la mejor solución global actual solución en el conjunto de partículas. Las comparaciones se basan en la función objetivo y el desempeño de cada solución de prueba en función de eso.

La velocidad. Esto es importante para el rendimiento correcto de este algoritmo, la primera actualización de velocidad, actualiza la información de partículas de la iteración k a la iteración k + 1, por lo general, puede verse así.

[matemáticas] Vi k + 1 = wVi k + c1U1 xlb − ik – xi k () + c2U2 xgb k – xi k () [/ matemáticas]

Luego, la información de partículas se actualiza por iteración

[matemáticas] xi k + 1 = xi k + Vi k + 1 [/ matemáticas]

La partícula que funciona mejor es la que tiene la mejor solución global actual óptima. Es mejor usar un enjambre de soluciones de prueba actualizadas de forma iterativa que buscar un punto óptimo utilizando una solución de prueba que se actualice de forma iterativa. Algoritmos de búsqueda estocásticos 🙂

Si eres un purista, puedes ejecutar el algoritmo en más de 1000 iteraciones y luego obtener el punto óptimo. Luego tome ese punto óptimo y ajústelo aplicando algoritmos de búsqueda basados ​​en gradiente. Los algoritmos estocásticos son buenos para aproximarse a un óptimo global pero son pobres para el refinamiento de gradiente, es el costo que paga como programador de IA, pero puede mitigar eso.

Muy útil.

Más eficiente para codificar también. Reduce la sobrecarga de cómputo.

No suena completamente loco. Dado que es probable que un GA proporcione un optimismo local aproximado, sugiero usar un buen descenso de gradiente a la antigua a partir de ahí si desea obtener lo mejor de lo que no es tan seguro. Pero solo haga esto para, como máximo, las tres mejores soluciones encontradas por GA, cuando no ocurra una convergencia más significativa. Y solo use el descenso de gradiente en más de una solución si los resultados son cercanos, de lo contrario, solo en la mejor. Esto, por supuesto, también depende de cuánto tiempo de computación y tiempo libre tenga y cuán importante es para usted obtener soluciones aún mejores. Entonces, si son alrededor de mil millones de dólares, entonces está justificado poner un poco de esfuerzo extra allí.

Luego otro consejo: simplemente vuelva a ejecutar su GA. Si no comienza con una semilla fija dada, obtendrá diferentes soluciones. Tal vez uno es mejor?

Buena suerte.

No es una idea loca, aunque lo más común es combinar un algoritmo genético con una técnica de búsqueda local como el descenso de gradiente, la idea es que GA fomentará la exploración para escapar de los mínimos locales, mientras que el descenso de gradiente ayudará a converger en el mínimo más cercano más rápido.