Regla de la cadena multivariable

Nivel UniversitarioDificultad ★★★★★Concepto⌖ Ver en el mapa

¿Qué es?

Cuando una variable influye en la salida por varios caminos, se suman las aportaciones de cada camino, cada una producto de las derivadas locales a lo largo de él: ∂z∂x=∑i∂z∂ui∂ui∂x\frac{\partial z}{\partial x} = \sum_i \frac{\partial z}{\partial u_i}\frac{\partial u_i}{\partial x}. En forma matricial, las jacobianas se multiplican. Es exactamente lo que calcula la retropropagación sobre el grafo de una red.

¿Por qué existe?

Los cálculos reales se ramifican y se juntan: un peso afecta a muchas neuronas, que afectan todas a la pérdida. La regla de la cadena de una variable trata un único camino; la versión multivariable trata cualquier grafo acíclico dirigido de operaciones: cualquier programa sin bucles, o con ellos desenrollados.

Intuición

Dibuja el cálculo como un grafo: entradas abajo, la salida arriba, y cada arista etiquetada con una derivada parcial local. ∂(salida)/∂(entrada)\partial(\text{salida})/\partial(\text{entrada}) es la suma, sobre todos los caminos, de los productos de las etiquetas del camino. La retropropagación calcula todas esas sumas a la vez recorriendo el grafo desde arriba y acumulando en cada nodo «cuánto le importo a la salida» (el adjunto).

Definición formal

Si g:ℝn→ℝmg : \R^n \to \R^m es diferenciable en xx y f:ℝm→ℝpf : \R^m \to \R^p en g(x)g(x), entonces

Jf∘g(x)=Jf(g(x)) Jg(x).J_{f\circ g}(x) = J_f\big(g(x)\big)\,J_g(x).

Para z=f(u1,…,um)z = f(u_1, \dots, u_m) escalar con ui=ui(x)u_i = u_i(x): ∂z∂xj=∑i=1m∂z∂ui∂ui∂xj\frac{\partial z}{\partial x_j} = \sum_{i=1}^{m}\frac{\partial z}{\partial u_i}\frac{\partial u_i}{\partial x_j}.

Fórmulas

∂z∂x=∑i∂z∂ui ∂ui∂x\frac{\partial z}{\partial x} = \sum_{i}\frac{\partial z}{\partial u_i}\,\frac{\partial u_i}{\partial x}
JfL∘⋯∘f1=JfL⋯Jf2 Jf1J_{f_L\circ\cdots\circ f_1} = J_{f_L}\cdots J_{f_2}\,J_{f_1}
una red profunda: un producto de jacobianas
∂L∂W(ℓ)=δ(ℓ) (a(ℓ−1))𝖳,δ(ℓ)=((W(ℓ+1))𝖳δ(ℓ+1))⊙σ′(z(ℓ))\frac{\partial L}{\partial W^{(\ell)}} = \delta^{(\ell)}\,\big(a^{(\ell-1)}\big)^{\mathsf T}, \qquad \delta^{(\ell)} = \Big(\big(W^{(\ell+1)}\big)^{\mathsf T}\delta^{(\ell+1)}\Big)\odot\sigma'\big(z^{(\ell)}\big)
las ecuaciones de la retropropagación

¿Cómo se calcula?

El producto JL⋯J1J_L\cdots J_1 se puede evaluar de derecha a izquierda (modo directo: coste ∝ número de entradas) o de izquierda a derecha (modo inverso: coste ∝ número de salidas). Una pérdida tiene una salida y millones de entradas, así que el modo inverso gana por un factor de millones: esa elección es la retropropagación.

Ejemplo

z=xy+sin⁡xz = xy + \sin x con x=t2x = t^2, y=ety = e^t. Dos caminos de tt a zz (por xx y por yy): dzdt=(y+cos⁡x)⋅2t+x⋅et=(et+cos⁡t2) 2t+t2et\frac{\dd z}{\dd t} = (y + \cos x)\cdot 2t + x\cdot e^t = (e^t + \cos t^2)\,2t + t^2e^t.

¿Por qué importa?

Es el contenido matemático de la retropropagación y de toda librería de diferenciación automática (PyTorch, JAX, TensorFlow). También da las velocidades de un robot a través de la cadena cinemática y las sensibilidades del diseño de ingeniería (los métodos adjuntos en CFD y predicción meteorológica son la misma idea del modo inverso).

Aplicaciones en informática

  • Predicción meteorológica y clima★★★★★avanzadaFísica y simulación

    La asimilación de datos 4D-Var usa modelos adjuntos (modo inverso) para ajustar el estado inicial de las predicciones.

Dónde aparece en IA

  • Retropropagación (backpropagation)★★★★★fundamentalIA y machine learning

    Retropropagación = la regla de la cadena multivariable evaluada en orden inverso sobre el grafo de la red.

  • Diferenciación automática★★★★★fundamentalIA y machine learning

    Los modos directo e inverso son los dos órdenes naturales de multiplicar la cadena de jacobianas.

¿Dónde se utiliza?

Temas de informática a los que se llega desde aquí, con la cadena de ideas que lleva a ellos:

Qué depende de él

Ejercicios

1Cálculo directo

Si w=f(x,y)w = f(x, y) con x=rcos⁡θx = r\cos\theta, y=rsin⁡θy = r\sin\theta, expresa ∂w/∂r\partial w/\partial r y ∂w/∂θ\partial w/\partial\theta.

Solución

wr=fxcos⁡θ+fysin⁡θw_r = f_x\cos\theta + f_y\sin\theta, wθ=−fxrsin⁡θ+fyrcos⁡θw_\theta = -f_x r\sin\theta + f_y r\cos\theta.

2IA

Una red calcula L=ℓ(W2 σ(W1x))L = \ell(W_2\,\sigma(W_1x)). Escribe ∂L/∂W1\partial L/\partial W_1 con la regla de la cadena y di qué factores se reutilizan de ∂L/∂W2\partial L/\partial W_2.

Solución

Sea z1=W1xz_1 = W_1x, a=σ(z1)a = \sigma(z_1), z2=W2az_2 = W_2a. Con g=∂ℓ/∂z2g = \partial\ell/\partial z_2: ∂L/∂W2=g a𝖳\partial L/\partial W_2 = g\,a^{\mathsf T} y ∂L/∂W1=((W2𝖳g)⊙σ′(z1))x𝖳\partial L/\partial W_1 = \big((W_2^{\mathsf T}g)\odot\sigma'(z_1)\big)x^{\mathsf T}. El gradiente que llega desde arriba, gg, se calcula una vez y se reutiliza: ese reaprovechamiento es lo que hace barata la retropropagación.

↑ ↓ para navegar · ↵ · Esc