10

Estuve interesado en las redes neuronales por un tiempo y pensé en usar una en python para un proyecto ligero que compara varias técnicas de minimización en un dominio de tiempo (que es el más rápido).¿Se puede usar una red neuronal para encontrar un mínimo de funciones (a)?

Entonces me di cuenta de que ni siquiera sabía si un NN es bueno para la minimización. ¿Qué piensas?

+0

Estaba buscando comparaciones de exploración de matriz de fuerza bruta, recocido simulado y la minimización de Migrad integrada en Minuit en la raíz. – physicsmichael

Respuesta

0

Las redes neuronales son clasificadores. Separa dos clases de elementos de datos. Aprenden esta separación (generalmente) por elementos de datos preclasificados. Por lo tanto, digo: No, a menos que hagas un gran esfuerzo más allá de la rotura.

+7

Las redes neuronales son interpoladores de muestra, que puede usar para la clasificación, entre otras cosas. Usar una red neuronal para aproximar una función y luego encontrar los mínimos de la aproximación sería algo razonable de hacer en algunos casos. –

1

El proceso de entrenamiento de una red neuronal de retro-propagación funciona minimizando el error del resultado óptimo. Pero tener una red neuronal entrenada para encontrar el mínimo de una función desconocida sería bastante difícil.

Si restringe el problema a una clase de función específica, podría funcionar y ser bastante rápido también. Las redes neuronales son buenas para encontrar patrones, si hay alguno.

0

Son bastante malas para el propósito; uno de los grandes problemas de las redes neuronales es que se quedan atrapados en los mínimos locales. Es posible que desee buscar máquinas de vectores de soporte en su lugar.

+0

¿Dónde puedo encontrar más información sobre las máquinas de vectores de estado? –

+0

Disculpa, fue un error tipográfico. Apoyo a las máquinas de vectores es lo que estaba tratando de decir. No tengo mejores referencias de las que la wikipedia te indicaría. – chaos

5

Me parece que este es un problema más adecuado para genetic algorithms que las redes neuronales. Las redes neuronales tienden a necesitar un problema limitado para resolver, lo que requiere entrenamiento contra datos conocidos, etc., mientras que los algoritmos genéticos funcionan al encontrar mejores y mejores soluciones aproximadas a un problema sin requerir entrenamiento.

+0

Si los datos (de entrenamiento) tienen una forma característica, podría ser un buen método, pero esa es una suposición ... – Alex

+2

No estoy seguro de que te sigo. –

+0

PSO (Optimización de enjambre de partículas) y ACO (Optimización de colonia de hormigas) también son opciones para GA. – Levon

0

En realidad podría usar la NN para encontrar una función mínima, pero funcionaría mejor en combinación con los algoritmos genéticos mencionados por Erik.

Básicamente NN carpa para encontrar soluciones que correspondan a una función local mínima o máxima pero al hacerlo son bastante precisas (para comentar en Tetha responda que NN son clasificadores que puede usar si quiere decir que la entrada de datos es mínima o no)

en contraste los algoritmos genéticos tienden a encontrar una solución más universal de todo el rango de las entradas posibles, pero luego le dan los resultados inmediatos.

La solución es combinar los 2 mundos

  1. Obtener el resultado aproximado de algoritmos genéticos
  2. uso que dan lugar a encontrar la respuesta más precisa con NN
3

retropropagación trabaja por minimizando el error Sin embargo, realmente puedes minimizar lo que quieras. Por lo tanto, podría usar reglas de actualización similares a las del back-prop para encontrar las entradas de la Red neuronal artificial que minimicen la salida.

Esta es una gran pregunta, perdón por la respuesta corta. También debo agregar que mi enfoque sugerido suena bastante ineficiente en comparación con los métodos más establecidos y solo encontraría un mínimo local.

0

Puede enseñar un NN para aproximar una función. Si una función es derivable o su NN tiene más de una capa oculta, puede enseñarle a derivar una función.

Ejemplo:

You can train a 1 input 1 output NN to give output=sin(input) 

You can train it also give output=cos(input) which is derivative of sin() 

You get a minima/maxima of sin when you equate cos to zero. 

Scan for zero output while giving many values from input. 0=cos() -> minima of sin 

Al llegar a la salida cero, se sabe que el valor de entrada es de los mínimos de la función.

El entrenamiento toma menos, el barrido de cero lleva mucho tiempo.

0

Aunque esto llega un poco tarde para el autor de esta pregunta. Tal vez alguien quiera probar algunos algoritmos de optimización, cuando lea esto ...

Si está trabajando con regresiones en aprendizaje automático (NN, SVM, regresión lineal múltiple, K vecino más cercano) y desea minimizar (maximizar) su función de regresión, en realidad esto es posible, pero la eficiencia de dichos algoritmos depende de la suavidad, (paso de tamaño ... etc.) de la región en la que está buscando.

Para construir tal "Aprendizaje automático" Regresiones "puede usar scikit- learn. Tienes que entrenar y validar tu MLR Support Vector Regression. (método de "ajuste")

SVR.fit(Sm_Data_X,Sm_Data_y) 

entonces usted tiene que definir una función que devuelve una predicción de su regresión para una matriz "x".

def fun(x): 
    return SVR.predict(x) 

Puede usar scipiy.optimize.minimize para la optimización. Vea los ejemplos que siguen a los doc-links.

Cuestiones relacionadas