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.