Leyes del movimiento de Newton: el descenso del gradiente original

Explorando el lenguaje compartido del descenso de gradiente y las ecuaciones de movimiento de Newton

Foto por Luddmyla. en desempaquetar

Recuerdo el primer curso sobre Aprendizaje Automático que tomé durante la licenciatura como estudiante de física en la escuela de ingeniería. En otras palabras, yo era un outsider. Mientras el profesor explicaba el algoritmo de retropropagación mediante descenso de gradiente, yo tenía esta pregunta algo vaga en mi cabeza: "¿Es el descenso de gradiente un algoritmo aleatorio?" Antes de levantar la mano para preguntarle al profesor, el ambiente poco familiar me hizo pensar dos veces; Me encogí un poquito. De repente, la respuesta me golpeó.

Esto es lo que pensé.

Descenso de gradiente

Para decir qué es el descenso de gradiente, primero debemos definir el problema de entrenar una red neuronal, y podemos hacerlo con una descripción general de cómo aprenden las máquinas.

Descripción general del entrenamiento de una red neuronal

En todas las tareas de redes neuronales supervisadas, tenemos una predicción y el valor real. Cuanto mayor sea la diferencia entre la predicción y el valor real, peor será nuestra red neuronal a la hora de predecir los valores. Por lo tanto, creamos una función llamada función de pérdida, generalmente denotado como l, que cuantifica cuánta diferencia hay entre el valor real y el valor previsto. La tarea de entrenar la red neuronal es actualizar los pesos y sesgos (para abreviar, los parámetros) para minimizar la función de pérdida. Ése es el panorama general del entrenamiento de una red neuronal, y "aprendiendo" es simplemente actualizar los parámetros para que se ajusten mejor a los datos reales, es decir, minimizar la función de pérdida.

Optimización mediante descenso de gradiente

El descenso de gradiente es una de las técnicas de optimización utilizadas para calcular estos nuevos parámetros. Dado que nuestra tarea es elegir los parámetros para minimizar la función de pérdida, necesitamos un criterio para dicha elección. La función de pérdida que estamos tratando de minimizar es una función de la salida de la red neuronal, por lo que matemáticamente la expresamos como L = L(y_nn, y). Pero la salida de la red neuronal y_nn también depende de sus parámetros, por lo que y_nn = y_nn(θ), dónde θ es un vector que contiene todos los parámetros de nuestra red neuronal. En otras palabras, la función de pérdida en sí es función de los parámetros de las redes neuronales.

Tomando prestados algunos conceptos del cálculo vectorial, sabemos que para minimizar una función es necesario ir en contra de su degradado, ya que el gradiente apunta en la dirección del aumento más rápido de la función. Para tener algo de intuición, echemos un vistazo a lo que L(θ) podría verse como en la Fig. 1.

Figura 1: Superficie que muestra L(w1,w2) en función de w1 y w2. Imagen del autor.

Aquí tenemos una intuición clara de lo que es deseable y lo que no cuando se entrena una red neuronal: queremos que los valores de la función de pérdida sean más pequeños, por lo que si comenzamos con los parámetros w1 y w2 que resultan en una función de pérdida en el región amarilla/naranja, queremos deslizarnos hacia la superficie en la dirección de la región violeta.

Este "deslizándose por" El movimiento se logra mediante el método de descenso de gradiente. Si nos ubicamos en la región más brillante de la superficie, el gradiente continuará apuntando hacia arriba, ya que es la dirección de aumento máximo rápido. Luego, yendo en la dirección opuesta (por lo tanto, gradiente descendencia) crea un movimiento en la región de disminución máximamente rápida.

Para ver esto, podemos trazar el vector de descenso de gradiente, como se muestra en la Fig. 2. En esta figura, tenemos un gráfico de contorno que muestra la misma región y la misma función que se muestra en la Fig. 1, pero los valores de la función de pérdida Ahora están codificados en el color: cuanto más brillantes, más grandes.

Figura 2: Gráfico de contorno que muestra el vector apuntando en la dirección del descenso del gradiente. Imagen del autor.

Podemos ver que si elegimos un punto en la región amarilla/naranja, el vector de descenso del gradiente apunta en la dirección que llega más rápido a la región violeta.

Un buen descargo de responsabilidad es que, por lo general, una red neuronal puede contener una cantidad arbitrariamente grande de parámetros (¡GPT 3 tiene más de 100 mil millones de parámetros!), lo que significa que estas visualizaciones agradables son completamente imprácticas en aplicaciones de la vida real, y la optimización de parámetros en las redes neuronales es suele ser un problema de muy altas dimensiones.

Matemáticamente, el algoritmo de descenso de gradiente viene dado por

Aquí, θ_(n+1) son los parámetros actualizados (el resultado de deslizarse hacia abajo por la superficie de la Fig. 1); θ_(n) son los parámetros con los que comenzamos; ρ se llama tasa de aprendizaje (qué tan grande es el paso hacia la dirección hacia la que apunta el descenso del gradiente); y ∇L es el gradiente de la función de pérdida calculada en el punto inicial θ_(norte). que le da el nombre descendencia Aquí está el signo menos delante.

Las matemáticas son clave aquí porque veremos que la Segunda Ley del Movimiento de Newton tiene la misma formulación matemática que la ecuación de descenso del gradiente.

Segunda ley de Newton

La segunda ley del movimiento de Newton es probablemente uno de los conceptos más importantes de la mecánica clásica, ya que explica cómo se relacionan la fuerza, la masa y la aceleración. Todo el mundo conoce la formulación de la segunda ley de Newton en la escuela secundaria:

donde F es la fuerza, m es la masa y a la aceleración. Sin embargo, la formulación original de Newton estaba en términos de una cantidad más profunda: impulso. El momento es el producto entre la masa y la velocidad de un cuerpo:

y puede ser interpretado como el cantidad de movimiento de un cuerpo. La idea detrás de la segunda ley de Newton es que para cambiar el momento de un cuerpo, es necesario perturbarlo de alguna manera, y esta perturbación se llama fuerza. Por tanto, una formulación clara de la segunda ley de Newton es

Esta formulación funciona para todas las fuerzas que se puedan imaginar, pero nos gustaría tener un poco más de estructura en nuestra discusión y, para ganar estructura, necesitamos limitar nuestro dominio de posibilidades. Hablemos de fuerzas y potenciales conservadores.

Fuerzas y potenciales conservadores.

Una fuerza conservativa es una fuerza que no disipa energía. Significa que, cuando estamos en un sistema en el que intervienen sólo fuerzas conservativas, la energía total es constante. Esto debe parecer muy restrictivo, pero en realidad las fuerzas más fundamentales de la naturaleza son conservadoras, como la gravedad y la fuerza eléctrica.

Para cada fuerza conservativa, asociamos algo llamado potencial. Este potencial está relacionado con la fuerza mediante la ecuación

en una dimensión. Si observamos más de cerca las dos últimas ecuaciones presentadas, llegamos a la segunda ley del movimiento para campos conservadores:

Dado que las derivadas son algo complicadas de manejar, y en ciencias de la computación aproximamos las derivadas como diferencias finitas de todos modos, reemplacemos d con Δ:

Sabemos que Δ significa "tomar el valor actualizado y restar por el valor actual". Por lo tanto, podemos reescribir la fórmula anterior como

Esto ya se parece bastante a la ecuación de descenso de gradiente que se muestra en algunas líneas arriba. Para que se parezca aún más, sólo tenemos que mirarlo en tres dimensiones, donde el degradado surge de forma natural:

Vemos una clara correspondencia entre el descenso del gradiente y la formulación mostrada arriba, que se deriva completamente de la física newtoniana. El impulso de un cuerpo (y puedes leer esto como velocidad si lo prefieres) siempre apuntará hacia la dirección donde el potencial disminuye más rápido, con un tamaño de paso dado por Δt.

Palabras finales y conclusiones

Por tanto, podemos relacionar el potencial, dentro de la formulación newtoniana, con la función de pérdida en el aprendizaje automático. El vector de impulso es similar al vector de parámetros, que estamos tratando de optimizar, y la constante de paso de tiempo es la tasa de aprendizaje, es decir, qué tan rápido nos estamos moviendo hacia el mínimo de la función de pérdida. Por lo tanto, una formulación matemática similar muestra que estos conceptos están vinculados y presentan una forma agradable y unificada de verlos.

Si te lo estás preguntando, la respuesta a mi pregunta al principio es "No". No hay aleatoriedad en el algoritmo de descenso de gradiente ya que replica lo que hace la naturaleza todos los días: la trayectoria física de una partícula siempre intenta encontrar una manera de descansar en el potencial más bajo posible a su alrededor. Si dejas caer una pelota desde cierta altura, siempre tendrá la misma trayectoria, sin aleatoriedad. Cuando veas a alguien en una patineta deslizándose por una rampa empinada, recuerda: eso es, literalmente, la naturaleza aplicando el algoritmo de descenso de gradiente.

La forma en que vemos un problema puede influir en su solución. En este artículo, no les he mostrado nada nuevo en términos de informática o física (de hecho, la física presentada aquí tiene aproximadamente 400 años), pero cambiar la perspectiva y vincular conceptos (aparentemente) no relacionados puede crear nuevos vínculos. e intuiciones sobre un tema.

Referencias

[1] Robert Kwiatkowski, Algoritmo de descenso de gradiente: una inmersión profunda2021.

[2] Nivaldo A. Lemos, Mecánica Analítica, Cambridge University Press, 2018.


Leyes del movimiento de Newton: el descenso del gradiente original fue publicado originalmente en Hacia la ciencia de datos en Medium, donde las personas continúan la conversación resaltando y respondiendo a esta historia.