El artículo de Adam dice: "... muchas funciones objetivas se componen de una suma de subfunciones evaluadas en diferentes submuestras de datos; en este caso, la optimización se puede hacer más eficiente tomando pasos de gradiente con subfunciones individuales ..." Aquí, simplemente significa que la función objetivo es una suma de errores sobre los ejemplos de entrenamiento, y el entrenamiento puede realizarse en ejemplos individuales o minibatches. Esto es lo mismo que en el descenso de gradiente estocástico (SGD), que es más eficiente para problemas a gran escala que el entrenamiento por lotes porque las actualizaciones de parámetros son más frecuentes.
En cuanto a por qué trabaja Adam, usa algunos trucos.
Uno de estos trucos es el impulso, que puede dar una convergencia más rápida. Imagine una función objetivo que tiene la forma de un cañón largo y estrecho que gradualmente se inclina hacia un mínimo. Digamos que queremos minimizar esta función usando el descenso de gradiente. Si comenzamos desde algún punto en la pared del cañón, el gradiente negativo apuntará en la dirección del descenso más pronunciado, es decir, principalmente hacia el suelo del cañón. Esto se debe a que las paredes del cañón son mucho más empinadas que la pendiente gradual del cañón hacia el mínimo. Si la tasa de aprendizaje (es decir, el tamaño del escalón) es pequeña, podríamos descender al fondo del cañón y luego seguirla hacia el mínimo. Pero, el progreso sería lento. Podríamos aumentar la tasa de aprendizaje, pero esto no cambiaría la dirección de los pasos. En este caso, sobrepasaríamos el piso del cañón y terminaríamos en la pared opuesta. Luego repetiríamos este patrón, oscilando de pared a pared mientras avanzamos lentamente hacia el mínimo. El impulso puede ayudar en esta situación.
Momentum simplemente significa que se agrega una fracción de la actualización anterior a la actualización actual, de modo que las actualizaciones repetidas en una dirección particular se componen; acumulamos impulso, moviéndonos más y más rápido en esa dirección. En el caso del cañón, acumularíamos ímpetu en la dirección del mínimo, ya que todas las actualizaciones tienen un componente en esa dirección. Por el contrario, moverse hacia adelante y hacia atrás a través de las paredes del cañón implica invertir constantemente la dirección, por lo que el impulso ayudaría a amortiguar las oscilaciones en esas direcciones.
Otro truco que usa Adam es seleccionar adaptativamente una tasa de aprendizaje separada para cada parámetro. Los parámetros que normalmente recibirían actualizaciones más pequeñas o menos frecuentes reciben actualizaciones más grandes con Adam (lo contrario también es cierto). Esto acelera el aprendizaje en los casos en que las tasas de aprendizaje adecuadas varían según los parámetros. Por ejemplo, en redes profundas, los gradientes pueden volverse pequeños en las primeras capas, y tiene sentido aumentar las tasas de aprendizaje para los parámetros correspondientes. Otro beneficio de este enfoque es que, dado que las tasas de aprendizaje se ajustan automáticamente, la sintonización manual se vuelve menos importante. El SGD estándar requiere un ajuste cuidadoso (y posiblemente un ajuste en línea) de las tasas de aprendizaje, pero esto es menos cierto con Adam y los métodos relacionados. Todavía es necesario seleccionar hiperparámetros,
Métodos relacionados :
Momentum a menudo se usa con SGD estándar. Una versión mejorada se llama impulso de Nesterov o gradiente acelerado de Nesterov. Otros métodos que usan tasas de aprendizaje ajustadas automáticamente para cada parámetro incluyen: Adagrad, RMSprop y Adadelta. RMSprop y Adadelta resuelven un problema con Adagrad que podría hacer que el aprendizaje se detenga. Adam es similar a RMSprop con impulso. Nadam modifica a Adam para usar el impulso de Nesterov en lugar del impulso clásico.
referencias :
Kingma y Ba (2014) . Adam: un método para la optimización estocástica.
Goodfellow y col. (2016) . Aprendizaje profundo, capítulo 8.
Diapositivas del curso de Geoff Hinton
Dozat (2016) . Incorporando Nesterov Momentum en Adam.