59 votos

Optimizador Adam con decaimiento exponencial

En la mayoría del código de Tensorflow que he visto se utiliza Adam Optimizer con una tasa de aprendizaje constante de 1e-4 (es decir, 0,0001). El código suele tener el siguiente aspecto:

...build the model...
# Add the optimizer
train_op = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy)
# Add the ops to initialize variables.  These will include 
# the optimizer slots added by AdamOptimizer().
init_op = tf.initialize_all_variables()

# launch the graph in a session
sess = tf.Session()
# Actually intialize the variables
sess.run(init_op)
# now train your model
for ...:
  sess.run(train_op)

Me pregunto si es útil utilizar el decaimiento exponencial cuando se utiliza el optimizador adam, es decir, utilizar el siguiente Código:

...build the model...
# Add the optimizer
step = tf.Variable(0, trainable=False)
rate = tf.train.exponential_decay(0.15, step, 1, 0.9999)
optimizer = tf.train.AdamOptimizer(rate).minimize(cross_entropy, global_step=step)
# Add the ops to initialize variables.  These will include 
# the optimizer slots added by AdamOptimizer().
init_op = tf.initialize_all_variables()

# launch the graph in a session
sess = tf.Session()
# Actually intialize the variables
sess.run(init_op)
# now train your model
for ...:
  sess.run(train_op)

Por lo general, la gente utiliza algún tipo de decaimiento de la tasa de aprendizaje, para Adán parece poco común. ¿Hay alguna razón teórica para ello? ¿Puede ser útil combinar el optimizador Adam con el decaimiento?

46voto

Indie AI Puntos 48

Desde el punto de vista empírico: pruébalo sin duda, puede que encuentres algunas heurísticas de entrenamiento muy útiles, en cuyo caso, ¡compártelas!

Normalmente la gente utiliza algún tipo de decadencia, para Adam parece poco común. ¿Hay alguna razón teórica para esto? ¿Puede ser útil combinar el optimizador Adam con el decaimiento?

No he visto suficiente código de la gente que utiliza el optimizador ADAM para decir si esto es cierto o no. Si es cierto, tal vez sea porque ADAM es relativamente nuevo y la tasa de aprendizaje de la decadencia "mejores prácticas" no se han establecido todavía.

Sin embargo, quiero señalar que la disminución de la tasa de aprendizaje es en realidad parte de la garantía teórica de ADAM. En concreto, en el teorema 4.1 de su Artículo del ICLR Una de sus hipótesis es que la tasa de aprendizaje tiene una raíz cuadrada que decae, $\alpha_t = \alpha/\sqrt{t}$ . Además, para sus experimentos de regresión logística utilizan también el decaimiento de la raíz cuadrada.

En pocas palabras: no creo que nada en la teoría desaconseje el uso de reglas de decaimiento de la tasa de aprendizaje con ADAM. He visto que la gente informa de algunos buenos resultados usando ADAM y encontrar alguna buena heurística de entrenamiento sería increíblemente valioso.

13voto

bear Puntos 9

Adam utiliza la tasa de aprendizaje inicial, o el tamaño del paso según la terminología del artículo original, mientras calcula las actualizaciones de forma adaptativa. El tamaño del paso también proporciona un límite aproximado para las actualizaciones. En este sentido, creo que es una buena idea reducir el tamaño del paso hacia el final del entrenamiento. Esto también está respaldado por un trabajo reciente de NIPS 2017: El valor marginal de los métodos de gradiente adaptativo en el aprendizaje automático .

La última línea de la sección 4: Experimentos de aprendizaje profundo dice

Aunque la sabiduría convencional sugiere que Adam no necesita ser ajustado, encontramos que el ajuste de la tasa de aprendizaje inicial y el esquema de decaimiento de Adam produce mejoras significativas sobre su configuración por defecto en todos los casos.

Por último, pero no menos importante, el documento sugiere que utilicemos el SGD de todos modos.

9voto

jwenting Puntos 111

La razón por la que la mayoría de la gente no utiliza el decaimiento de la tasa de aprendizaje con Adam es que el propio algoritmo hace un decaimiento de la tasa de aprendizaje de la siguiente manera:

t <- t + 1
lr_t <- learning_rate * sqrt(1 - beta2^t) / (1 - beta1^t)

donde t0 es el paso de tiempo inicial, y lr_t es la nueva tasa de aprendizaje utilizada.

3voto

llj098 Puntos 131

Coincido con la opinión de @Indie AI, aquí aporto otros datos:

Desde CS231n :

... Muchos de estos métodos aún pueden requerir otros ajustes de hiperparámetros, pero el argumento es que se comportan bien para un rango más amplio de valores de hiperparámetros que la tasa de aprendizaje bruta. ...

Y también del periódico Replanteamiento de la arquitectura de inicio para la visión por ordenador Sección 8:

... mientras que nuestros mejores modelos se lograron utilizando RMSProp [21] con de- cayda de 0,9 y ε = 1,0. Usamos una tasa de aprendizaje de 0,045, decaída cada dos épocas usando una tasa exponencial de 0,94. ...

2voto

Mike J Puntos 11

Entrené un conjunto de datos con datos reales fáciles, si una persona se considera gorda o no, la altura y el peso - la creación de datos de cálculo de bmi, y si más de 27, la persona es gorda. Así que los datos básicos muy fácil. Cuando se utiliza Adam como optimizador, y la tasa de aprendizaje en 0,001, la exactitud sólo me conseguirá alrededor del 85% para 5 epocs, superando como máximo el 90% con más de 100 epocs probados.

Pero cuando se carga de nuevo en tal vez el 85%, y haciendo 0,0001 tasa de aprendizaje, la precisión será más de 3 epocs goto 95%, y 10 más epocs es de alrededor de 98-99%. No estoy seguro de si la tasa de aprendizaje puede ser inferior a 4 dígitos 0,0001, pero al cargar el modelo de nuevo y utilizar 0,00001, la precisión rondará el 99,20 - 100% y no bajará. Una vez más, no estoy seguro de si la tasa de aprendizaje se considera 0, pero de todos modos, eso es lo que tengo ...

Todo esto usando categorical_crossentropy, pero mean_square lo consigue al 99-100% también haciendo este método. AdaDelta, AdaGrad, Nesterov no pudieron obtener más del 65% de precisión, sólo para una nota.

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