Parámetros de aprendizaje
Parámetros de aprendizaje, Parte 2: Pendiente de gradiente acelerada basada en el momento y Nesterov
Veamos dos variantes simples pero muy útiles de la pendiente del gradiente.
En esta publicación, observamos cómo la limitación de la superficie suave de la pendiente de gradiente se puede superar utilizando el concepto de momento hasta cierto punto. Asegúrese de consultar la publicación de mi blog – Parámetros de aprendizaje, Parte 1: Pendiente de gradiente si no está seguro de qué se trata. A lo largo de la publicación del blog, trabajamos con el mismo problema de juguete introducido en la parte 1. Puede consultar todas las publicaciones en la serie Parámetros de aprendizaje haciendo clic en la etiqueta de inicio en la parte superior de esta publicación.
En la parte 1, vimos una ilustración clara de una curva donde se encuentra el gradiente puede ser pequeño en regiones suaves de la superficie de error, y esto podría ralentizar las cosas. Veamos qué impulso tiene para ofrecer superar este inconveniente.
Nota de cita: la mayoría del contenido y las cifras de este blog se tomaron directamente de la Lecture 5 de CS7015: Curso de aprendizaje profundo ofrecido por Profe. Mitesh Khapra en IIT-Madras.
Pendiente de pendiente basada en el impulso
La intuición detrás de MBGD desde la perspectiva del alpinista (sí, la misma metáfora trillada que usamos en la parte 1) es
Si estoy repetido Al pedírsele que se mueva en la misma dirección, entonces probablemente debería ganar algo de confianza y comenzar a dar pasos más grandes en esa dirección. Del mismo modo que una bola gana impulso mientras rueda por una pendiente.
Regla de actualización de impulso
En la regla de actualización de gradiente, acomodamos el concepto de impulso de la siguiente manera:
Además de la actualización actual, también observamos Historial de actualizaciones. Le recomiendo que se tome su tiempo para procesar la nueva regla de actualización e intente ponerla en un papel en la forma en que el término update cambia en cada paso. O sigue leyendo. Al desglosarlo obtenemos
Puede ver que la actualización actual es proporcional no solo al gradiente actual, sino también a los gradientes de los pasos anteriores, aunque su contribución se reduce cada vez por γ (gamma) [19659018]veces. Y así es como aumentamos la magnitud de la actualización en regiones suaves.
Momentum In Action
Modificamos el código de descenso del gradiente de vainilla (mostrado en la Parte 1 y también disponible aquí ) un poco como sigue:
https://medium.com/media/279bed457016568de9b24526afb52a44/href
A partir de ahora, solo trabajaremos con mapas de contorno. Visualizar cosas en 3-D puede ser engorroso, por lo que los mapas de contorno son una alternativa útil para representar funciones con entrada 2-D y salida 1-D. Si desconoce / no se siente cómodo con ellos, lea la sección 5 de de mi publicación de blog de cosas básicas – Parámetros de aprendizaje, Parte 0: Cosas básicas (incluso hay una prueba que puedes tomar para mejorar en la interpretación de ellos). Veamos cuán efectivo es el MBGD utilizando la misma red neuronal de juguete que presentamos en la parte 1.
Funciona. 100 iteraciones del descenso del gradiente de vainilla forman el parche negro, y es evidente que incluso en las regiones que tienen pendientes suaves, el descenso del gradiente basado en el impulso puede dar pasos sustanciales porque el impulso lo transporta.
En una nota crítica, se está moviendo rápido siempre bueno? ¿Habría una situación en la que el impulso nos haría sobrepasar y superar nuestra meta? Vamos a probar el MBGD cambiando nuestros datos de entrada para que terminemos con una superficie de error diferente.
Diga este que se muestra arriba, donde el error es alto en ambos lados del valle mínimo. ¿Podría el impulso seguir funcionando bien en estos casos o podría ser perjudicial en su lugar? Averigüémoslo.
Podemos observar que el descenso del gradiente basado en el momento oscila dentro y fuera del valle mínimo a medida que el impulso lo lleva fuera del valle. Esto nos hace dar muchos giros en U antes de converger finalmente. A pesar de estos giros en U, aún converge más rápido que el descenso del gradiente de vainilla. Después de 100 iteraciones, el método basado en el impulso ha alcanzado un error de 0,00001, mientras que el descenso del gradiente de vainilla sigue bloqueado con un error de 0,36.
¿Podemos hacer algo para reducir las oscilaciones / giros en U? Sí, Nesterov Accelerated Gradient Descent nos ayuda a hacer eso.
Nesterov Accelerated Gradient Pendiente
La intuición detrás de NAG se puede poner en una sola frase:
¡Mire hacia adelante antes de que salte!
La regla de actualización de NAG
Pero, ¿por qué mirar hacia adelante nos ayuda a evitar los excesos? Os exhorto a hacer una pausa y reflexionar. Si no está claro, estoy seguro de que quedará claro en los próximos minutos. Eche un vistazo a esta figura por un momento.
En la figura (a), la actualización 1 es positiva, es decir, el gradiente es negativo porque w_0 aumenta L disminuye. Incluso la actualización 2 también es positiva y puede ver que la actualización es ligeramente más grande que la actualización 1, gracias al impulso. En este momento, debería estar convencido de que la actualización 3 será más grande que las actualizaciones 1 y 2 simplemente por el impulso y el historial de actualizaciones positivas. Actualización 4 es donde las cosas se ponen interesantes. En el caso de vanilla momentum, debido al historial positivo, la actualización se sobrepasa y el descenso se recupera al hacer actualizaciones negativas.
Pero en el caso de NAG, cada actualización ocurre en dos pasos: primero, una actualización parcial, donde llegamos al look_ahead y luego la actualización final (vea la regla de actualización de NAG), vea la figura (b). Las primeras 3 actualizaciones de NAG son bastante similares al método basado en el impulso, ya que ambas actualizaciones (parcial y final) son positivas en esos casos. Pero la diferencia real se hace evidente durante la actualización 4. Como es habitual, cada actualización ocurre en dos etapas, la actualización parcial (4a) es positiva, pero la actualización final (4b) sería negativa como el gradiente calculado en w_lookahead [19659006] sería negativo (convéncete observando la gráfica). Esta actualización final negativa reduce ligeramente la magnitud general de la actualización, lo que aún resulta en un exceso, pero menor en comparación con el descenso del gradiente basado en el momento de la vainilla. Y así es como mi amigo es cómo NAG nos ayuda a reducir los sobreimpulsos, es decir, haciéndonos tomar giros en U más cortos.
NAG en acción
Actualizando ligeramente el código de impulso para realizar tanto la actualización parcial como la actualización completa. obtenemos el código para NAG.
https://medium.com/media/05c1cb0ef24b2841c789588814e2ef06/href
Comparemos la convergencia del método basado en el momento con NAG usando el mismo ejemplo de juguete y la misma superficie de error que usamos mientras
NAG ciertamente está haciendo oscilaciones más pequeñas / acortándose Giros en U incluso cuando se aproxima a los valles mínimos en la superficie de error. Mirar hacia el futuro ayuda a NAG a corregir su curso más rápido que el descenso de gradiente basado en el impulso. Por lo tanto, las oscilaciones son más pequeñas y las posibilidades de escapar del valle mínimo también son menores. Anteriormente, demostramos que mirar hacia atrás ayuda a * ejem momentum ahem * y ahora probamos que mirar hacia adelante también ayuda.
Conclusión
En esta publicación del blog, vimos dos versiones simples pero híbridas. del gradiente de pendiente que nos ayuda a converger más rápido – Descenso de gradiente basado en el momento y Descenso de gradiente acelerado de Nesterov (NAG) y también se explica por qué y dónde NAG supera el método basado en el momento de la vainilla. Observamos los matices en sus reglas de actualización, las implementaciones de los métodos por parte de Python y también ilustramos gráficamente su convergencia en un ejemplo de juguete. En la próxima publicación, nos desviaremos un poco y hablaremos sobre las versiones estocásticas de estos algoritmos.
Lea todo sobre esto en la próxima publicación de esta serie en:
- (Próximamente) Parámetros de aprendizaje, Parte 3: Estocástico Reconocimiento
Mucho crédito para Prof. Mitesh M Khapra y el curso de TAs de CS7015: Aprendizaje profundo por IIT Madras para contenido tan rico y visualizaciones creativas. Simplemente compilé las notas de la conferencia y los videos de la conferencia de manera concisa.
Parámetros de aprendizaje, Parte 2: Pendiente de gradiente acelerada basada en el impulso y de Nesterov se publicó originalmente en Hacia la ciencia de datos en Medium, donde la gente continúa la conversación resaltando y respondiendo a esta historia.