Encontrar a un mínimo global de un delimitada convexa no función suave,, 2D que es costoso para evaluar


17

Tengo un no-convexa función 2-D acotada, que me gustaría encontrar el mínimo de. La función es bastante suave. Evaluar es costoso. Un error aceptable es de aproximadamente 3% del dominio de la función en cada eje.

He intentado ejecutar la implementación del algoritmo DIRECTO en la biblioteca NLOPT, pero no se dio una mejora considerable sobre búsqueda de fuerza bruta en términos de la cantidad de evaluaciones de funciones necesarias para la precisión requerida y había algunos valores atípicos.

¿Qué otros solucionadores de optimización global debería tener en cuenta?


¿Puedes calcular gradientes o necesitarías aproximarlos por cocientes de diferencia?
Arnold Neumaier

Necesito aproximarlos por cocientes de diferencia.
Víctor de mayo de

En este caso, el método de Newton no se puede recomendar, como segundas derivadas numéricas son numéricamente muy inestable y difícil de ajustar para trabajar con seguridad.
Arnold Neumaier

@Victor de mayo, lo que acabaste con? (Si pudieras publicar una función similar a la tuya, eso realmente ayudaría a las personas a comparar y ajustar diferentes algoritmos.)
denis

@Denis, estaba tratando de obtener más velocidad de un algoritmo para rastrear un objeto en video. La salida del algoritmo era una estimación de probabilidad para cada ubicación de la imagen para contener el objeto de seguimiento. La imagen que contiene estas estimaciones de probabilidad es la función que estaba tratando de optimizar. Terminé con fuerza bruta en varios pasos de resolución. Para obtener más información sobre el algoritmo de seguimiento en cuestión, lea el documento "Seguimiento basado en fragmentos robustos utilizando el histograma integral".
Victor mayo

Respuestas:


12

Me gustaría sugerir un enfoque algo diferente en comparación con las otras respuestas, aunque @barron ha discutido indirectamente a la misma cosa.

En lugar de optimizar su función directamente, es decir, al evaluarla en una serie de puntos puntos que (con suerte) convergen a un óptimo (local), podría usar el concepto de modelado sustituto , que es muy adecuado para problemas del tipo que describe (alto costo, suave, acotado, de baja dimensión, es decir, menos de 20 incógnitas).X1,X2,...,Xkmodelado sustituto

Específicamente, el modelado sustituto funciona mediante el establecimiento de una función de modelo de de su verdadera función f R dR . La clave es que, si bien c, por supuesto, no representa perfectamente a f , es mucho más barato evaluarlo.CRreRFRreRCF

Entonces, un proceso de optimización típico sería el siguiente:

  1. Evalúe en un conjunto de j puntos iniciales x 1 , x 2 , ... , x j . Tenga en cuenta que los derivados no son necesarios. También tenga en cuenta que estos puntos deben distribuirse de manera uniforme en todo el espacio de búsqueda, por ejemplo, mediante Latin Hypercube Sampling o un diseño similar que llene espacios.FjX1,X2,...,Xj
  2. En base a este conjunto de datos original, cree una función de modelo . Se podría utilizar la validación cruzada para validar su modelo (es decir, utilizar sólo un subconjunto de los originales j puntos para crear c y, a continuación, utilizar el resto del conjunto de datos para comprobar qué tan bien c predice esos valores)CjCC
  3. Utilice un criterio como el criterio de Mejora esperada (EI) para averiguar dónde "rellenar" más muestras para hacer que más preciso mediante el muestreo de f . En realidad, esto está mucho mejor estudiado teóricamente de lo que parece, y el criterio de la IE está muy bien investigado. El criterio EI tampoco es un criterio codicioso, por lo que ambos obtienen una buena mejora general de la precisión del modelo, al tiempo que priorizan la precisión cerca de los óptimos potenciales.CF
  4. Si el modelo no es suficientemente preciso, repita el paso 3, de lo contrario usar su rutina de optimización preferido para encontrar el óptimo de , que será muy barato para evaluar (lo que podría utilizar cualquier rutina que desea, otros aún que requiere derivados, o simplemente evaluar la función en una malla fina).C

En general, esto es lo que se entiende por EGO, Efficient Global Optimization, como sugirió @barron. Me gustaría enfatizar que para su aplicación, esto parece perfectamente adecuado: obtiene un modelo sorprendentemente preciso basado en relativamente pocas evaluaciones de , y luego puede usar el algoritmo de optimización que desee. Lo que a menudo también interesante es que ahora se puede evaluar C en una malla y la trama de ella, obteniendo con ello una idea de la apariencia general de f . Otro punto interesante es que la mayoría de las técnicas de modelado sustituto también proporcionan estimaciones estadísticas de error, lo que permite la estimación de la incertidumbre.FCF

Cómo construir es, por supuesto, una cuestión abierta, pero a menudo se utilizan los llamados modelos de mapeo espacial o Kriging.C

Por supuesto, todo esto es un poco de trabajo de codificación, pero mucha otra gente ha hecho muy buenas implementaciones. En Matlab, solo conozco la caja de herramientas del software DACE DACE es gratis. TOMLAB también podría ofrecer un paquete de Matlab, pero cuesta dinero; sin embargo, creo que también funciona en C ++ y tiene muchas más capacidades que las que tendrá DACE. (Nota: Soy uno de los desarrolladores de la nueva versión de DACE, que pronto se lanzará, que ofrecerá soporte adicional para EGO).

Espero que esta descripción general te haya ayudado, por favor haz preguntas si hay puntos que se pueden aclarar más o cosas que me he perdido, o si deseas más material sobre el tema.


Fwiw, el modelo sustituto de Google presenta un Laboratorio de modelado sustituto en la Universidad de Gante y un libro Diseño de ingeniería a través del modelado sustituto , 2008 228p 0470770791. Un problema con cualquier enfoque muy general es que pronto tendrá un fregadero de cocina lleno de variantes de métodos, más que las funciones de prueba reales .
denis


3

Para una función suave, el método eficiente optimización global debe realizar bastante bien y sea dramáticamente más eficiente que DIRECTO. Las implementaciones están disponibles en TOMLAB (no lo he usado yo mismo) y DAKOTA (con el que he tenido éxito).


1

Como la función es fluida, el método de Newton será el método más abrumadoramente eficiente para encontrar un mínimo. Dado que la función no es convexa, deberá aplicar los trucos habituales para hacer que el método de Newton converja (modificación de Levenberg-Marquardt, búsqueda de línea o región de confianza para globalizar). Si no puede obtener derivados de su función, intente calcularla a través de diferencias finitas o usar una actualización BFGS. Si sospecha que el problema tiene más de un mínimo local, uno simplemente comenzaría el método de Newton a partir de un grupo de puntos elegidos al azar o no elegidos al azar y vería dónde convergen.


Mi problema sí tiene mínimos locales. ¿Qué métodos hay para elegir los puntos de partida?
Víctor mayo

1
A menos que sepa algo sobre el problema, el muestreo estadístico es esencialmente su única opción.
Wolfgang Bangerth

@Wolfgang: Alguna idea de cómo se acercan a "muestreo estadístico"? Solo trata de 10, 100, ... conjeturas iniciales aleatorias? ¿Existen enfoques "más rigurosos"? Pregunto porque tengo más o menos un problema similar (ver scicomp.stackexchange.com/q/4708/1789 )
André

Todo depende de lo que sepa sobre la función. Si conoces algo así como una "escala de longitud típica" para su función que le daría una indicación de cuán lejos locales extremos se separarían. Esto también le dará una indicación de cuántos puntos puede que tenga que empezar, y lo lejos que se debe elegir una de la otra.
Wolfgang Bangerth

0

Debido a que sus evaluaciones son caros, lo que necesita para tomar ventaja de ejecutar evaluaciones de la función sevaral en paralelo.

Te recomendaría que eches un vistazo a este código . La matemática detrás se describe aquí .


1
es este código y el artículo escrito por usted? Si es así, se puede decir explícitamente lo que en su respuesta? También, en este momento, se puede mejorar la respuesta al proporcionar una descripción de su sugerencia.
nicoguaro
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.