9 votos

¿Qué tan bien debo esperar que Adam funcione?

He estado a la codificación de una red neuronal paquete para mi propia diversión, y parece que funciona. He estado leyendo acerca de Adán y por lo que he visto es muy difícil de batir.

Bueno, cuando me implementar el Adam algoritmo en mi código lo hace terriblemente - convergen muy lentamente o incluso divergentes para algunos de los problemas que yo he probado. Me parece que se debe haber cometido un error, pero el algoritmo es bastante sencillo.

Para cortar la posibilidad de algún error de programación, he decidido crear una función muy sencilla en Excel y comparar Adán estándar de gradiente de la pendiente. Por lo que puedo ver, estándar de gradiente de la pendiente, funciona mejor en bastante consistente para muchos de los parámetros (al menos relativamente simple, las funciones deterministas). Adam parece converger mucho más fiable, independientemente de lo que se alimentan, pero es consistentemente más lento.

Sin embargo - lo que yo he leído bastante consistente pinturas de Adán como una panacea que converge mucho más rápido que cualquier otro algoritmo en casi todas las situaciones. Entonces, ¿qué da?

Sólo superando a otros algoritmos en lo suficientemente complejos problemas? Hacer el hyperparameters necesita ser sintonizado con más cuidado? Necesito ver mi arquitectura de red más cuidadosamente si yo no estoy de convergencia? Hay ciertas funciones de activación que hacer es realizar especialmente mal? O tal vez sólo he recta hasta implementado el algoritmo de forma incorrecta?

He aquí un ejemplo donde yo comparación con el estándar de gradiente de la pendiente a Adán para x^2 + x^4, utilizando una tasa de aprendizaje de 0.1 (y el uso de 0.9, 0.999 y 1e-8 para el otro Adán parámetros). Acabo trazan el gradiente en cada iteración, a partir de ambos en x=1. Adam es más lento que convergen para esta función simple para pequeñas las tasas de aprendizaje, pero convergen para cada tasa de aprendizaje que he probado (considerando que el estándar de gradiente de la pendiente luchas converger para el aprendizaje de las tasas más de alrededor de 0.3). Se ve a la derecha o a qué se parece tengo algo mal?

Gradient of f(x) = x^4 + x^2

He aquí las variables intermedias para un número de iteraciones de Adán:

enter image description here

Yo (tal vez ingenuamente) que se espera que acabo de enchufar el Adam algoritmo en mi código, con un stock conjunto de parámetros, y todo lo que acaba de velocidad. Lo que me estoy perdiendo aquí?

Gracias por la ayuda!

6voto

mclaughlinj Puntos 1099

Puede haber varios factores en juego aquí:

  1. El óptimo de la tasa de aprendizaje para el impulso de los algoritmos basados generalmente es menor que la de la llanura de GD, porque el impulso aumenta la efectiva tamaño de paso. No sé qué tipo usted intentó, pero entre $10^{-5}$ e $10^{-3}$ generalmente funciona para mí.

  2. Adán y muchos otros SGD w/ impulso variantes fueron diseñados para optimizar ruidoso, muy alta dimensión no-de las funciones convexas, con muchos puntos de silla y otras patologías. La prueba en $x^2+x^4$ es prácticamente el opuesto de esto, por lo que podría no reflejar las fortalezas de Adán.

  3. si mal no recuerdo, con un adecuado ritmo de aprendizaje y la decadencia de programación, SGD, se reunirán a los resultados que son tan buenos o posiblemente mejor que la de Adán. Como se señaló, la reducción de la sensibilidad a la hyperparameter configuración es una ventaja de Adán

5voto

Cliff AB Puntos 3213

De hecho, uno de ADÁN principales características es que es más lento y por lo tanto más cuidado. Consulte la sección 2.1 del documento.

En particular, hay bastante apretado límites superiores en el tamaño del paso. El papel de las listas 3 límites superiores, la más simple es que no hay parámetros individuales de los pasos más grandes que $\alpha$ durante cualquier actualización, que se recomienda 0.001.

Con estocástico degradados, especialmente aquellos con el potencial para grandes variaciones de la muestra, esta es una característica muy importante. Puede que su modelo tiene actualmente cerca de óptimos valores de los parámetros en algún momento durante la optimización, pero por mala suerte, que alcanza un valor atípico, poco antes de que el algoritmo termina, dando lugar a un enorme salto a un muy subóptima conjunto de valores de parámetro. Mediante el uso de un muy pequeño de confianza de la región, como ADÁN lo hace, puede reducir en gran medida la probabilidad de que ocurra esto, que se necesita para golpear a un gran número de valores atípicos en una fila para mover una medida de distancia de su solución actual.

Esta confianza la región aspecto es importante en los casos cuando se tiene un potencial muy ruidoso aproximación del gradiente (especialmente si son raros los casos de extremadamente inexacto aproximaciones) y si la segunda derivada es potencialmente muy inestable. Si estas condiciones no existen, entonces la confianza de la región aspecto de ADÁN son más propensos a retrasar convergencia, sin mucho beneficio.

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