Derivadas parciales y el gradiente en redes neuronales
Índice de contenidos
- Puntos clave
- Derivadas parciales
- El vector gradiente
- Qué dirección indica el gradiente
- Gradiente de una función de varias variables
- Ejemplo numérico
- Preguntas frecuentes
- ¿En qué se diferencia una derivada parcial de una derivada normal?
- ¿Por qué el gradiente apunta al ascenso más pronunciado y no al descenso?
- ¿Qué relación tiene el gradiente con el entrenamiento de una red?
- Conclusión
- Fuentes
Una derivada parcial mide cómo cambia una función cuando movemos solo una de sus variables y dejamos fijas las demás. El gradiente reúne todas esas derivadas parciales en un vector que apunta hacia el ascenso más pronunciado; en una red neuronal, moverse en sentido contrario reduce el error y guía el entrenamiento.
Una derivada parcial mide el cambio de una función cuando movemos una sola variable, y el gradiente agrupa todas esas derivadas en un vector que señala hacia dónde crece más rápido la función. En una red neuronal ese vector es la brújula del entrenamiento: el error depende de miles de pesos a la vez, y el gradiente nos dice cómo ajustarlos todos de golpe. Esta guía explica qué es una derivada parcial, cómo se construye el gradiente y por qué apunta en la dirección del ascenso más pronunciado. La misma explicación está disponible en inglés.
Puntos clave
- Una derivada parcial mide cómo cambia una función de varias variables cuando alteramos solo una de ellas y mantenemos fijas las demás.
- El gradiente es el vector que reúne todas las derivadas parciales: $\nabla f = \left(\frac{\partial f}{\partial x_1}, \dots, \frac{\partial f}{\partial x_n}\right)$.
- El gradiente apunta en la dirección del ascenso más pronunciado; su sentido contrario, la del descenso más rápido, es la que usa el entrenamiento.
- En una red, el error $L$ depende de todos los pesos $W$ a la vez, así que necesitamos derivadas parciales respecto a cada peso, no una sola derivada.
- Con un paso de aprendizaje $\eta$ pequeño, restar el gradiente reduce la pérdida: en el ejemplo del final baja de 25 a 16 en una sola iteración.
Derivadas parciales
Cuando una función depende de una sola variable, su derivada mide la pendiente en cada punto, la tasa de cambio que ya vimos en derivadas, la tasa de cambio. El problema es que la pérdida de una red no depende de un número, sino de muchísimos pesos.
Ahí entra la derivada parcial. La idea es sencilla: para derivar respecto a una variable, tratamos todas las demás como si fueran constantes. Si $f(x,y)=x^2+y^2$, la derivada parcial respecto a $x$ es $\frac{\partial f}{\partial x}=2x$ (la $y$ se congela y su término desaparece), y respecto a $y$ es $\frac{\partial f}{\partial y}=2y$. Cada parcial responde a una pregunta local: si muevo un poco esta variable y no toco las demás, ¿cuánto y en qué sentido cambia la salida?
El símbolo $\partial$ (una «d» redondeada) distingue la derivada parcial de la ordinaria $d$. En Khan Academy[1] puedes ver la interpretación geométrica: cada parcial es la pendiente de la superficie a lo largo de un eje.
El vector gradiente
Si calculamos la derivada parcial respecto a cada variable y las apilamos en una lista, obtenemos el gradiente. Para una función de $n$ variables se escribe así:
$$\nabla f = \left(\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, \dots, \frac{\partial f}{\partial x_n}\right)$$
El símbolo $\nabla$ se llama nabla. El gradiente no es un número: es un vector con tantas componentes como variables tenga la función. En nuestro ejemplo $f(x,y)=x^2+y^2$, el gradiente es $\nabla f=(2x,2y)$, un vector de dos componentes que cambia en cada punto del plano.
Ver la derivación
Para $f(x,y)=x^2+y^2$ derivamos respecto a $x$ tratando $y$ como constante: $\frac{\partial f}{\partial x}=2x$, porque el término $y^2$ es constante y su derivada vale $0$. Del mismo modo, respecto a $y$: $\frac{\partial f}{\partial y}=2y$. Apilando ambas parciales obtenemos $\nabla f=(2x,2y)$.
Esta es la pieza que faltaba para entrenar redes. Como el error $L$ depende de cada peso $W$ de cada capa, su gradiente tiene una componente por peso. En un modelo real eso significa un vector con millones de componentes, una por parámetro. Calcularlo entero de forma eficiente es justo lo que resuelve la retropropagación, apoyada en la regla de la cadena.
Qué dirección indica el gradiente
Aquí está la propiedad que lo hace tan útil: el gradiente apunta en la dirección en la que la función crece más deprisa, el ascenso más pronunciado. Su longitud indica cómo de rápido crece. Si estás en una ladera y quieres subir por el camino más empinado, el gradiente marca esa dirección; si quieres bajar, tomas la opuesta.
El entrenamiento quiere bajar el error, así que se mueve en la dirección del gradiente negativo. Como resumen Goodfellow, Bengio y Courville en «Deep Learning», «podemos reducir f moviéndonos en la dirección del gradiente negativo». Esa idea es el descenso de gradiente, y la regla de actualización de cada peso es $W \leftarrow W-\eta\cdot\nabla L$, donde $\eta$ es el paso de aprendizaje. El método se remonta a 1847, cuando Augustin-Louis Cauchy lo propuso para resolver sistemas de ecuaciones, mucho antes de que existieran las redes neuronales.
El signo menos de la regla de actualización es lo que convierte el ascenso en descenso: como el gradiente $\nabla L$ señala hacia donde el error crece más deprisa, restarlo mueve los pesos justo hacia donde el error baja.
Un detalle importante: el gradiente solo describe la pendiente justo en el punto donde estás. Por eso el entrenamiento avanza a pasos pequeños y recalcula el gradiente en cada uno, en lugar de dar un único salto largo.
Gradiente de una función de varias variables
Generalicemos. Una capa de una red calcula $z=Wx+b$ y luego una activación $a=f(z)$; al encadenar capas, la pérdida final $L$ es una función de todos los pesos. Su gradiente respecto a los pesos de la capa $l$ se denota $\nabla_W L$, y contiene una derivada parcial por cada entrada de la matriz $W$.
La clave es que no hay nada nuevo respecto al caso de dos variables: solo hay más componentes. Cada derivada parcial se calcula congelando el resto de pesos, y la regla de la cadena permite obtenerlas todas en una única pasada hacia atrás. Por eso una tarjeta gráfica, que multiplica matrices en paralelo, puede calcular el gradiente de millones de parámetros en milisegundos. La Wikipedia sobre el gradiente[2] formaliza esta generalización a cualquier número de dimensiones.
Ejemplo numérico
Tomemos $f(x,y)=x^2+y^2$, una superficie con forma de cuenco cuyo mínimo está en el origen. Queremos llegar al fondo partiendo del punto $(3,4)$.
Primero, el gradiente vale $\nabla f=(2x,2y)$. En el punto $(3,4)$ eso da el vector $(6,8)$, cuya longitud es 10. Ese vector apunta hacia arriba y hacia afuera, alejándose del mínimo, tal como esperábamos del ascenso más pronunciado.
Para bajar, damos un paso en sentido contrario con $\eta=0{,}1$:
$$(x,y)\leftarrow(3,4)-0{,}1\cdot(6,8)=(2{,}4,\ 3{,}2)$$
Comprobemos que ha funcionado. La pérdida inicial era $f(3,4)=9+16=25$. Tras el paso, $f(2{,}4,\ 3{,}2)=5{,}76+10{,}24=16$. La pérdida ha bajado de 25 a 16 en una sola iteración, sin haber calculado nada más que dos derivadas parciales. Repitiendo el proceso, el punto se acerca cada vez más al mínimo. Ese bucle, escalado a millones de pesos, es exactamente lo que ocurre dentro de una red durante el entrenamiento.
Preguntas frecuentes
¿En qué se diferencia una derivada parcial de una derivada normal?
La derivada normal se aplica a funciones de una sola variable y mide su pendiente. La derivada parcial se usa cuando hay varias variables: deriva respecto a una y trata las demás como constantes. Una función de tres variables tiene tres derivadas parciales, una por eje.
¿Por qué el gradiente apunta al ascenso más pronunciado y no al descenso?
Es una propiedad matemática del propio vector: entre todas las direcciones posibles, la del gradiente es la que produce el mayor aumento de la función. El descenso de gradiente aprovecha justo lo contrario y se mueve hacia $-\nabla f$, por eso el error baja.
¿Qué relación tiene el gradiente con el entrenamiento de una red?
El entrenamiento ajusta los pesos para reducir el error. El gradiente de la pérdida indica cómo cambiar cada peso, y la regla $W \leftarrow W-\eta\cdot\nabla L$ da un paso en la dirección que más reduce ese error. Sin gradiente no habría forma sistemática de saber qué pesos mover.
Conclusión
Las derivadas parciales miden el efecto local de cada variable, y el gradiente las junta en un vector que señala el ascenso más pronunciado. Restar ese vector, escalado por el paso de aprendizaje, hace que la pérdida baje, como vimos al pasar de 25 a 16 en un solo paso. Esa maquinaria, repetida sobre millones de parámetros, es el motor del aprendizaje profundo. El siguiente paso natural es ver cómo la retropropagación calcula ese gradiente capa por capa, dentro del mapa de las matemáticas de las redes neuronales.