En un problema de optimización no convexo, ¿es posible determinar si dos puntos pertenecen al mismo valle o no?

Agregando a la respuesta de Ben Packer: puede usar un solucionador SQP (programación cuadrática secuencial) inicializado en cada punto, por lo que se garantiza que no ‘saltará’ sobre el valle si tiene restricciones lineales; después de ejecutar ambos, puede verificar si su resultado es el mismo. En este caso, tiene la garantía (con el retroceso correcto) de aterrizar en el mismo ‘valle’ [1] si ambos le pertenecen, o aterrizar en diferentes valles, si pertenecen a diferentes conjuntos de este tipo.

Lamentablemente, no existen tales garantías si tiene restricciones arbitrarias (a menos que tenga otras condiciones como la continuidad de Lipchitz en sus funciones, en este caso siempre puede encontrarla eligiendo la constante correcta en el descenso del gradiente), en cuyo caso ciertamente seguiría El consejo de Ben.

[1] Aquí estoy definiendo un valle (si existe) como el conjunto conectado más pequeño que contiene dos máximos locales y un punto en el interior del conjunto que es estrictamente más pequeño que cualquiera de los dos máximos locales. Puede comprobar que este conjunto está cerrado y su límite corresponde exactamente a los máximos locales mediante una simple prueba.

Otra definición de este tipo, que probablemente sea más útil si asume dos veces la diferenciabilidad (ya que lo anterior no explicará los conjuntos sin límites sin un poco de yoga matemático) es decir que el valle alrededor de un punto [matemáticas] p [/ matemáticas] es el conjunto conectado más grande tal que [math] p [/ math] es un elemento del conjunto y el hessian es positivo semi-definido en cada punto. Este conjunto también está cerrado (por la continuidad de la segunda derivada), pero la definición puede acomodar valles ilimitados.

Esto se puede responder fácilmente empíricamente a través del corte. Suponga que los dos puntos son [matemática] x_1 [/ matemática] y [matemática] x_2 [/ matemática]. Entonces, cualquier punto [matemático] x [/ matemático] intermedio es [matemático] c * x_1 + (1-c) * x_2 [/ matemático] donde [matemático] c [/ matemático] varía de 0 a 1. Luego, trace el valores de función en los puntos [matemática] x [/ matemática] muestra aleatoria y uniforme o lineal entre los puntos. A continuación se muestra una implementación rápida y sucia de Python que ilustra el corte en una función cuadrática general:

Descargo de responsabilidad: escribir en el teléfono para que este fragmento de código no se pruebe.

importar numpy como np
importar matplotlib.pyplot como plt

def f (x, A = np.eye (2), b = np.zeros (2), c = 0):
# función cuadrática general
return (xb) .dot (A) .dot (xb) + c

x_1 = np.array ([0, 0])
x_2 = np.array ([5, 10])
N = 100
C = np.linspace (0, 1, N) # muestreo regular
x = [c * x_1 + (1 – c) * x_2 para c en C]
y = mapa (f, x) #

plt.plot (C, y, ‘.’)
plt.show ()

Si el corte se ve convexo, entonces los dos puntos son probablemente “co-vallados”. Aumente N para mejorar su confianza.

La forma útil debe evitar pequeños mínimos locales durante el descenso del gradiente mencionado por Ben Packer, donde el recocido simulado con los puntos respectivos como puntos de partida puede evitar este problema.

De lo contrario, la técnica de corte según lo mencionado por Alfredo Kalaitzis es la mejor en cuanto a costo computacional.

La optimización del enjambre de partículas de dos partículas puede proporcionar las mejores iniciativas.

Puede aplicar el descenso de gradiente (con un tamaño de paso relativamente pequeño para evitar saltar entre valles) inicializado en ambos puntos y ver si termina en el mismo mínimo local, suponiendo que esto es lo que quiere decir con “pertenecer al mismo valle”. debería funcionar a menos que tenga problemas numéricos o superficies muy planas que eviten que el descenso del gradiente converja correctamente.

More Interesting

¿Qué es mejor para alguien que esté dispuesto a hacer un doctorado en visión artificial: conocer un método en profundidad y aplicaciones ampliamente, o lo contrario?

¿En qué dominios encuentra aplicación la tecnología de procesamiento de eventos complejos (CEP)?

¿Es cierto que las predicciones en el espacio de alta dimensión son más difíciles en torno al origen?

¿Qué son los componentes del procesamiento del lenguaje natural?

¿Cuáles son los algoritmos utilizados en los sistemas de preguntas y respuestas en PNL?

¿Qué lenguaje es mejor para hacer big data y machine learning (en términos de rendimiento) Java o Python?

¿De qué maneras alguien puede obtener ingresos del aprendizaje automático (trabajo por cuenta propia)?

¿Cuál es la mejor herramienta de optimización bayesiana para optimizar hiperparámetros de grandes redes neuronales?

¿Qué son las unidades recurrentes cerradas y cómo se pueden implementar con TensorFlow?

¿Cómo funciona el refuerzo con los algoritmos de clasificación del árbol de decisión?

Quiero aprender Python para el análisis de datos y el aprendizaje automático. ¿De dónde debería comenzar?

¿Cuál es la próxima gran cosa en el aprendizaje automático después de que hayamos terminado con el aprendizaje profundo?

¿Cuáles son algunos ejemplos reales de modelos estadísticos que son pobres en la predicción pero útiles para la inferencia?

¿Qué debo leer para desarrollar un rastreador web que raspe un subconjunto de Internet y me brinde los enlaces de los sitios web que son tiendas de abarrotes?

¿Dónde empiezo a aprender Machine Learning?