Calcul multivarié depuis les premiers principes
Une seule structure de données organise tout ce qui précède dans les deux dernières leçons : le graphe de calcul. Chaque opération arithmétique d'un modèle (addition, multiplication, produit matriciel, activation) devient un nœud dans un graphe orienté. C'est grâce à ce graphe que PyTorch, JAX et TensorFlow calculent les gradients automatiquement.
L'entraînement parcourt le graphe en deux balayages. La passe avant s'écoule de gauche à droite, calculant et mettant en cache la valeur de chaque nœud. La passe arrière s'écoule de droite à gauche, utilisant la règle de dérivation en chaîne pour pousser le gradient de la perte vers chaque entrée, un nœud à la fois.
L'idée qui rend cela évolutif : chaque nœud n'a besoin de connaître que sa propre dérivée locale. Pour envoyer le gradient en arrière à travers un nœud, multipliez le gradient entrant (venu d'au-dessus) par la jacobienne locale du nœud (comment sa sortie dépend de ses entrées). Aucun nœud n'a jamais besoin de la vue globale ; des règles locales enchaînées produisent le gradient total exact.