1. Conmutar
  2. Computar
  3. Deducir
  4. Probabilidad
  5. Información
  6. Vectores
  7. Derivadas
  8. Optimizar
  9. Neuronas
  10. Generalizar
  11. Atención
  12. LLM

Capítulo 06 · Cálculo

¿Hacia dónde se mueve el error?

Una red neuronal tiene miles de millones de perillas. Para saber cuál girar y en qué sentido hay que saber cómo cambia el error al mover cada una: su derivada. La regla de la cadena, que Leibniz escribió en 1676, permite calcularlas todas a la vez. Ese algoritmo se llama backpropagation.

Newton y Leibniz inventaron el cálculo, cada uno por su lado, en la segunda mitad del siglo XVII, para describir el movimiento de los planetas y la forma de las curvas. Tres siglos después, su herramienta central, la derivada, es la que permite a una red neuronal aprender. La idea es simple: si sabes cómo cambia el error cuando mueves un poco cada parámetro, sabes cómo moverlos para equivocarte menos.

La derivada: sensibilidad instantánea

La derivada de f en un punto x mide cuánto cambia f(x) al mover x una cantidad muy pequeña:

f′(x)=limh→0⁡f(x+h)−f(x)h.

Geométricamente es la pendiente de la recta tangente. El cociente con un h finito es la pendiente de una recta secante, que corta la curva en dos puntos. Al reducir h, la secante gira hasta coincidir con la tangente.

La secante (discontinua) pasa por x y x+h. Al reducir h, su pendiente se acerca a la derivada, que es la pendiente de la tangente. Fíjate en el punto donde la tangente queda horizontal (f′(x)=0): ahí la función tiene un mínimo o un máximo local.

El gradiente: la derivada con muchas variables

Una función de pérdida no depende de un número, sino de millones: ℒ(θ1,…,θn). Cada derivada parcial ∂ℒ/∂θi mide la sensibilidad respecto a un parámetro con los demás fijos, y el vector que las reúne todas es el gradiente:

∇ℒ(θ)=(∂ℒ∂θ1,…,∂ℒ∂θn).
Teorema (dirección de máximo ascenso)

Si ℒ es diferenciable en θ y ∇ℒ(θ)≠𝟎, entre todas las direcciones unitarias 𝐮 la derivada direccional D𝐮ℒ=∇ℒ⋅𝐮 es máxima cuando 𝐮 apunta como ∇ℒ y mínima cuando apunta en sentido contrario.

Demostración

Por Cauchy-Schwarz, −‖∇ℒ‖≤∇ℒ⋅𝐮≤‖∇ℒ‖ para ‖𝐮‖=1, y los extremos se alcanzan con 𝐮=±∇ℒ/‖∇ℒ‖.

De aquí sale la receta para aprender: muévete en la dirección de −∇ℒ, la de mayor descenso del error. Lo que hace falta es una forma eficiente de calcular el gradiente de una función con miles de millones de variables.

La regla de la cadena

Una red neuronal es una composición de muchas funciones sencillas, como una cadena de montaje. La regla de la cadena dice cómo se propaga la sensibilidad a lo largo de esa cadena. Leibniz la usó en unas notas de 1676, y su notación hace que parezca una simple simplificación de fracciones:

Teorema (regla de la cadena)

Si y=g(x) y z=f(y) son diferenciables, entonces

dzdx=dzdy⋅dydx,es decir,(f∘g)′(x)=f′(g(x))g′(x).

Con varias variables las derivadas se convierten en matrices jacobianas y el producto pasa a ser un producto de matrices: Jf∘g=JfJg.

Para una cadena larga, ℒ=fL(fL−1(⋯f1(x))), la derivada es un producto de muchos factores. El orden en que se multiplican no cambia el resultado, pero sí cambia muchísimo el coste del cálculo.

Grafos computacionales y retropropagación

Cualquier cálculo se puede dibujar como un grafo dirigido acíclico: los nodos son operaciones elementales y las aristas llevan los resultados intermedios. Aquí la teoría de grafos entra en la IA. Para una neurona que predice y^=σ(wx+b) y se equivoca ℒ=(y^−y)2, el grafo es el de la figura.

Retropropagación paso a paso. La pasada hacia delante calcula los valores (debajo de cada nodo). La pasada hacia atrás parte de ∂ℒ/∂ℒ=1 y multiplica por la derivada local de cada nodo en orden topológico inverso, dejando el gradiente encima de cada uno. Con «Aprender» se da un paso de descenso de gradiente sobre w y b: repítelo y verás cómo baja la pérdida.

Este algoritmo, la diferenciación automática en modo inverso, lo describió Seppo Linnainmaa en su tesis de máster de 1970. Paul Werbos propuso aplicarlo a redes neuronales en su tesis de 1974. El artículo de David Rumelhart, Geoffrey Hinton y Ronald Williams en Nature (1986) mostró que las redes entrenadas así aprenden representaciones internas útiles, y fue el que lo popularizó con el nombre de backpropagation.

Teorema (principio del gradiente barato; Baur-Strassen, 1983)

Si una función f:ℝn→ℝ se calcula con T operaciones elementales, su gradiente completo, con sus n derivadas parciales, se calcula en modo inverso con c⋅T operaciones, donde c es una constante pequeña (del orden de 3 a 5) que no depende de n.

Este es el resultado que hace posible el aprendizaje profundo. Calcular cada derivada por separado, moviendo un parámetro y midiendo el cambio, costaría n evaluaciones de la red: con 1011 parámetros, imposible. La retropropagación entrega todas las derivadas por el precio aproximado de dos o tres evaluaciones. Todas las bibliotecas actuales de IA (PyTorch, JAX, TensorFlow) son, en el fondo, motores de diferenciación automática.

Cuando el gradiente se desvanece

La regla de la cadena tiene una cara oscura. La sigmoide σ(z)=1/(1+e−z), la función de activación clásica, tiene derivada σ′(z)=σ(z)(1−σ(z))≤14. En una red con L capas sigmoides, el gradiente que llega a las primeras capas contiene un producto de L factores como esos:

|∂ℒ∂h1|≲∏ℓ=1L|σ′(zℓ)|‖Wℓ‖≤(14maxℓ⁡‖Wℓ‖)L.

Si los pesos son moderados, el gradiente se encoge exponencialmente con la profundidad y las primeras capas no aprenden. Sepp Hochreiter analizó este problema del gradiente que se desvanece en su tesis de 1991. Las soluciones llegaron en varias oleadas: las LSTM (1997), la activación ReLU, max⁡(0,z), cuya derivada vale 1 en la parte positiva, y las conexiones residuales (2015), hℓ+1=hℓ+F(hℓ), que abren una autopista por la que el gradiente circula sin atenuarse. Los Transformers usan las dos últimas.

Ya sabemos calcular hacia dónde baja el error. Falta decidir cuánto avanzar en esa dirección y qué garantías hay de llegar a alguna parte. Eso es la optimización.

Referencias

  1. S. Linnainmaa (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors. Tesis de máster, Universidad de Helsinki.
  2. P. J. Werbos (1974). Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences. Tesis doctoral, Harvard.
  3. W. Baur y V. Strassen (1983). «The complexity of partial derivatives». Theoretical Computer Science, 22(3).
  4. D. E. Rumelhart, G. E. Hinton y R. J. Williams (1986). «Learning representations by back-propagating errors». Nature, 323.
  5. S. Hochreiter (1991). Untersuchungen zu dynamischen neuronalen Netzen. Tesis de diploma, TU Múnich.
  6. A. Griewank y A. Walther (2008). Evaluating Derivatives, 2.ª ed. SIAM.
  7. K. He, X. Zhang, S. Ren y J. Sun (2016). «Deep Residual Learning for Image Recognition». CVPR.