Cómo saber formalmente si una función objetivo es convexa o no convexa

Si tiene un objetivo simple con solo unas pocas variables, puede aplicar algunas reglas de análisis convexo de libros de texto para probar / refutar la convexidad.

Las pruebas de convexidad para una función grande y arbitraria generalmente no son triviales.

Una prueba de convexidad es verificar la función de Hesse. Una función continua, dos veces diferenciable es convexa si su arpillera es semidefinida positiva en todas partes en el interior del conjunto convexo.

El problema está en todas partes: a menos que la expresión algebraica para los elementos de Hesse tenga ciertas propiedades que garanticen una definición positiva (por ejemplo, elementos cuadrados, valores propios positivos, principales principales positivos, etc.) en todas partes del interior del conjunto, es casi imposible garantizar la convexidad. . Además, calcular un Hessian algebraico puede ser computacionalmente costoso para sistemas más grandes (con muchas variables).

(Por otro lado, si solo puede un punto donde el Hessian es definitivo no positivo, sabrá que su función no es convexa).

Ha habido algún trabajo sobre evaluación de convexidad computacional por D. Orban en la Universidad de Montreal. Esto se implementó en un metasolver llamado DrAmpl, que utiliza un montón de métodos para probar (y refutar) la convexidad de un modelo:
Dr. Ampl

Hay un documento que describe los métodos aquí:
http://www.mat.univie.ac.at/~her…

Solía ​​trabajar con modelos a gran escala que tenían expresiones objetivas y restrictivas arbitrariamente complicadas, y nunca pude probar / refutar definitivamente la convexidad. Así que los resolví tratándolos como sistemas no convexos, renunciando a cualquiera de las buenas garantías que venían con la convexidad.

Si sus modelos tienen mejores propiedades, puede tener una mejor oportunidad de probar / refutar la convexidad que yo.

Mi sugerencia simple es que lo tracen contra datos de muestra … Matlab es una herramienta útil para eso …

Puede seguir este libro para conocer algunas metodologías … Optimización de objetivos múltiples utilizando algoritmos evolutivos (Serie Wiley Interscience en Sistemas y Optimización de K Deb.

Esto generalmente no es tan fácil. Aunque hay muchas otras formas, creo que el método más prometedor y práctico es usar operaciones que preserven la convexidad como se menciona en este libro de Stephen Boyd (pase a la sección 3.2)
http://www.stanford.edu/~boyd/cv

More Interesting

¿La agrupación es indispensable en el aprendizaje profundo?

¿Cuáles son los algoritmos de aprendizaje profundo que pueden corregir los errores de reconocimiento óptico de caracteres (OCR)?

¿Qué piensa Andrew Ng sobre Deep Learning?

¿Cuán extendido es el aprendizaje profundo en finanzas?

¿Cómo puedo aprender ciencia de datos?

¿Qué algoritmo de aprendizaje automático se debe usar para eliminar palabras innecesarias en una consulta de búsqueda realizada para recuperar datos de un texto grande?

¿Cuáles son los conceptos básicos de los campos aleatorios condicionales?

Cómo comparar el rendimiento de mis modelos de Deep Learning con puntos de referencia estándar cuando se utiliza el aumento de conjunto de datos

¿Por qué las variedades son importantes para el aprendizaje profundo o el aprendizaje de refuerzo profundo?

¿Cuáles son los problemas menos resueltos o no resueltos que se pueden resolver con el aprendizaje automático y el aprendizaje profundo?

¿Cuál es el ejemplo de código más simple para redes neuronales recurrentes (RNN) en TensorFlow?

¿Cuáles son los algoritmos de aprendizaje de refuerzo más eficientes en datos / muestras?

¿Cuál es actualmente la mejor GPU para el aprendizaje profundo?

Aprendizaje automático: ¿qué significa "abandono en el cerebro con respecto a todas las entradas, mientras que abandono en una red convolucional funciona con respecto a cada unidad individual"?

¿Cuáles son las consecuencias de usar la función de error del tren [matemáticas] \ min_ {f \ in \ mathcal {H}} \ max_ {i \ in \ {1… N \}} \ | f (x ^ {(i)}) - y ^ {(i)} \ | ^ 2 [/ math] en lugar del error de tren medio empírico estándar para Machine Learning?