Appendice A. Autodiff
Questa appendice di spiega come funziona la funzione di differenziazione automatica (autodiff) di PyTorch e come si confronta con altre soluzioni.
Supponiamo di definire una funzione f(x, y) = x2y + y + 2 e di aver bisogno delle sue derivate parziali ∂f/∂x e ∂f/∂y, in genere per eseguire la discesa del gradiente (o qualche altro algoritmo di ottimizzazione). Le opzioni principali sono la differenziazione manuale, l'approssimazione alle differenze finite, l'autodiffusione in modalità avanzata e l'autodiffusione in modalità inversa. PyTorch implementa l'autodiffusione in modalità inversa, ma per comprenderla appieno è utile esaminare prima le altre opzioni. Vediamo quindi di analizzarle tutte, iniziando dalla differenziazione manuale.
Differenziazione manuale
Il primo approccio per calcolare le derivate è quello di prendere una matita e un foglio di carta e utilizzare le tue conoscenze di calcolo per ricavare l'equazione appropriata. Per la funzione f(x, y) appena definita, non è troppo difficile; devi solo usare cinque regole:
-
La derivata di una costante è 0.
-
La derivata di λx è λ (dove λ è una costante).
-
La derivata di xλ è λxλ - 1, quindi la derivata di x2 è2x.
-
La derivata di una somma di funzioni è la somma delle derivate di queste funzioni.
-
La derivata di λ per una funzione è λ per la sua derivata.
Da queste regole puoi ricavare l'equazione A-1.