Retropropagación explicada paso a paso
El gradiente calculado íntegramente a mano en una red de dos neuronas, con números, y verificado después con autograd y con diferencias finitas.
Retropropagación explicada paso a paso
perte.backward(). Una llamada, ningún argumento, y aparecen las derivadas de varios millones de parámetros. Es la línea más útil de PyTorch y también la que más gente escribe sin saber qué hace. Mientras todo funciona, la ignorancia resulta cómoda.
Deja de serlo en el primer problema serio. ¿Por qué el gradiente de la primera capa es un millón de veces menor que el de la última? ¿Por qué aparece ese nan en la tercera iteración y no en la primera? ¿Por qué este modelo que comparte un codificador entre dos cabezas lanza «Trying to backward through the graph a second time»? Ninguna de estas preguntas se resuelve por ensayo y error. Se resuelven sabiendo qué magnitud circula, en qué sentido, y qué la multiplica en cada etapa.
Esta lección hace, por tanto, algo inusual: calcula un gradiente íntegramente a mano, con números decimales, en una red lo bastante pequeña como para que ninguna etapa quede oculta: una entrada, una neurona oculta, una neurona de salida, cuatro parámetros. Después le pide a autograd que repita el mismo cálculo y compara las cifras. Y a continuación lo verifica una tercera vez mediante diferencias finitas, una técnica de control que los profesionales utilizan de verdad para validar una capa escrita a mano.