¿Cómo funcionan AdaGrad / RMSProp / Adam cuando descartan la dirección del degradado?

Tenga en cuenta que la dirección opuesta al gradiente a menudo no apunta en la dirección del mínimo (véase, por ejemplo, la función Rosenbrock o la función ‘valle en forma de plátano’).

Para los métodos de gradiente estocástico (como los que menciona), es aún peor: seguir la dirección del gradiente negativo a menudo parece una caminata aleatoria a pequeña escala (imagen de los Actualizadores Deeplearning4j explicados):


Para AdaGrad , los derivados individuales se dividen por la norma L2 del historial (reciente) de derivados para un parámetro dado. La sección Wikipedia de AdaGrad señala que ” las actualizaciones extremas de parámetros se amortiguan , mientras que los parámetros que reciben pocas o pequeñas actualizaciones reciben mayores tasas de aprendizaje”.

Pascanu, Mikolov y Bengio mostraron en este artículo un ejemplo de una función de pérdida que puede conducir a gradientes ‘extremos’ (‘explosión de gradiente’):

Verá que cuando se acerca al ‘muro vertical’, el método rebota la próxima iteración bastante lejos si el gradiente no se amortigua. En este ejemplo, consideraron un modelo de unidad oculta simple y, por lo tanto, solo tienen dos parámetros para aprender. Pero, en general, tales situaciones pueden surgir para cualquier subconjunto de los parámetros a aprender .


Para Adam , las actualizaciones de parámetros tienen un término en el que el componente de gradiente se divide por un término que involucra el segundo momento del historial del gradiente.

Esto puede estar motivado por el hecho de que cuando estás cerca del mínimo y tu tasa de aprendizaje es demasiado alta , superarás el mínimo todo el tiempo (salta al mínimo). También notará que la “dispersión” en los valores de derivada (de ahí el uso del segundo momento de la historia de las derivadas) es relativamente grande en comparación con su magnitud (de hecho, cada vez que se sobrepasa el mínimo, el signo de la derivada cambia) . Intuitivamente, por lo tanto, tiene sentido dividir las actualizaciones de gradiente por la propagación en valores de gradiente recientes.

Por otro lado, cuando está lejos del mínimo y los gradientes recientes muestran la misma tendencia en la dirección (para todos o un subconjunto de parámetros), la extensión de estos es relativamente pequeña, en su mayoría coinciden en la dirección en la que paso debe ser.

More Interesting

¿Cuál es la diferencia (o relación) entre el aprendizaje profundo y un sistema inteligente?

En su opinión, ¿la sugerencia de lectura recomendada basada en la actividad de navegación de los usuarios de Wikipedia mejorará la genialidad del sitio?

¿Cuáles son las 8 principales cosas para las que las startups utilizan el aprendizaje automático?

¿Qué significa 'alineado suavemente' en un contexto de aprendizaje profundo?

¿Cuándo sale mal la reducción de dimensionalidad?

¿Cuál es la razón para mapear datos de dos idiomas diferentes en un espacio de incrustación de palabras común y no usar dictonarios y asignarle el idioma b a los vectores del idioma a para entrenar un modelo de manera multilingüe?

¿Mejor ejecución de trabajos de Machine Learning directamente desde Pyspark o integración de scikit-learn en, a través del método de paralelización SparkContext?

¿Cuáles son las desventajas de usar un árbol de decisión para la clasificación?

¿Cuál es un buen sitio de contestación de preguntas sobre IA y aprendizaje automático aparte de Quora? Los relacionados con Stack Exchange son bastante malos. Las personas están más centradas en los puntos y formatos en lugar de dar una respuesta adecuada.

¿Cuál es la diferencia entre regresión lineal y logística?

¿Aprendizaje automático sin historia matemática?

¿Cuál es el básico antes de aprender el aprendizaje automático?

¿Cuál es el punto de usar el problema dual cuando se ajusta SVM?

¿Por qué Google TensorFlow usa OpenCL y no OpenGL? ¿Cuáles son las ventajas?

No tengo dinero para comprar una computadora poderosa, ¿cómo puedo aprender en la GPU?