¿Cuáles son las alternativas del descenso de gradiente?

46

Gradient Descent tiene el problema de quedarse atascado en los mínimos locales. Necesitamos correr tiempos exponenciales de descenso de gradiente para encontrar mínimos globales.

¿Alguien puede decirme acerca de las alternativas de descenso de gradiente que se aplican en el aprendizaje de redes neuronales, junto con sus pros y sus contras?

Tropa
fuente

Respuestas:

38

Esto es más un problema que hacer con la función que se minimiza que el método utilizado, si es importante encontrar el mínimo global verdadero, entonces utilice un método de recocido simulado . Esto podrá encontrar el mínimo global, pero puede llevar mucho tiempo hacerlo.

En el caso de las redes neuronales, los mínimos locales no son necesariamente un gran problema. Algunos de los mínimos locales se deben al hecho de que puede obtener un modelo funcionalmente idéntico permutando las unidades de capa ocultas, o negando los pesos de entrada y salida de la red, etc. Además, si los mínimos locales son solo un poco no óptimos, entonces la diferencia en el rendimiento será mínima y, por lo tanto, realmente no importará. Por último, y este es un punto importante, el problema clave en la adaptación de una red neuronal es el sobreajuste, por lo que la búsqueda agresiva de los mínimos globales de la función de costo probablemente resulte en un sobreajuste y un modelo que funcione mal.

Agregar un término de regularización, por ejemplo, pérdida de peso, puede ayudar a suavizar la función de costo, lo que puede reducir un poco el problema de los mínimos locales, y es algo que recomendaría de todos modos como un medio para evitar el sobreajuste.

Sin embargo, el mejor método para evitar los mínimos locales en las redes neuronales es utilizar un modelo de proceso gaussiano (o una red neuronal de función de base radial), que tienen menos problemas con los mínimos locales.

Dikran Marsupial
fuente
99
Muy cierto. El problema de no encontrar el mínimo global está sobrevalorado.
bayerj
2
Sobreajuste sucede cuando se utiliza muchos parámetros en un modelo (caso típico uso NN), se no se relaciona con los mínimos locales - al menos no de manera obvia. Puede quedarse atascado en un mínimo local malo incluso con un NN pequeño, es decir, con muy pocos parámetros libres.
carlosayam
1
@DikranMarsupial, puede tener muchos mínimos locales, incluso con un solo parámetro de modelo. Depende de la forma de la función de pérdida. Ejemplo simple pero contribuido: , donde son los vecinos más cercanos y 2º más cercanos a . Es fácil ver que hay un mínimo local entre cada dos puntos consecutivos, es decir, ¡cuantos más datos, más mínimos locales! El global se alcanza entre los puntos más cercanos en el conjunto de datos. Esto es extremo, lo sé, pero he visto comportamientos similares resolviendo problemas de puntos de cambio. x ( 1 ) , x ( 2 ) ωL(ω)=(x(1)ω)2+(x(2)ω)2x(1),x(2)ω
carlosayam
1
@DikranMarsupial - No tenía suficientes caracteres para terminar mi oración :) He visto comportamientos similares resolviendo problemas de puntos de cambio ... usando redes neuronales. En este tipo de problemas, un mínimo local suele ser malo; así que no estoy de acuerdo con que este problema esté sobrevalorado.
carlosayam
1
@carlosayam "sobrevalorado" no significa "sin importancia", solo que es un problema con las redes neuronales que generalmente es exagerado. Siempre habrá problemas con todos los métodos de aprendizaje, no hay panacea para todo y siempre debe diagnosticar los problemas con cualquier modelo.
Dikran Marsupial
24

El descenso de gradiente es un algoritmo de optimización .

Existen muchos algoritmos de optimización que operan en un número fijo de valores reales que están correlacionados ( no separables ). Podemos dividirlos aproximadamente en 2 categorías: optimizadores basados ​​en gradientes y optimizadores sin derivados. Por lo general, desea utilizar el gradiente para optimizar las redes neuronales en un entorno supervisado porque es significativamente más rápido que la optimización sin derivadas. Existen numerosos algoritmos de optimización basados ​​en gradientes que se han utilizado para optimizar las redes neuronales:

  • Descenso de gradiente estocástico (SGD) , minibatch SGD, ...: no tiene que evaluar el gradiente para todo el conjunto de entrenamiento, sino solo para una muestra o un minibatch de muestras, esto generalmente es mucho más rápido que el descenso de gradiente por lotes. Se han usado minibaches para suavizar el gradiente y paralelizar la propagación hacia adelante y hacia atrás. La ventaja sobre muchos otros algoritmos es que cada iteración está en O (n) (n es el número de pesos en su NN). SGD generalmente no se atasca en los mínimos locales (!) Porque es estocástico.
  • Gradiente conjugado no lineal : parece tener mucho éxito en la regresión, O (n), requiere el gradiente por lotes (por lo tanto, podría no ser la mejor opción para grandes conjuntos de datos)
  • L-BFGS : parece tener mucho éxito en la clasificación, utiliza aproximación de Hesse, requiere el gradiente de lote
  • Algoritmo de Levenberg-Marquardt (LMA) : este es en realidad el mejor algoritmo de optimización que conozco. Tiene la desventaja de que su complejidad es aproximadamente O (n ^ 3). ¡No lo use para redes grandes!

Y se han propuesto muchos otros algoritmos para la optimización de las redes neuronales, puede buscar en Google para la optimización sin Hessian o v-SGD (hay muchos tipos de SGD con tasas de aprendizaje adaptativo, consulte, por ejemplo, aquí ).

¡La optimización para NN no es un problema resuelto! En mi experiencia, el mayor desafío es no encontrar un buen mínimo local. Sin embargo, los desafíos son salir de regiones muy planas, lidiar con funciones de error mal condicionadas, etc. Esa es la razón por la cual LMA y otros algoritmos que usan aproximaciones del hessiano generalmente funcionan tan bien en la práctica y las personas intentan desarrollar versiones estocásticas. que usan información de segundo orden con baja complejidad. Sin embargo, a menudo un conjunto de parámetros muy bien ajustado para el minibatch SGD es mejor que cualquier algoritmo de optimización complejo.

Por lo general, no desea encontrar un óptimo global. Porque eso generalmente requiere sobreajustar los datos de entrenamiento.

esparto
fuente
16

Una alternativa interesante al descenso por gradiente son los algoritmos de entrenamiento basados ​​en la población, como los algoritmos evolutivos (EA) y la optimización de enjambre de partículas (PSO). La idea básica detrás de los enfoques basados ​​en la población es que se crea una población de soluciones candidatas (vectores de peso NN), y las soluciones candidatas exploran iterativamente el espacio de búsqueda, intercambian información y eventualmente convergen en un mínimo. Debido a que se utilizan muchos puntos de partida (soluciones candidatas), las posibilidades de converger en los mínimos globales aumentan significativamente. Se ha demostrado que PSO y EA tienen un rendimiento muy competitivo, a menudo (aunque no siempre) superando el descenso de gradiente en problemas complejos de entrenamiento de NN.

Anna Earwen
fuente
+1 Vale la pena tener en cuenta que la optimización agresiva del criterio de entrenamiento puede conducir a un sobreajuste, a menos que se tomen medidas para evitarlo, por lo que evitaría PSO y EA a menos que el criterio de entrenamiento incluya alguna forma de regularización u otra basada en la complejidad multa.
Dikran Marsupial
55
@ Anna-Earwen, ¿podría proporcionar algunas referencias donde PSO se desempeña de manera competitiva en comparación con SGD?
emrea
8

Sé que este hilo es bastante antiguo y otros han hecho un gran trabajo para explicar conceptos como mínimos locales, sobreajuste, etc. Sin embargo, como OP estaba buscando una solución alternativa, intentaré aportar una y espero que inspire ideas más interesantes.

La idea es reemplazar cada peso w a w + t, donde t es un número aleatorio que sigue a la distribución gaussiana. La salida final de la red es entonces la salida promedio sobre todos los valores posibles de t. Esto se puede hacer analíticamente. Luego puede optimizar el problema ya sea con descenso de gradiente o LMA u otros métodos de optimización. Una vez que se realiza la optimización, tiene dos opciones. Una opción es reducir la sigma en la distribución gaussiana y hacer la optimización una y otra vez hasta que sigma llegue a 0, entonces tendrá un mínimo local mejor (pero potencialmente podría causar un sobreajuste). Otra opción es seguir usando el que tiene el número aleatorio en sus pesos, generalmente tiene una mejor propiedad de generalización.

El primer enfoque es un truco de optimización (lo llamo como túnel convolucional, ya que utiliza la convolución sobre los parámetros para cambiar la función objetivo), suaviza la superficie del paisaje de la función de costo y elimina algunos de los mínimos locales, por lo tanto facilitará la búsqueda del mínimo global (o mejor mínimo local).

El segundo enfoque está relacionado con la inyección de ruido (en pesas). Tenga en cuenta que esto se realiza analíticamente, lo que significa que el resultado final es una sola red, en lugar de múltiples redes.

Los siguientes son salidas de ejemplo para problemas de dos espirales. La arquitectura de red es la misma para los tres: solo hay una capa oculta de 30 nodos y la capa de salida es lineal. El algoritmo de optimización utilizado es LMA. La imagen de la izquierda es para la configuración de vainilla; el medio está usando el primer enfoque (es decir, reducir repetidamente sigma hacia 0); el tercero usa sigma = 2.

Resultado del problema de dos espirales por tres enfoques

Puede ver que la solución de vainilla es la peor, el túnel convolucional hace un mejor trabajo y la inyección de ruido (con túnel convolucional) es la mejor (en términos de propiedad de generalización).

Tanto el túnel convolucional como la forma analítica de inyección de ruido son mis ideas originales. Quizás son la alternativa que alguien podría estar interesado. Los detalles se pueden encontrar en mi artículo Combinando Infinity Number Of Neural Networks Into One . Advertencia: no soy un escritor académico profesional y el artículo no es revisado por pares. Si tiene preguntas sobre los enfoques que mencioné, deje un comentario.

Bo Tian
fuente
1

Máquinas de aprendizaje extremas Esencialmente, son una red neuronal donde los pesos que conectan las entradas a los nodos ocultos se asignan aleatoriamente y nunca se actualizan. Los pesos entre los nodos ocultos y las salidas se aprenden en un solo paso resolviendo una ecuación lineal (matriz inversa).

alex
fuente
0

Cuando se trata de tareas de optimización global (es decir, tratar de encontrar un mínimo global de una función objetivo), puede echar un vistazo a:

  1. Búsqueda de patrones (también conocida como búsqueda directa, búsqueda sin derivadas o búsqueda de recuadro negro), que utiliza un patrón (conjunto de vectores) para determinar los puntos a buscar en la próxima iteración.{vi}
  2. Algoritmo genético que utiliza el concepto de mutación, cruce y selección para definir la población de puntos a evaluar en la próxima iteración de la optimización.
  3. Optimización de enjambre de partículas que define un conjunto de partículas que "caminan" por el espacio buscando el mínimo.
  4. Optimización sustituta que utiliza unmodelo sustituto para aproximar la función objetivo. Este método puede usarse cuando la función objetivo es cara de evaluar.
  5. Optimización multiobjetivo (también conocida como optimización de Pareto ) que se puede utilizar para el problema que no se puede expresar en una forma que tenga una única función objetivo (sino un vector de objetivos).
  6. Recocido simulado , que utiliza el concepto de recocido (o temperatura) para compensar la exploración y explotación. Propone nuevos puntos para la evaluación en cada iteración, pero a medida que aumenta el número de iteraciones, la "temperatura" disminuye y el algoritmo se vuelve cada vez menos probable que explore el espacio, por lo tanto, "converge" hacia su mejor candidato actual.

Como se mencionó anteriormente, el recocido simulado, la optimización del enjambre de partículas y los algoritmos genéticos son buenos algoritmos de optimización global que navegan bien a través de grandes espacios de búsqueda y, a diferencia de Gradient Descent , no necesitan ninguna información sobre el gradiente y podrían usarse con éxito con funciones y problemas objetivos de caja negra. que requieren ejecutar simulaciones.

Tomasz Bartkowiak
fuente