Diferenciación automática

Nivel AvanzadoDificultad ★★★★★Aplicación⌖ Ver en el mapa

¿Qué es?

Calcular derivadas exactas de programas aplicando la regla de la cadena a cada operación elemental. Ni simbólica (sin explosión de expresiones) ni numérica (sin error de truncamiento). El modo inverso da el gradiente de un escalar por una pequeña constante por el coste del programa.

Fórmulas

(a+bε)(c+dε)=ac+(ad+bc)ε,ε2=0(a + b\varepsilon)(c + d\varepsilon) = ac + (ad + bc)\varepsilon, \quad \varepsilon^2 = 0
modo directo con números duales
vˉi=∑j: i→jvˉj ∂vj∂vi\bar v_i = \sum_{j:\ i \to j} \bar v_j\,\frac{\partial v_j}{\partial v_i}
modo inverso: los adjuntos se propagan hacia atrás

¿Por qué importa?

Todo framework de deep learning es, en el fondo, un motor de diferenciación automática (autograd de PyTorch, JAX, TensorFlow). También impulsa el renderizado diferenciable, la física diferenciable y el análisis de sensibilidad en ciencia.

Las matemáticas que hay detrás

  • Derivada★★★★★fundamental

    La diferenciación automática calcula derivadas exactas de programas propagándolas por cada operación.

  • Reglas de derivación★★★★★fundamental

    La diferenciación automática aplica exactamente estas reglas, operación a operación, sobre números en vez de fórmulas.

  • Regla de la cadena★★★★★fundamental

    Los modos directo e inverso son dos órdenes de multiplicar la misma cadena de derivadas locales.

  • Regla de la cadena multivariable★★★★★fundamental

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

  • Composición★★★★★fundamental

    La diferenciación automática ve un programa como composición de operaciones primitivas y deriva cada una.

  • Derivadas de funciones elementales★★★★★fundamental

    Todo sistema de diferenciación automática incluye una tabla de derivadas de sus operaciones primitivas.

  • Derivada direccional★★★★★frecuente

    La diferenciación automática en modo directo con números duales calcula DufD_u f (un JVP) en una pasada.

  • Matriz jacobiana★★★★★fundamental

    La diferenciación automática calcula JVP (modo directo) y VJP (modo inverso) sin construir JJ.

  • Diferenciación numérica★★★★★frecuente

    La «comprobación de gradientes» compara los gradientes de la diferenciación automática con diferencias finitas para cazar errores.

¿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

Esta página tiene lo esencial. Un desarrollo más completo (intuición, definición formal, ejemplo resuelto) está en camino.

↑ ↓ para navegar · ↵ · Esc