64 votos

¿Cuáles son las alternativas del descenso gradual?

El descenso gradual tiene el problema de quedarse atascado en los mínimos locales. Tenemos que ejecutar el descenso de gradiente exponencialmente para encontrar los mínimos globales.

¿Puede alguien informarme sobre alguna alternativa de descenso de gradiente aplicada al aprendizaje de redes neuronales, junto con sus pros y sus contras?

50voto

John Richardson Puntos 1197

Esto es más un problema que tiene que ver con la función que se minimiza que con el método utilizado, si encontrar el verdadero mínimo global es importante, entonces utilice un método como recocido simulado . Esto podrá encontrar el mínimo global, pero puede tardar mucho tiempo en 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 se puede obtener un modelo funcionalmente idéntico permutando las unidades de la capa oculta, o negando las entradas y los pesos de salida de la red, etc. Además, si el mínimo local sólo es ligeramente no óptimo, la diferencia en el rendimiento será mínima y, por tanto, no importará. Por último, y este es un punto importante, el problema clave en el ajuste de una red neuronal es el sobreajuste, por lo que la búsqueda agresiva de los mínimos globales de la función de coste probablemente dará lugar a un sobreajuste y a un modelo que no funcione bien.

Añadir un término de regularización, por ejemplo el decaimiento del peso, puede ayudar a suavizar la función de costes, lo que puede reducir un poco el problema de los mínimos locales, y es algo que recomendaría de todos modos como 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.

32voto

AlanBarber Puntos 146

El descenso gradual es un algoritmo de optimización .

Hay muchos algoritmos de optimización que operan en un número fijo de valores reales que están correlacionados ( no separable ). Podemos dividirlos aproximadamente en 2 categorías: optimizadores basados en el gradiente y optimizadores sin derivadas. Normalmente se quiere utilizar el gradiente para optimizar las redes neuronales en un entorno supervisado porque es mucho más rápido que la optimización sin derivadas. Hay numerosos algoritmos de optimización basados en el gradiente que se han utilizado para optimizar las redes neuronales:

  • Descenso Gradiente Estocástico (SGD) ...minibatch SGD, ...: No hay que evaluar el gradiente para todo el conjunto de entrenamiento, sino sólo para una muestra o un minibatch de muestras, lo que suele ser mucho más rápido que el descenso de gradiente por lotes. Los minilotes se han utilizado para suavizar el gradiente y paralelizar el avance y la retropropagación. La ventaja sobre muchos otros algoritmos es que cada iteración es en O(n) (n es el número de pesos en su NN). El SGD no suele atascarse en mínimos locales (!) porque es estocástico.
  • Gradiente no lineal conjugado 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 la aproximación hessiana, requiere el gradiente por lotes
  • Algoritmo de Levenberg-Marquardt (LMA) : Este es realmente el mejor algoritmo de optimización que conozco. Tiene la desventaja de que su complejidad es aproximadamente O(n^3). ¡No lo uses para redes grandes!

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

La optimización de las NN no es un problema resuelto. Según mi experiencia, el mayor reto no es encontrar un buen mínimo local. Sin embargo, los retos son salir de regiones muy planas, tratar con funciones de error mal condicionadas, etc. Esa es la razón por la que el LMA y otros algoritmos que utilizan aproximaciones del hessiano suelen funcionar tan bien en la práctica y la gente intenta desarrollar versiones estocásticas que utilicen información de segundo orden con baja complejidad. Sin embargo, a menudo un conjunto de parámetros muy bien ajustados para el SGD de minilotes es mejor que cualquier algoritmo de optimización complejo.

Normalmente no se quiere encontrar un óptimo global. Porque eso suele requerir un sobreajuste de los datos de entrenamiento.

20voto

elventear Puntos 33

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

12voto

David Rogers Puntos 166

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

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

El primer enfoque es un truco de optimización (lo llamo túnel convolucional, ya que utiliza la convolución sobre los parámetros para cambiar la función objetivo), que suaviza la superficie del paisaje de la función de coste y se deshace de algunos de los mínimos locales, por lo que es más fácil encontrar el mínimo global (o mejor el mínimo local).

El segundo enfoque está relacionado con la inyección de ruido (en los pesos). Obsérvese que esto se hace de forma analítica, lo que significa que el resultado final es una sola red, en lugar de múltiples redes.

Los siguientes son ejemplos de salidas para el problema de dos espirales. La arquitectura de la red es la misma para los tres: sólo 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 corresponde a la configuración de vainilla; la del medio utiliza el primer enfoque (es decir, la reducción repetida de sigma hacia 0); la tercera utiliza sigma = 2.

Result of two-spirals problem by three approaches

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

Tanto el túnel convolucional como el modo analítico de inyección de ruido son ideas originales mías. Quizás sean la alternativa que a alguien le pueda interesar. Los detalles se pueden encontrar en mi documento Combinar un número infinito de redes neuronales en una sola . Advertencia: No soy un escritor académico profesional y el documento no está revisado por pares. Si tienes preguntas sobre los enfoques que he mencionado, por favor deja un comentario.

7voto

Matthias Puntos 31

Cuando se trata de Optimización global (es decir, el intento de encontrar un mínimo global de una función objetivo) puede que quieras echarle un vistazo:

  1. Búsqueda de patrones (también conocido como búsqueda directa, búsqueda sin derivación o búsqueda de caja negra), que utiliza un patrón (conjunto de vectores ${\{v_i\}}$ ) para determinar los puntos a buscar en la siguiente iteración.
  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 siguiente iteración de la optimización.
  3. Optimización por enjambre de partículas que define un conjunto de partículas que "caminan" por el espacio buscando el mínimo.
  4. Optimización de sustitutos que utiliza un sustituto para aproximar la función objetivo. Este método puede utilizarse cuando la función objetivo es costosa de evaluar.
  5. Optimización multiobjetivo (también conocido como Optimización de Pareto ) que puede utilizarse para el problema que no puede expresarse 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 la temperatura) para compensar la exploración y la 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" desciende y el algoritmo es cada vez menos propenso a explorar el espacio, "convergiendo" así hacia su mejor candidato actual.

Como ya se ha dicho, Recocido simulado, optimización por enjambre de partículas y algoritmos genéticos son buenos algoritmos de optimización global que navegan bien por enormes espacios de búsqueda y, a diferencia de Descenso gradual no necesitan ninguna información sobre el gradiente y podrían utilizarse con éxito con funciones objetivo de caja negra y problemas que requieren la ejecución de simulaciones.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X