Introducción al Deep Learning III: Métodos de optimización II

Gil Del Valle Martinez
SoldAI
Published in
6 min readMay 25, 2021

En el post anterior describimos algunos aspectos importantes de la dinámica de optimización del gradiente, entre ellos, la relación entre el gradiente y la función de pérdida, las técnicas de estimación del gradiente y los conceptos de decaimiento de pesos. En este artículo exploraremos algunos de los métodos de optimización más utilizados en el deep learning. Las técnicas enunciadas a continuación utilizan diferentes variantes del decaimiento de pesos para ajustar el learning rate de los parámetros de la red neuronal.

Momentum

La técnica de Momentum fue propuesta por Polyak en 1964. Esta estrategia toma en cuenta el gradiente de la iteración anterior para actualizar los pesos con el gradiente actual. La idea es que cuando la red neuronal está aprendiendo de manera intensa no tenga cambios abruptos en caso de que analice una estimación producida por datos ruidosos. Una analogía física que resulta útil para comprender lo anterior es pensar en una esfera descendiendo por una rampa. Si la pendiente de la rampa es pronunciada, la esfera ganará momentum y su velocidad de descenso será más rápida. Si por el contrario la pendiente no es pronunciada, la fricción hará que la esfera avance a menor velocidad. Si la esfera es nuestro learning rate, y la pendiente es el gradiente almacenado, cuando el gradiente anterior sea grande, las actualizaciones de los pesos serán mayores y por lo tanto el gradiente nuevo modificará la actualización de los pesos con la información nueva, pero sin perder la dirección del gradiente anterior.

La porción del gradiente que deseamos conservar se regula por un parámetro beta. Beta escala la “velocidad” de el gradiente anterior, y la nueva “velocidad” del gradiente se calcula con la porción beta del gradiente anterior, más la porción uno menos beta del gradiente actual como se ilustra en las ecuaciones de la Figura 1. Finalmente para realizar la actualización restamos a los parámetros de la red neuronal (pesos y sesgo) una porción de la velocidad del gradiente obtenida. La desventaja de la técnica de Momentum es que necesita optimizar dos parámetros, alfa y beta. Sin embargo, la literatura recomienda utilizar un valor de beta = 0.9, el cual funciona bien en la prácitica y require de los mismos métodos de optimización del parámetro alfa, con la diferencia que la red es “menos sensible” a la elección de este híper parámetro.

Adagrad

Adagrad (Adaptive Gradient) es uno de los métodos de optimización estocástica que adapta el learning rate para cada uno de los parámetros de la red neuronal. fue propuesta por Duchi, Hazan y Singer. Adagrad utiliza una estrategia online learning, en la cual se le asignan pesos de importancia relativa a cada parámetro. La principal ventaja de este algoritmo es que permite learning rates específicos para cada parámetro por lo que los paŕametros actualizados de manera más infrecuente reciben actualizaciones más grandes que aquellos actualizados con frecuencia.

Adagrad modifica el learning rate general (denotado en el artículo original por la letra griega eta), en cada momento utilizando los gradientes de los parámetros mediante la siguiente regla de actualización:

En la ecuación de la figura 3, gt es el gradiente en el tiempo t a lo largo de cada componente de theta. Gt es la matriz diagonal de la suma hasta el tiempo t de los gradientes pasados para todos los parámetros de theta en la diagonal. Eta es el learning rate general y epsilon es un término de smoothing (usualmente 1e -8) que previene la división por 0.

Una ventaja de Adagrad es que al modificar el learning rate en cada iteración, elimina la necesidad de optimizar el parámetro de la red neuronal manualmente. Sin embargo, la gran desventaja es que duplica el número de pesos que necesita aprender la red neuronal, aumentando el costo computaiconal. Esta desventaja hace que este algoritmo no sea demasiado utilizado en la práctica.

AdaDelta

AdaDelta es una técnica introducida por Matthew Zeiler en el artículo: ADADELTA: An adaptive learning rate method. Es una extensión de Adagrad que busca reducir la agresividad con la que se reduce monotónicamente el learning rate. AdaDelta restringe la ventana de gradientes pasados acumulados a un tamaño fijo.

En lugar de almacenar los gradientes previos, se define la suma de gradientes de forma recursiva como el promedio decayente de los pasados gradientes al cuadrado. El promedio actual en cada paso depende únicamente del promedio previo y el gradiente actual:

AdaDelta actualiza el gradiente utilizando el parámetro eta del learning rate general definiendo el diferencial del gradiente como sigue:

Las reglas de actualización de los parámetros de la red neuronal quedan de la siguiente manera:

Una de las ventajas de AdaDelta es que elimina la necesidad de definir un learning rate predefinido.

RMSprop

Originalmente propuesta por Geoffrey Hinton (uno de los ganadores del Turing award por sus contribuciones al Deep Learning). La motivación es que la magnitud de los gradientes pueden diferir para distintos pesos y pueden cambiar durante el aprendizaje, haciendo complicado escoger un learning rate global.

RMSprop es uno de los algoritmos más utilizados en la práctica junto con ADAM. Hinton propone un valor de 0.9 para el parámetro gammay 0.001 para eta. El cálculo de las esperanzas de los gradientes pasados, ha demostrado un buen rendimiento en la práctica.

ADAM

ADAM toma su nombre de parte del acrónimo ADAptive Moment estimation o estimación de momento adaptativo. Este método también calcula el learning rate para cada parámetro, pero en adición mantiene un promedio exponencialmente decreciente de los gradientes previos al cuadrado, de manera similar a momentum. Sin embargo, incorpora el promedio de los gradientes pasados.

Introducido por Kingma y Ba en el artículo ADAM: A method for stochastic optimization.

Las actualizaciones de los parámetros de momentum y velocidad son gobernadas por las siguientes ecuaciones:

Conclusiones

Los métodos de optimización basados en gradiente presentan muchos aspectos relativos a la búsqueda estocástica debido a que desconocemos la forma real de la función que estamos optimizando. Debido a lo anterior es común encontrar problemas al aplicarlos a funciones de pérdida con datos del mundo real. Para superar estos problemas es necesario utilizar diferentes estrategias que nos permitan optimizaciones robustas aún cuando nos enfrentemos a datos ruidosos. Para conseguir lo anterior se han propuesto diferentes estrategias de decaimiento de pesos, las cuales ayudan a controlar los híper parámetros de actualización de los parámetros de la red neuronal, llevándonos a optimizaciones más rápidas y estables. Una gran ventaja al utilizar los optimizadores es que las bibliotecas de aprendizaje profundo como keras y pytorch ya los tienen implementados facilitando la experimentación. Puedes revisar la aplicación de los diferentes optimizadores y la compración de las gráficas de las funciones perdida en Github. En el presente artículo hemos revisado algunas de los más populares métodos de optimización basada en gradiente, sin embargo, existe una gran gama de técnicas propuestas y estudiadas. Si te interesa conocer un poco más de éstas, un excelente recurso es el sitio de papers with code. En la siguiente entrega de la serie exploraremos el uso de estrategias de regularización aplicadas a redes neuronales profundas.

--

--