Optimización cuando la función de costo es lenta para evaluar

59

El descenso de gradiente y muchos otros métodos son útiles para encontrar mínimos locales en las funciones de costos. Pueden ser eficientes cuando la función de costo se puede evaluar rápidamente en cada punto, ya sea numérica o analíticamente.

Tengo lo que me parece una situación inusual. Cada evaluación de mi función de costos es costosa. Estoy tratando de encontrar un conjunto de parámetros que minimicen una superficie 3D contra las superficies de verdad del suelo. Cada vez que cambio un parámetro, necesito ejecutar el algoritmo contra toda la cohorte de muestra para medir su efecto. Para calcular un gradiente, necesito cambiar los 15 parámetros de forma independiente, lo que significa que tengo que regenerar todas las superficies y compararlas con la cohorte de muestra demasiadas veces por gradiente, y definitivamente demasiadas veces en el transcurso de la optimización.

He desarrollado un método para sortear este problema y actualmente lo estoy evaluando, pero me sorprende que no haya encontrado mucho en la literatura sobre las costosas evaluaciones de la función de costos. Esto me hace preguntarme si estoy haciendo que el problema sea más difícil de lo que es y que podría haber una mejor manera ya disponible.

Entonces, mis preguntas son básicamente las siguientes: ¿Alguien sabe de métodos para optimizar las funciones de costos, convexas o no, cuando la evaluación es lenta? O, ¿estoy haciendo algo tonto en primer lugar al volver a ejecutar el algoritmo y compararlo con la muestra de cohorte tantas veces?

Jared Becksfort
fuente
55
¿Has oído hablar del descenso de gradiente estocástico? Para redes neuronales profundas aplicadas a grandes conjuntos de entrenamiento, tiene un problema similar (pero puede evaluar el gradiente analíticamente) y la solución estándar es hacer un descenso de gradiente basado solo en una sola muestra (estocástica) frente a toda la cohorte (lote)
seanv507
3
Solo estoy vagamente familiarizado con el área, por lo tanto, esto es un comentario en lugar de una respuesta. Pero lo que está discutiendo se parece mucho al tema de la cuantificación de la incertidumbre, a menudo enfrentado por ingenieros, donde una sola evaluación de la función objetivo llevó semanas para evaluar (al menos en los problemas que enfrentan mis compañeros de ingeniería). Mi comprensión muy limitada de cómo se maneja esto es al hacer una aproximación sustituta que es mucho más fácil de evaluar en base a evaluaciones pasadas y modelos de ingeniería más simples y luego usar estos modelos sustitutos para elegir la próxima evaluación ...
Cliff AB
2
... de la función objetivo más cara. Odio decirlo, pero no sé más sobre el tema en este momento; Solo me han dicho brevemente sobre esto mientras discutía temas de investigación con dichos ingenieros. Curiosamente, parece un área de investigación muy desafiante: creo que los buenos modelos requieren una buena comprensión de la física y las estadísticas.
Cliff AB
1
@ seanv507 Sí, gracias, pero lo evité por un motivo similar. Se tarda entre 30 segundos y un minuto en procesar una muestra. Si tengo 15 parámetros, estoy mirando casi 8 minutos por cálculo de gradiente, incluso si solo uso una muestra. Si el espacio es grande, puede llevar mucho tiempo. Corrígeme si tienes otras ideas en mente.
Jared Becksfort
55
"lo que me parece una situación inusual. Cada evaluación de mi función de costos es costosa". Esta no es en absoluto una situación inusual, en general. Se muestra por todas partes, por ejemplo, cuando su función de costo proviene de ejecutar una simulación (por ejemplo, en este documento: white.ucc.asn.au/publications/White2015PsoTransistorSizing.pdf simulamos un circuito en SPICE que toma 10 segundos ). Más abordo, en ciencias experimentales, las evaluaciones pueden llevar años. Uno de mis amigos del proyecto Masters básicamente está optimizando 5 parámetros para encontrar la mejor manera de insertar ADN. Cada evaluación toma 24 horas.
Lyndon White

Respuestas:

59

TL; DR

Recomiendo usar LIPO. Es demostrablemente correcto y probablemente mejor que la búsqueda aleatoria pura (PRS). También es extremadamente simple de implementar y no tiene hiperparámetros. No he realizado un análisis que compare LIPO con BO, pero mi expectativa es que la simplicidad y eficiencia de LIPO implica que superará a BO.

(Ver también: ¿Cuáles son algunas de las desventajas de la optimización de hiperparámetros bayesianos? )

Optimización Bayesiana

Los métodos de optimización bayesiana crean modelos sustitutos de procesos gaussianos para explorar el espacio de parámetros. La idea principal es que las tuplas de parámetros que están más juntas tendrán valores de función similares, por lo que la suposición de una estructura de covarianza entre puntos permite al algoritmo hacer conjeturas educadas sobre cuál es la mejor tupla de parámetros que vale la pena probar a continuación. Esta estrategia ayuda a reducir el número de evaluaciones de funciones; de hecho, la motivación de los métodos BO es mantener el número de evaluaciones de funciones lo más bajo posible mientras se "usa todo el búfalo" para hacer buenas suposiciones sobre qué punto probar a continuación. Existen diferentes cifras de mérito (mejora esperada, mejora cuantil esperada, probabilidad de mejora ...) que se utilizan para comparar los puntos a visitar a continuación.

Compare esto con algo así como una búsqueda de cuadrícula, que nunca usará ninguna información de sus evaluaciones de funciones anteriores para informar a dónde ir después.

Por cierto, esta también es una poderosa técnica de optimización global , y como tal no hace suposiciones sobre la convexidad de la superficie. Además, si la función es estocástica (por ejemplo, las evaluaciones tienen un ruido aleatorio inherente), esto puede explicarse directamente en el modelo GP.

Por otro lado, tendrá que ajustar al menos un GP en cada iteración (o varias, eligiendo el "mejor", o promediando las alternativas, o métodos completamente bayesianos). Luego, el modelo se usa para hacer (probablemente miles) de predicciones, generalmente en forma de optimización local de varios pasos, con la observación de que es mucho más barato evaluar la función de predicción GP que la función bajo optimización. Pero incluso con esta sobrecarga computacional, tiende a darse el caso de que incluso las funciones no convexas se pueden optimizar con un número relativamente pequeño de llamadas a funciones.

Un artículo ampliamente citado sobre el tema es Jones et al. , "Optimización global eficiente de costosas funciones de caja negra". Pero hay muchas variaciones en esta idea.

Búsqueda aleatoria

Incluso cuando la función de costo es costosa de evaluar, la búsqueda aleatoria puede ser útil. La búsqueda aleatoria es muy simple de implementar. La única opción que debe tomar un investigador es establecer la probabilidad que desee que sus resultados se encuentren en un cuantil ; el resto procede automáticamente usando resultados de probabilidad básica.qp q

Suponga que su cuantil es y desea una probabilidad de que los resultados del modelo se encuentren en el top por ciento de todas las tuplas de hiperparámetros. La probabilidad de que todas las tuplas intentadas no estén en esa ventana es (porque se eligen independientemente al azar de la misma distribución), por lo que la probabilidad de que al menos una tupla esté en esa región es . Poniendo todo junto, tenemosp = 0.95 100 × ( 1 - q ) = 5 n q n = 0.95 n 1 - 0.95 nq=0.95p=0.95100×(1q)=5nqn=0.95n10.95n

1qnpnlog(1p)log(q)

que en nuestro caso específico produce .n59

Este resultado es la razón por la cual la mayoría de las personas recomiendan intentos de tuplas para la búsqueda aleatoria. Vale la pena señalar que es comparable al número de experimentos necesarios para obtener buenos resultados con los métodos basados ​​en el Proceso Gaussiano cuando hay un número moderado de parámetros. A diferencia de los procesos gaussianos, el número de tuplas de consultas no cambia con el número de hiperparámetros para buscar; de hecho, para una gran cantidad de hiperparámetros, un método gaussiano basado en procesos puede tomar muchas iteraciones para avanzar.n = 60n=60n=60

Dado que tiene una garantía probabilística de cuán buenos son los resultados, puede ser una herramienta persuasiva para convencer a su jefe de que no es necesario realizar más experimentos.

LIPO y sus variantes

Esta es una llegada emocionante que, si no es nueva , ciertamente es nueva para mí. Continúa alternando entre colocar límites informados en la función y muestrear desde el mejor límite, y usar aproximaciones cuadráticas. Todavía estoy trabajando en todos los detalles, pero creo que esto es muy prometedor. Este es un buen artículo escrito en un blog , y el documento es Cédric Malherbe y Nicolas Vayatis " Optimización global de las funciones de Lipschitz ".

Reinstalar a Mónica
fuente
1
¡Esto parece una variante moderna de los métodos de superficie de respuesta!
kjetil b halvorsen
1
En realidad, la búsqueda aleatoria puede funcionar notablemente bien: argmin.net/2016/06/20/hypertuning
Tim
1
@Tim Sí, su punto está bien tomado. No quería "decidir" cuál es el mejor tema en esta publicación, ya que hay esencialmente infinitas permutaciones en BO, cada una de las cuales afirma ser el "mejor" optimizador de caja negra, lo que hace que sea imposible ser definitivo. Estoy de acuerdo en que la búsqueda aleatoria puede funcionar bastante bien, pero en realidad recomendaría LIPO sobre PRS. LIPO es probablemente correcto y supera ampliamente a PRS (en promedio) en todos mis experimentos. LIPO también tiene un costo de estimación mínimo: si puede minimizar un QP, entonces puede usar LIPO, y LIPO tiene cero hiperparámetros (en contraste con BO).
Vuelva a instalar Mónica
Me alegro de haber revisado esta pregunta nuevamente. LIPO parece genial.
Jared Becksfort
LIPO es genial. Cuando tenga un momento, ampliaré mi respuesta para dar una mejor contabilidad de LIPO.
Restablece a Mónica el
40

La literatura sobre la evaluación de la costosa función de recuadro negro es bastante amplia y generalmente se basa en métodos de modelos sustitutos, como señalaron otras personas. El cuadro negro aquí significa que se sabe poco acerca de la función subyacente, lo único que puede hacer es evaluar en un punto elegido (los gradientes generalmente no están disponibles).xf(x)x

Yo diría que el estándar de oro actual para la evaluación de la función de caja negra (muy) costosa es la optimización bayesiana (BO) (global ). Sycorax ya describió algunas características de BO, así que solo estoy agregando información que podría ser útil.

Como punto de partida, es posible que desee leer este documento general 1 . También hay uno más reciente [2].

La optimización bayesiana ha crecido constantemente como un campo en los últimos años, con una serie de talleres dedicados (por ejemplo, BayesOpt , y mira estos videos del taller de Sheffield sobre BO), ya que tiene aplicaciones muy prácticas en el aprendizaje automático, como para optimizar los hiperparámetros de los algoritmos de ML: consulte, por ejemplo, este documento [3] y la caja de herramientas relacionada, SpearMint . Hay muchos otros paquetes en varios idiomas que implementan varios tipos de algoritmos de optimización bayesianos.

Como mencioné, el requisito subyacente es que cada evaluación de la función es muy costosa, por lo que los cálculos relacionados con BO agregan una sobrecarga insignificante. Para dar un estadio, BO puede ser definitivamente útil si su función se evalúa en un tiempo del orden de minutos o más. También puede aplicarlo para cálculos más rápidos (por ejemplo, decenas de segundos), pero dependiendo del algoritmo que use, puede que tenga que adoptar varias aproximaciones. Si su función se evalúa en la escala de tiempo de segundos , creo que está alcanzando los límites de la investigación actual y quizás otros métodos podrían ser más útiles. Además, tengo que decir que BO rara vez es realmente un recuadro negro y a menudo tienes que ajustar los algoritmos, a veces mucho , para que funcione a pleno potencial con un problema específico del mundo real.

BO aparte, para una revisión de los métodos generales de optimización sin derivación, puede echar un vistazo a esta revisión [4] y buscar algoritmos que tengan buenas propiedades de convergencia rápida. Por ejemplo, la búsqueda de coordenadas multinivel (MCS) generalmente converge muy rápidamente a un mínimo de vecindad (no siempre el mínimo global, por supuesto). MCS está pensado para la optimización global, pero puede hacerlo local estableciendo restricciones de límite apropiadas.

Finalmente, está interesado en BO para funciones de destino que son costosas y ruidosas , vea mi respuesta a esta pregunta .


Referencias

1 Brochu et al., "Un tutorial sobre optimización bayesiana de funciones de costos costosos, con aplicación al modelado de usuarios activos y aprendizaje jerárquico de refuerzo" (2010).

[2] Shahriari et al., "Sacando al ser humano del círculo: una revisión de la optimización bayesiana" (2015).

[3] Snoek et al., "Optimización práctica bayesiana de algoritmos de aprendizaje automático", NIPS (2012).

[4] Rios y Sahinidis, "Optimización libre de derivados: una revisión de algoritmos y comparación de implementaciones de software", Journal of Global Optimization (2013).

lacerbi
fuente
44
+1 Esta es una gran respuesta. En particular, estos documentos son una gran adición a este hilo; de hecho, no sabía que el método general que describí se llama Optimización Bayesiana. Pero me preocupa que los enlaces puedan fallar con el tiempo. ¿Le importaría agregar información de citas más completa para que los futuros usuarios puedan acceder a estos documentos?
Reinstale a Monica
Los documentos de optimización bayesianos son bastante útiles. Gracias por responder.
Jared Becksfort 01 de
1
@ user777: Buen punto. Se agregó una lista de referencia explícita al final que debería ser suficiente para recuperar los documentos.
lacerbi
6

Yo mismo no conozco los algoritmos, pero creo que el tipo de algoritmo de optimización que está buscando es la optimización sin derivación , que se utiliza cuando el objetivo es costoso o ruidoso .

Por ejemplo, eche un vistazo a este documento (Björkman, M. & Holmström, K. "Optimización global de costosas funciones no convexas utilizando funciones de base radial". Optimización e ingeniería (2000) 1: 373. doi: 10.1023 / A: 1011584207202) cuyo resumen parece indicar que esto es exactamente lo que quieres:

El documento considera la optimización global de funciones objetivas costosas, es decir, el problema de encontrar el mínimo global cuando hay varios mínimos locales y cada valor de función requiere un tiempo considerable de CPU para computar. Tales problemas a menudo surgen en aplicaciones industriales y financieras, donde el valor de una función podría ser el resultado de una simulación u optimización de computadora que consume mucho tiempo. Los derivados son a menudo difíciles de obtener, y los algoritmos presentados no hacen uso de dicha información.

Mehrdad
fuente
2
Incluya información completa de citas para los documentos vinculados y otros recursos. Queremos construir un repositorio de información duradero, y los enlaces tienden a fallar con el tiempo.
Restablece a Monica
Björkman, M. y Holmström, K. "Optimización global de costosas funciones no convexas utilizando funciones de base radial". Optimization and Engineering (2000) 1: 373. doi: 10.1023 / A: 1011584207202
jkdev
4

No estas solo.

Los sistemas costosos de evaluar son muy comunes en ingeniería, como los modelos de método de elementos finitos (FEM) y los modelos de dinámica de fluidos computacional (CFD). La optimización de estos modelos computacionalmente caros es muy necesaria y desafiante porque los algoritmos evolutivos a menudo necesitan decenas de miles de evaluaciones del problema, lo que no es una opción para problemas costosos de evaluar. Afortunadamente, hay muchos métodos (algoritmos) disponibles para resolver este problema. Hasta donde yo sé, la mayoría de ellos se basan en modelos sustitutos (metamodelos). Algunos se enumeran a continuación.

  • Optimización global eficiente (EGO) [1]. El algoritmo EGO se ha mencionado anteriormente y puede ser el algoritmo de optimización basado en sustitutos más famoso. Se basa en el modelo de Kriging y en un criterio de relleno llamado función de mejora esperada (IE). Los paquetes R que incluyen el algoritmo EGO son DiceOptim y DiceKriging.
  • Método de muestreo de búsqueda de modo (MPS) [2]. El algoritmo MPS se basa en el modelo RBF y se utiliza una estrategia de muestreo adaptativo para recoger los puntos candidatos. El código MATLAB es publicado por los autores en http://www.sfu.ca/~gwa5/software.html . El algoritmo MPS puede necesitar más evaluaciones para obtener el óptimo, pero puede manejar problemas más complicados que el algoritmo EGO desde mi experiencia personal.
  • Conjunto de modelos sustitutos de Juliane Müller [3]. Ella utilizó múltiples sustitutos para mejorar la capacidad de búsqueda. La caja de herramientas MATLAB MATSuMoTo está disponible en https://github.com/Piiloblondie/MATSuMoTo .

En resumen, estos algoritmos de optimización basados ​​en sustitutos intentan encontrar el óptimo global del problema utilizando la menor cantidad de evaluaciones posible. Esto se logra haciendo un uso completo de la información que proporciona el sustituto (sustitutos). Las revisiones sobre la optimización de problemas computacionalmente caros se encuentran en [4-6].


Referencia:

  1. DR Jones, M. Schonlau y WJ Welch, "Optimización global eficiente de costosas funciones de caja negra", Journal of Global Optimization, vol. 13, págs. 455-492, 1998.
  2. L. Wang, S. Shan y GG Wang, "Método de muestreo de búsqueda de modo para la optimización global en funciones costosas de caja negra", Engineering Optimization, vol. 36, págs. 419-438, 2004.
  3. J. Müller, "Algoritmos de modelo sustituto para problemas de optimización global de caja negra computacionalmente caros", Universidad Tecnológica de Tampere, 2012.
  4. GG Wang y S. Shan, "Revisión de técnicas de metamodelado en apoyo de la optimización del diseño de ingeniería", Journal of Mechanical Design, vol. 129, págs. 370-380, 2007.
  5. AI Forrester y AJ Keane, "Avances recientes en la optimización basada en sustitutos", Progress in Aerospace Sciences, vol. 45, págs. 50-79, 2009.
  6. FAC Viana, TW Simpson, V. Balabanov y V. Toropov, "Metamodelado en la optimización del diseño multidisciplinario: ¿hasta dónde hemos llegado realmente?", AIAA Journal, vol. 52, págs. 670-690, 2014/04/01 2014.
Zhan Dawei
fuente
3

Las dos estrategias simples que he usado con éxito en el pasado son:

  1. Si es posible, intente encontrar una función sustituta más simple que se aproxime a su evaluación de la función de costo total, un modelo analítico típico que reemplaza una simulación. Optimiza esta función más simple. Luego, valide y ajuste la solución resultante con su función de costo exacta.
  2. Si es posible, intente encontrar una manera de evaluar una función exacta de "costo delta", exacta en lugar de ser una aproximación al uso del gradiente. Es decir, desde un punto inicial de 15 dimensiones para el que tiene el costo total evaluado, encuentre una manera de deducir cómo cambiaría el costo al hacer un pequeño cambio en uno (o varios) de los 15 componentes de su punto actual. Tendría que explotar las propiedades de localización de una pequeña perturbación, en su caso particular, y probablemente necesitaría definir, almacenar en caché y actualizar una variable de estado interno en el camino.

Esas estrategias son muy específicas para cada caso, no sé si pueden ser aplicables en su caso o no, lo siento si no lo son. Ambos podrían ser aplicables (como lo fue en mis casos de uso): aplique la estrategia de "costo delta" a un modelo analítico más simple: el rendimiento puede mejorar en varios órdenes de magnitud.

Otra estrategia sería utilizar un método de segundo orden que normalmente tiende a reducir el número de iteraciones (pero cada iteración es más compleja), por ejemplo, el algoritmo Levenberg-Marquardt . Pero teniendo en cuenta que no parece tener una forma de evaluar el gradiente de manera directa y eficiente, probablemente esta no sea una opción viable en este caso.

Patricio
fuente
3

Como otras personas mencionaron, un modelo sustituto (también llamado superficie de respuesta) es un enfoque poderoso. En mi opinión, una cosa crucial que la gente olvida es que puede realizar varias evaluaciones de funciones en paralelo , si usa CPU multinúcleo.

Sugeriría mirar este código , usa un modelo de respuesta simple, pero se escala en CPU multinúcleo, lo que da una aceleración igual a la cantidad de núcleos utilizados. En este artículo se describe una matemática detrás del método .

Pablo
fuente
Supongo que usted es el primer autor del artículo, probablemente debería mencionarlo si es el caso. El documento carece de comparación con métodos de vanguardia como la optimización bayesiana u otros métodos sustitutos (de hecho, no proporciona ningún punto de referencia en absoluto). ¿Tal vez puedas decir algo más?
lacerbi
No estoy diciendo que el modelo usado allí sea mejor. Sólo digo que la gente está demasiado preocupado por la calidad del modelo y, a veces se olvidan de paralelismo, que puede ser un gran problema cuando se trata de muchos núcleos ..
Paul
Incluya información completa de citas para los documentos vinculados y otros recursos. Queremos construir un repositorio de información duradero, y los enlaces tienden a fallar con el tiempo.
Restablece a Monica
2
No estoy seguro de cuánto varía la terminología según la comunidad, pero comúnmente aquí la superficie de respuesta utilizada como sinónimo de "modelo sustituto polinomial" (típicamente un cuadrático). Así que tiendo a pensar en el modelado sustituto como un superconjunto del modelado de superficie de respuesta. (Sin embargo, esto puede ser incorrecto.)
GeoMatt22
0

Hay muchos trucos utilizados en el descenso de gradiente estocástico que también se pueden aplicar a la evaluación de la función objetivo. La idea general es tratar de aproximar la función objetivo utilizando un subconjunto de datos .

Mis respuestas en estas dos publicaciones discuten por qué funciona el descenso de gradiente estocástico: la intuición detrás de esto es aproximar el gradiente usando un subconjunto de datos.

¿Cómo podría el descenso de gradiente estocástico ahorrar tiempo en comparación con el descenso de gradiente estándar?

¿Cómo ejecutar la regresión lineal de forma paralela / distribuida para la configuración de Big Data?

El mismo truco se aplica a la función objetivo.

Sigamos usando la regresión lineal como ejemplo: supongamos que la función objetivo es . Si es enorme, digamos un billón de filas, evaluarlo una vez llevará mucho tiempo. Siempre podemos usar un subconjunto de y para aproximar la función objetivo, que es la pérdida al cuadrado en el subconjunto de datos.Axb2AAb

Haitao Du
fuente