Estoy probando la optimización bayesiana, siguiendo a Snoek, Larochelle y Adams [ http://arxiv.org/pdf/1206.2944.pdf] , usando GPML [ http://www.gaussianprocess.org/gpml/code/matlab / doc /] . Implementé la función de adquisición Mejora esperada que se describe en la página 3, y supongo que estoy en lo correcto al decidir dónde consultar mi objetivo, debo tomar el que maximiza:
Pero parece que no puedo encontrar orientación sobre qué conjunto de candidatos Es a tener en cuenta. Teóricamente, me gustaría encontrar lo mejoren todo el dominio, y el documento está escrito de tal manera que parece sugerir que esto es posible ("[EI] también tiene forma cerrada bajo el proceso gaussiano"). Pero como cuestión práctica, necesito calcular los medios predictivos posteriores y las variaciones en cualquier Podría considerar antes de poder calcular y aunque estos posteriores tienen una forma cerrada, todavía necesito calcularlos usando álgebra matricial, por lo que no puedo ver una forma de evitar elegir un montón de 's.
La pregunta: ¿cuál es un método práctico para elegir el conjunto de candidatos grandes (¿medianos? ¿Pequeños?)¿Sobre qué maximizo EI (o cualquier otra función de adquisición)? (¿Está esto en algún lugar del periódico y me lo perdí?)
Por el momento, solo estoy tomando mi set actual , muestreándolo con reemplazo 2000 veces, y luego agregando algo de ruido gaussiano a cada punto. Parece estar bien, supongo.
fuente
Respuestas:
La norma es usar cualquier optimizador global que desee. El problema es que la superficie EI es altamente multimodal y está desconectada; optimizar esta función de adquisición es un problema no trivial en sí mismo.
Una opción común que he visto en varios documentos es el algoritmo DIRECTO ; a veces he visto CMA-ES, que es un método de vanguardia en optimización no lineal. En mi experiencia para otras formas de optimización, MCS ( Multi-Level Coordinate Search ) tiende a funcionar relativamente bien. Puede encontrar una revisión de optimizadores globales sin derivados aquí :
Por cierto, la EI es analítica, por lo que si lo desea, también puede calcular su gradiente para guiar la optimización, pero esto no es necesario. Una técnica efectiva es ejecutar un optimizador global primero para encontrar soluciones prometedoras y luego ejecutar un optimizador local para refinarlo (por ejemplo, un método cuasi-Newton como BFGS, que es fminunc en MATLAB; o fmincon si tiene restricciones).
Finalmente, si la velocidad de optimización de la función de adquisición es un factor (que no es el escenario BO "tradicional"), he encontrado resultados decentes comenzando con un diseño de hipercubo latino o un diseño de secuencia de Sobol cuasialeatorio, luego refinado con unos pocos pasos de un optimizador local desde los mejores puntos; vea también el comentario @ user777. Como este no es el escenario BO estándar, no tengo ninguna referencia específica que realmente use este método.
Ejemplos de documentos que se refieren a DIRECT o CMA-ES:
Puede simplemente buscar en Google "optimización bayesiana" + el algoritmo de optimización global deseado, y encontrará un montón de documentos. Además, en casi todos los demás artículos sobre BO encontrarás una oración como :
fuente