Pilier 7

Rétropropagation — la règle de la chaîne appliquée à une pile

Idée

On a besoin de savoir comment chaque coefficient profond influence l'erreur en sortie ; on fait remonter l'information depuis la sortie en multipliant à chaque étape par la dérivée locale.

Pourquoi

Quand l'erreur est calculée à la sortie d'une pile de couches, on a besoin de savoir comment chaque poids $W_\ell$ profond influence cette erreur. La rétropropagation fait remonter l'information de la sortie vers l'entrée, couche par couche, en multipliant à chaque étape par la dérivée locale. C'est exactement la règle de la chaîne $(f \circ g \circ h)' = f'(g(h)) \cdot g'(h) \cdot h'$ vue en analyse de spé MPSI, mecanisee sur un graphe d'opérations. Pytorch l'execute automatiquement via loss.backward() ; le PDF rappelle p5 que 'le graphe de calcul est reinitialise à chaque étape forward'. À retenir : la rétropropagation n'est qu'une comptabilité bien tenue. Pas de magie — juste la règle de la chaîne déroulée d'arrière en avant à travers la pile.

Outil

Règle de la chaîne $(f \circ g \circ h)' = f'(g(h)) \cdot g'(h) \cdot h'$ d'analyse MPSI, mecanisee sur un graphe d'opérations.

Formule

$(f \circ g \circ h)'(x) = f'(g(h(x))) \cdot g'(h(x)) \cdot h'(x)$ ; appliquée à une pile : $\frac{\partial \mathcal{L}}{\partial W_\ell} = \frac{\partial \mathcal{L}}{\partial a_L} \prod_{k=\ell+1}^{L} \frac{\partial a_k}{\partial a_{k-1}} \cdot \frac{\partial a_\ell}{\partial W_\ell}$.

Piège

On dérive couche par couche depuis l'entrée vers la sortie et on s'étonne que les gradients des couches profondes soient faux. L'ordre est inversé : la rétropropagation part du gradient de la loss en sortie et le fait remonter couche par couche en multipliant par la dérivée locale — c'est exactement la règle de la chaîne lue de droite à gauche.

Diagramme

graph LR
  x((x)) --> L1[couche 1]
  L1 --> L2[couche 2]
  L2 --> L3[couche 3]
  L3 --> loss((erreur L))