Cómo aumentar la posibilidad de que mi algoritmo genético alcance el verdadero óptimo global en un 99% en lugar de solo el 65% de las corridas

Dependiendo del costo computacional de la evaluación de su función, tiene dos caminos de acciones.

Evaluación costosa de la función:

El algoritmo genético descarta su evaluación de la función de todas las generaciones anteriores, que deben reutilizarse para reducir el costo computacional. El uso del metamodelo es una de las mejores opciones, donde junto con la solución óptima global, se obtendrá un mapa completo de la función como subproducto.

  • Cree un metamodelo o sustituto para su función, que su algoritmo genético pueda utilizar para la evaluación de la función.
  • Una vez que el algoritmo genético predice cualquier candidato óptimo, se evaluará mediante la evaluación original.
  • Dichos candidatos y sus respectivos valores de función se usarán para entrenar más al sustituto.
  • Por lo general, las redes neuronales artificiales supervisadas se utilizan para metamodelos, ya que el aprendizaje profundo es bastante exitoso ahora para la generalización de cualquier mapeo.

Evaluación de la función no costosa:

Definitivamente, el mismo algoritmo genético con una población más grande o un conjunto de algoritmos genéticos múltiples o una partición especializada diferente entre la población se puede usar como se menciona en otras respuestas.

La mutación es la única operación genética, que trae nuevos genes a la población. Por lo tanto, puedes jugar con la mutación para evitar la llegada rápida al local óptimo.

Después de la optimización mediante el algoritmo genético, puede optimizar aún más con la optimización de enjambre de partículas u otras variantes de cálculo evolutivo.

No convertir en marco de objetivo único:

A menudo, los problemas de optimización de objetivos múltiples se convierten en optimización de objetivo único a través de la suma del cuadrado de errores (~ norma L2). Pero, ahora la optimización multi-objetivo está funcionando bien. Además, en presencia de objetivos contradictorios, el marco de objetivo único equivalente no funcionará bien, donde el marco de objetivos múltiples proporcionará claramente el Frente de Pareto y hay contradicciones.

Intenta obtener Gradient o cualquier Variante de Gradient:

GD usa GA: si conoce el gradiente de su función, intente con el descenso de gradiente o cualquier variante de descenso de gradiente para la optimización global. La población inicial se requiere con diferentes condiciones iniciales para el descenso del gradiente. La próxima generación se obtendrá a través de operaciones genéticas en condiciones iniciales.

GA usa GD: si falla, intente el descenso de gradiente como operador de mutación del algoritmo genético para obtener el mejor punto más cercano.

Gracias por el A2A.

En pocas palabras, no puedes. No hay garantías

Imagine una función de aptitud que devuelve un uno si la entrada es exactamente pi y un cero para todos los demás números.

Es literalmente imposible para un GA hacer algo mejor que las conjeturas aleatorias en ese ejemplo. No hay nada para que el sistema funcione. No se encuentran pendientes, no hay colinas que escalar. Por lo tanto, no es posible hacer sugerencias que funcionen para todos los problemas.

Sin embargo, en el espíritu de la pregunta, hay algunas cosas para probar:

Usualmente uso alrededor del 5% ~ 10% de elitismo. Esto evita que el sistema pierda los picos que encontró por casualidad.

También puede probar un proceso de tipo de recocido simulado en el que comienza con una tasa de mutación muy grande y la reduce gradualmente a lo largo de las generaciones. Esto permite que el sistema busque en todo el espacio físico más a fondo.

También recomiendo un enfoque de ‘modelo de isla’ en el que solo permite que las personas se reproduzcan con otras cercanas (en la matriz o en el espacio genético), de lo contrario, la buena propagación con la que comienza se perderá rápidamente.

Ejecute el GA durante algunas generaciones con una población pequeña y modifique los parámetros a mano. Obtenga una idea de lo que funciona, y luego, cuando esté seguro de que los parámetros son bastante buenos, realice una carrera completa con una población más grande y muchas generaciones.

Al final del día, ajustar los parámetros es un arte negro y depende en gran medida de la naturaleza del problema, el esquema de codificación de la solución, la función de adecuación y la implementación.

Hay una forma completamente genérica de aumentar la tasa de éxito de un algoritmo probabilístico: simplemente ejecútelo varias veces. Si ejecuta su algoritmo genético 5 veces de forma independiente, la probabilidad de alcanzar un óptimo global va de 0.65 a [matemáticas] 1 – (1 – 0.65) ^ 5 \ aproximadamente 0.995 [/ matemáticas], o aproximadamente 99.5%.

Dependiendo de lo que esté haciendo exactamente, esto puede implementarse aumentando el tamaño de la población 5 veces (o 4.4 veces para acercarse al 99% sin tanto trabajo), ejecutando más generaciones, manteniendo a más individuos vivos entre generaciones y / o ejecutando múltiples poblaciones independientes al mismo tiempo. Debes jugar con estas opciones hasta que encuentres una que logre el mejor equilibrio entre velocidad y tasa de éxito.

Dependiendo de lo que esté tratando de modelar según el GA, puede hacer ajustes para aumentar la eficiencia y la probabilidad de obtener una mayor aptitud. El 99% puede ser un poco poco realista, pero no puedo decirlo con certeza sin saber más.

Puede intentar cambiar la forma en que interpreta los resultados genéticos, ya que una mejora aquí puede cambiar en gran medida la tasa de convergencia. Tendrá que pensar profundamente sobre el espacio del problema y cómo desea que GA lo explore. Lo mejor es encontrar una solución “parcial” al problema y adaptar la representación para explorar un espacio más pequeño.

No puedo darte ninguna forma general de hacer esto. Realmente depende de los aspectos más profundos de lo que está tratando de resolver / optimizar.

La respuesta de Dale es excelente; Me gustaría agregar que si su algoritmo alcanza el óptimo global en el 65% de las ejecuciones, eso es realmente genial.

Simplemente puede ejecutar el algoritmo 5 veces seguidas y usar la mejor solución a partir de eso, que producirá un rendimiento del 99.5% con un tiempo de ejecución 5 veces más lento.

También tenga en cuenta que en realidad podría ver esto como una sola ejecución de un algoritmo genético donde hay 5 poblaciones de islas que se mantienen completamente separadas. Entonces, la pregunta interesante es, ¿puede mejorar el rendimiento al permitir algunas interacciones entre las islas, pero no demasiado? Además, ¿qué pasa si mantiene constante la población pero juega con el número de islas?

Depende. Suena como un problema con la diversidad de la población y posiblemente la convergencia temprana. Pruebe algo como una población más grande, una mutación catastrófica, la migración entre poblaciones … Cualquier cosa que aumente la diversidad debería ayudarlo a alcanzar lo óptimo con mayor frecuencia y escapar de los niveles óptimos locales. También puede intentar inyectar ruido en el problema, ya que esto puede ayudar con los problemas óptimos locales en general.

Aumentar el tamaño de la población. Para resolver un problema con algoritmos genéticos, su población debe ser de cierto tamaño para resolver un problema de manera confiable.

Sin embargo, si el problema es realmente interesante, no necesita resolverlo el 99% del tiempo, o incluso el 65% del tiempo. Solo necesita encontrar una solución una vez.

Es mejor lograr el 65% de algo imposible en lugar de hacer el 99% de algo ordinario.

Evite el sobreajuste del algo en sus conjuntos de datos de prueba / entrenamiento … de lo contrario, podría fallar miserablemente en los conjuntos de datos del mundo real.

More Interesting

¿Cuál es la mejor manera de leer documentos de investigación de CS?

¿Cuáles son los proyectos más interesantes en Facebook AI Research (FAIR)?

¿Cuáles son algunos términos básicos de la computadora para el hardware y el software de la computadora?

¿Cuánta potencia informática se necesitaría para simular un mundo virtual que no se puede distinguir del mundo real?

¿Qué computadoras portátiles usan los grupos de investigación en visión artificial / AR? MacBooks o Alienwares? ¿Cuáles son las especificaciones?

Computación de alto rendimiento: ¿Cuáles son las principales diferencias en las clases de problemas que pueden acelerarse de manera efectiva utilizando GPGPU (por ejemplo, CUDA), multiprocesamiento simétrico (por ejemplo, OpenMP) y paso de mensajes (por ejemplo, MPI) respectivamente?

¿Cuáles son algunos algoritmos de alineación de secuencia?

Si todo el departamento de ciencias de la computación en una universidad se cerrara, ¿podría la mayoría de los profesores titulares conseguir trabajos como desarrolladores de software?

¿Por qué no hay investigador libre en informática?

¿Cuáles son algunas direcciones en la investigación en informática que vale la pena seguir?

¿Fue Rijndael / AES el más fuerte de los candidatos históricos de AES? ¿Por qué o por qué no?

¿Qué proyectos podría hacer en el paralelismo a nivel de hilo?

¿Se necesita conocer la arquitectura de la computadora para comenzar a aprender los sistemas operativos?

¿Cuáles son algunas aplicaciones del mundo real de tipo topológico?

¿Cómo sabemos que la investigación amigable de IA es realmente correcta / significativa?