Estoy interesado en maximizar una función , donde .
El problema es que no conozco la forma analítica de la función o de sus derivados. Lo único que puedo hacer es evaluar la función de manera puntual, conectando un valor y obtener una estimación NOISY en ese punto. Si quiero, puedo disminuir la variabilidad de estas estimaciones, pero tengo que pagar costos informáticos crecientes. * f ( θ * )
Esto es lo que he intentado hasta ahora:
Descenso más empinado estocástico con diferencias finitas: puede funcionar pero requiere mucha afinación (por ejemplo, secuencia de ganancia, factor de escala) y, a menudo, es muy inestable.
Recocido simulado: funciona y es confiable, pero requiere muchas evaluaciones de funciones, así que lo encontré bastante lento.
Por lo tanto, solicito sugerencias / ideas sobre un posible método de optimización alternativo que pueda funcionar en estas condiciones. Mantengo el problema lo más general posible para alentar sugerencias de áreas de investigación diferentes a la mía. Debo agregar que estaría muy interesado en un método que me pudiera dar una estimación de la arpillera en convergencia. Esto se debe a que puedo usarlo para estimar la incertidumbre de los parámetros . De lo contrario, tendré que usar diferencias finitas alrededor del máximo para obtener una estimación.
fuente
Respuestas:
Nuestro paquete Matlab SnobFit fue creado precisamente para este propósito. No se necesita suponer la distribución del ruido. Además, los valores de las funciones se pueden proporcionar a través de archivos de texto, por lo que puede aplicarlo a las funciones implementadas en cualquier sistema capaz de escribir un archivo de texto. Ver
http://www.mat.univie.ac.at/~neum/software/snobfit/
SnobFit se había desarrollado para una aplicación en la que la función a optimizar ni siquiera existía, y los valores de la función (una medida de la calidad de fabricación) se obtuvieron mediante equipos costosos especializados que crean productos de muestra y los miden a mano, lo que da como resultado aproximadamente 50 funciones evaluaciones por día.
fuente
Hay varias técnicas de optimización bayesianas que puedes probar. Los más fáciles se basan en el proceso gaussiano:
Funcionan formando una función posterior sobre funciones plausibles, dan observaciones hasta el momento y sugieren el siguiente punto para aprender rápidamente la función, así como para encontrar los máximos globales (vea mi publicación de blog ).
Otra ventaja es que puede estimar el Hessian en los máximos. Sin embargo, debe especificar un modelo de ruido.
fuente
El algoritmo SPSA de James Spall (abreviatura de recocido simulado de perturbación estocástica, si no recuerdo mal) ha sido diseñado para este tipo de problema. Tiene un par de documentos donde los usa para problemas como el que usted describe.
fuente