Apéndice A. Autodiff
Este apéndice de explica cómo funciona la función de diferenciación automática (autodiff) de PyTorch, y cómo se compara con otras soluciones.
Supongamos que defines una función f(x, y) = x2y + y + 2, y necesitas sus derivadas parciales ∂f/∂x y ∂f/∂y, normalmente para realizar el descenso de gradiente (o algún otro algoritmo de optimización). Tus principales opciones son la diferenciación manual, la aproximación por diferencias finitas, la autodiferenciación en modo directo y la autodiferenciación en modo inverso. PyTorch implementa el modo inverso de autodifusión, pero para entenderlo bien, es útil ver primero las otras opciones. Así que vamos a repasar cada una de ellas, empezando por la diferenciación manual.
Diferenciación manual
El primer enfoque de para calcular derivadas es coger un lápiz y un trozo de papel y utilizar tus conocimientos de cálculo para deducir la ecuación adecuada. Para la función f(x, y) que acabamos de definir, no es demasiado difícil; sólo tienes que utilizar cinco reglas:
-
La derivada de una constante es 0.
-
La derivada de λx es λ (donde λ es una constante).
-
La derivada de xλ es λxλ - 1, por lo que la derivada de x2 es2x.
-
La derivada de una suma de funciones es la suma de las derivadas de esas funciones.
-
La derivada de λ veces una función es λ veces su derivada.
A partir de estas reglas, puedes derivar la ecuación A-1.