Aprendizaje automático práctico con Scikit-Learn, Keras y TensorFlow, 3ª edición
by Aurélien Géron
Apéndice B. Autodiff
Este apéndice explica cómo funciona la función de autodiferenciación (autodiff) de TensorFlow y cómo se compara con otras soluciones.
Supón 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. TensorFlow implementa la autodiferenciación en modo inverso, pero para entenderla, es útil ver primero las otras opciones. Así que repasemos cada una de ellas, empezando por la diferenciación manual.
Diferenciación manual
La primera forma de calcular derivadas consiste en 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 estas funciones.
-
La derivada de λ veces una función es λ veces su derivada.
A partir de estas reglas, puedes derivar la Ecuación B-1.