Saltar al contenido

Comprensión de RMSprop: aprendizaje de redes neuronales más rápido

septiembre 28, 2021
0o9jCrrX4umP7cTBA

Comprensión de RMSprop: aprendizaje de redes neuronales más rápido

Vitaly Bushaev

2 de septiembre de 2018·7 min de lectura

Descargo de responsabilidad: presumo conocimientos básicos sobre algoritmos de optimización de redes neuronales. En particular, el conocimiento sobre SGD y SGD con impulso Será de mucha ayuda para entender esta publicación.

I. Introducción

RMSprop: es un algoritmo de optimización inédito diseñado para redes neuronales.s, propuesto por primera vez por Geoff Hinton en la lección 6 del curso en línea «Redes neuronales para el aprendizaje automático» [1]. RMSprop se encuentra en el ámbito de los métodos de tasa de aprendizaje adaptativo, que han ido ganando popularidad en los últimos años, pero que también han recibido algunas críticas.[6]. Es famoso por no haber sido publicado, pero es muy conocido; La mayoría de los marcos de aprendizaje profundo incluyen su implementación lista para usar.

Hay dos formas de introducir RMSprop. Primero, es verlo como la adaptación del algoritmo rprop para el aprendizaje por mini lotes. Fue la motivación inicial para desarrollar este algoritmo. Otra forma es mirar sus similitudes con Adagrad.[2] y ver RMSprop como una forma de lidiar con sus tasas de aprendizaje que disminuyen radicalmente. Intentaré llegar a ambos puntos para que quede más claro por qué funciona el algoritmo.

II. RPROP

Empecemos por comprender rprop : Algoritmo que se utiliza para la optimización de lotes completos. Rprop [3] intenta resolver el problema de que los gradientes pueden variar ampliamente en magnitudes. Algunos gradientes pueden ser pequeños y otros pueden ser enormes, lo que resulta en un problema muy difícil: tratar de encontrar una tasa de aprendizaje global única para el algoritmo. Si utilizamos el aprendizaje por lotes completo, podemos resolver este problema utilizando solo el signo del gradiente. Con eso, podemos garantizar que todas las actualizaciones de peso sean del mismo tamaño. Este ajuste ayuda mucho con los puntos de silla y las mesetas, ya que damos pasos lo suficientemente grandes incluso con pendientes pequeñas. Tenga en cuenta que no podemos hacer eso simplemente aumentando las tasas de aprendizaje, porque los pasos que damos con grandes gradientes serán aún mayores, lo que resultará en divergencia. Rprop combina la idea de utilizar solo el signo del gradiente con la idea de adaptar el tamaño del paso individualmente para cada peso. Entonces, en lugar de mirar la magnitud del gradiente, veremos el tamaño de paso definido para ese peso en particular. Y ese tamaño de paso se adapta individualmente con el tiempo, de modo que aceleramos el aprendizaje en la dirección que necesitamos. Para ajustar el tamaño del paso para cierto peso, se utiliza el siguiente algoritmo:

  1. Primero, miramos los signos de los dos últimos gradientes para el peso.
  2. Si tienen el mismo signo, eso significa que vamos en la dirección correcta y deberíamos acelerarlo en una pequeña fracción, lo que significa que deberíamos aumentar el tamaño del paso multiplicativamente (por ejemplo, por un factor de 1,2). Si son diferentes, eso significa que hicimos un paso demasiado grande y saltamos un mínimo local, por lo que deberíamos disminuir el tamaño del paso multiplicativamente (por ejemplo, por un factor de 0.5).
  3. Luego, limitamos el tamaño del paso entre algunos dos valores. Estos valores realmente dependen de su aplicación y conjunto de datos, los buenos valores que pueden ser predeterminados son 50 y una millonésima, lo cual es un buen comienzo.
  4. Ahora podemos aplicar la actualización de peso.

Tenga en cuenta que existen diferentes versiones del algoritmo rprop definido por los autores. He presentado el más simple para que se familiarice con él. Si bien me gusta definir los algoritmos de optimización formalmente con ecuaciones, este se expresa mejor a través del código; por lo que la regla de actualización rprop de la versión más simple puede verse de la siguiente manera:

III. Rprop a RMSprop

Rprop realmente no funciona cuando tenemos conjuntos de datos muy grandes y necesitamos realizar actualizaciones de pesos por mini lotes. ¿Por qué no funciona con mini lotes? Bueno, la gente lo ha intentado, pero le resultó difícil hacerlo funcionar. La razón por la que no funciona es que viola la idea central detrás del descenso de gradiente estocástico, que es cuando tenemos una tasa de aprendizaje lo suficientemente pequeña, promedia los gradientes en mini lotes sucesivos. Considere el peso, que obtiene el gradiente de 0.1 en nueve mini lotes y el gradiente de -0.9 en décimas de mini lote. Lo que nos gustaría es que esos gradientes se cancelen aproximadamente entre sí, de modo que permanezcan aproximadamente iguales. Pero no es lo que sucede con rprop. Con rprop, aumentamos el peso 9 veces y lo disminuimos solo una vez, por lo que el peso crece mucho más.

Para combinar la robustez de rprop (simplemente usando el signo del gradiente), la eficiencia que obtenemos de los mini lotes y el promedio de los mini lotes que permite combinar gradientes de la manera correcta, debemos mirar a rprop desde una perspectiva diferente. Rprop es equivalente a usar el gradiente pero también dividir por el tamaño del gradiente, por lo que obtenemos la misma magnitud sin importar cuán grande sea ese gradiente en particular. El problema con los mini lotes es que dividimos por gradientes diferentes cada vez, entonces, ¿por qué no forzar el número por el que dividimos para que sea similar para los mini lotes adyacentes? La idea central de RMSprop es mantener la media móvil de los gradientes al cuadrado para cada peso. Y luego dividimos el gradiente por la raíz cuadrada del cuadrado medio. Por eso se llama RMSprop (raíz cuadrada media). Con ecuaciones matemáticas, la regla de actualización se ve así:

1*R5q73YgObhvSPws9RpNmPA

mi[g] – media móvil de gradientes cuadrados. dC / dw: gradiente de la función de costo con respecto al peso. n – tasa de aprendizaje. Beta – parámetro de media móvil (buen valor predeterminado – 0,9)

Como puede ver en la ecuación anterior, adaptamos la tasa de aprendizaje dividiendo por la raíz del gradiente al cuadrado, pero como solo tenemos la estimación del gradiente en el mini-lote actual, necesitamos usar su promedio móvil. El valor predeterminado para el parámetro de media móvil que puede utilizar en sus proyectos es 0,9. Funciona muy bien para la mayoría de aplicaciones. En el código, el algoritmo podría verse así:

IV. Similitud con Adagrad.

Adagrad[2] son algoritmos de tasa de aprendizaje adaptativo que se parecen mucho a RMSprop. Adagrad agrega una escala de gradiente por elementos basada en la suma histórica de cuadrados en cada dimensión. Esto significa que mantenemos una suma acumulada de gradientes cuadrados. Y luego adaptamos la tasa de aprendizaje dividiéndola por esa suma. En código podemos expresarlo así:

¿Qué hace esta escala cuando tenemos un número de condición alto? Si tenemos dos coordenadas, una que siempre tiene gradientes grandes y otra que tiene gradientes pequeños, estaremos buceando por el número grande o pequeño correspondiente, por lo que aceleramos el movimiento entre direcciones pequeñas, y en la dirección donde los gradientes son grandes vamos. para reducir la velocidad a medida que dividimos por un número grande.

¿Qué sucede durante el curso del entrenamiento? Los pasos se hacen cada vez más pequeños, porque seguimos actualizando los graduados al cuadrado que crecen durante el entrenamiento. Entonces dividimos por el número más grande cada vez. En la optimización convexa, esto tiene mucho sentido, porque cuando nos acercamos a minina queremos reducir la velocidad. En un caso no convexo, es malo, ya que podemos quedarnos atascados en el punto de silla. Podemos considerar RMSprop como algoritmos que se ocupan un poco de esa preocupación.

Con RMSprop seguimos manteniendo esa estimación de gradientes cuadrados, pero en lugar de dejar que esa estimación se acumule continuamente durante el entrenamiento, mantenemos un promedio móvil de la misma.

V. Resultados

Encontré estas impresionantes visualizaciones para diferentes algoritmos de optimización que muestran cómo se comportan en diferentes situaciones.

1*Y2KPVGrVX9MQkeI8Yjy59Q

Fuente: https://imgur.com/a/Hqolp#NKsFHJb

Como puede ver, con el caso del punto de silla, RMSprop (línea negra) va directamente hacia abajo, realmente no importa cuán pequeños sean los gradientes, RMSprop escala la tasa de aprendizaje para que los algoritmos pasen por el punto de silla más rápido que la mayoría.

0*o9jCrrX4umP7cTBA

Fuente: https://imgur.com/a/Hqolp#NKsFHJb

En este caso, los algoritmos comienzan en un punto con gradientes iniciales muy grandes. RMSprop (línea negra) atraviesa casi el camino más óptimo, mientras que los métodos de impulso se sobrepasan mucho. Adagrad se vuelve inestable por un segundo allí.

VI. Conclusión (más información)

RMSprop es un optimizador bueno, rápido y muy popular. «Un vistazo a las tendencias en el aprendizaje automático» de Andrej Karpathy [4] muestra que es uno de los algoritmos de optimización más populares utilizados en el aprendizaje profundo, su popularidad solo es superada por Adam[5]. Si desea obtener más información sobre la optimización en el aprendizaje profundo, debe consultar algunas de las siguientes fuentes:

  1. El blog de Sebastian Ruder tiene varios artículos sobre tendencias en la optimización del aprendizaje profundo.
  2. fast.ai es un gran curso sobre aprendizaje profundo, pasan por los algoritmos de optimización más populares y los explican en hojas de Excel.
  3. El segundo curso de Andrew Ng de su especialización en aprendizaje profundo en Coursera también toca algoritmos populares, explicándolos de una manera muy clara.

VII. Referencias

[1] Geoffrey Hinton Neural Networks para curso en línea de aprendizaje automático. https://www.coursera.org/learn/neural-networks/home/welcome

[2] Adagrad: Duchi, J., Hazan, E. y Singer, Y. (2011). Métodos adaptativos de subgrado para el aprendizaje en línea y la optimización estocástica. Journal of Machine Learning Research, 12, 2121–2159. Obtenido de http://jmlr.org/papers/v12/duchi11a.html

[3] Christian Igel y Michael H ̈usken (2000). Mejora del algoritmo de aprendizaje Rprop. http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.1332

[4] Andrej Karpathy (2017). Un vistazo a las tendencias en el aprendizaje automático. https://medium.com/@karpathy/a-peek-at-trends-in-machine-learning-ab8a1085a106

[5] Kingma, DP y Ba, JL (2015). Adam: un método de optimización estocástica. Conferencia internacional sobre representaciones del aprendizaje, 1–13

[6] Ashia C.Wilson, Rebecca Roelofs, Mitchell Stern, Nati Srebro, Benjamin Recht (2017) El valor marginal de los métodos de gradiente adaptativo en el aprendizaje automático. arXiv: 1705.08292v2

close