07 / 09 Dérivées et règle de la chaîne
  1. ← Réseaux de neurones : fondations et mathématiques
  2. 00 Avant-propos
  3. 01 Le neurone artificiel
  4. 02 Algèbre linéaire essentielle
  5. 03 Fonctions d'activation
  6. 04 Le perceptron
  7. 05 Du neurone au réseau multi-couches
  8. 06 Forward pass et fonctions de coût
  9. 07 Dérivées et règle de la chaîne
  10. 08 La rétropropagation
Réseaux de neurones : fondations et mathématiques · 07 / 09

Dérivées et règle de la chaîne

De la pente d'une courbe au gradient : l'outil qui transforme le paysage de coût en chemin de descente.

Au chapitre 6, on a appris à calculer la note d’un réseau et à la lire comme une altitude dans un paysage de coût. Les bons réseaux occupent les vallées, les mauvais les sommets, et apprendre revient à descendre vers un creux. Reste la question décisive : autour du point où l’on se trouve, dans quelle direction faut-il modifier chaque poids pour que la note baisse ?

Pour le savoir, il faut mesurer de quel côté penche la surface. Cette pente locale a un nom précis en mathématiques : la dérivée. Ce chapitre pose les trois outils dont tout l’apprentissage dépend. La dérivée mesure la pente d’une courbe en un point. La règle de la chaîne propage cette pente à travers une composition de calculs. Le gradient généralise la pente à plusieurs poids à la fois. Aucun de ces outils n’est difficile, et chacun se voit géométriquement. À la fin, le décor statique du chapitre 6 sera devenu un chemin de descente.

Acte 1 : la dérivée, c’est une pente

Prends une courbe, par exemple celle de f(x)=x2f(x) = x^2. Choisis un point dessus. Si tu zoomes très fort autour de ce point, la courbe finit par ressembler à une droite. La pente de cette droite, c’est la dérivée Dérivée Pente d'une fonction en un point. Formellement, la limite du taux de variation (f(x+h) - f(x)) / h quand h tend vers zéro. Elle dit de combien et dans quel sens la sortie change quand on bouge l'entrée d'un cheveu. de ff en ce point. Elle te dit deux choses d’un coup : dans quel sens la sortie bouge quand l’entrée augmente, et de combien.

Pour la définir proprement, on part du taux de variation entre deux points proches, xx et x+hx + h :

f(x+h)f(x)h.\frac{f(x + h) - f(x)}{h}.

C’est la pente de la droite qui coupe la courbe en ces deux points, la sécante. Quand on fait tendre l’écart hh vers 00, le second point glisse vers le premier, et la sécante bascule vers la tangente. La dérivée f(x)f'(x) est la limite de ce taux :

f(x)=limh0f(x+h)f(x)h.f'(x) = \lim_{h \to 0} \frac{f(x + h) - f(x)}{h}.

Pour f(x)=x2f(x) = x^2, ce calcul donne f(x)=2xf'(x) = 2x (on le refait à la main dans l’exercice 1). La pente vaut donc 22 en x=1x = 1, elle vaut 00 en x=0x = 0 (le fond du bol, où la courbe est plate), et 2-2 en x=1x = -1 (la courbe descend).

Quelques dérivées reviennent sans cesse dans ce cours. Les voici une fois pour toutes :

(xn)=nxn1,(ex)=ex,(lnx)=1x,σ(z)=σ(z)(1σ(z)).(x^n)' = n\,x^{n-1}, \qquad (e^x)' = e^x, \qquad (\ln x)' = \frac{1}{x}, \qquad \sigma'(z) = \sigma(z)\,\big(1 - \sigma(z)\big).

La dernière, celle de la sigmoïde, est remarquable : sa pente s’exprime à partir de sa propre valeur. On s’en servira dès l’acte 2, puis au chapitre 8.

Glisse le point le long de la courbe, et resserre l’écart hh pour voir la sécante basculer vers la tangente.

xyy = x²

La dérivée, c'est la pente d'une tangente

Pente de la sécante : 2,00
Pente exacte f'(x) : 2,00
Écart : 0,00

Trois choses à observer en jouant :

  • Plus tu réduis hh, plus la pente de la sécante se rapproche de la pente exacte f(x)=2xf'(x) = 2x. L’écart entre les deux fond vers zéro : c’est la limite, rendue visible.
  • Au creux du bol, en x=0x = 0, la tangente est horizontale et la pente vaut 00. C’est la signature d’un minimum, et ce sera le but de l’apprentissage.
  • À gauche du creux la pente est négative, à droite elle est positive. Le signe de la dérivée dit de quel côté la courbe descend.

Acte 2 : la règle de la chaîne

Un réseau n’est pas une seule fonction, c’est un empilement de fonctions emboîtées. La sortie d’une couche entre dans la suivante. Pour dériver un tel empilement, il faut savoir dériver une composition de fonctions Composition de fonctions Opération consistant à appliquer une fonction au résultat d'une autre, notée f rond g. Un réseau multi-couches est une composition, où la sortie d'une couche devient l'entrée de la suivante, et c'est cet emboîtement, alterné avec des activations non linéaires, qui crée la non-linéarité globale. , c’est-à-dire un calcul de la forme h(x)=f(g(x))h(x) = f\big(g(x)\big).

La règle de la chaîne Règle de la chaîne Règle de dérivation d'une composition de fonctions : la dérivée de f(g(x)) est f'(g(x)) multiplié par g'(x). On multiplie les dérivées locales le long du chemin. C'est le coeur mécanique de la rétropropagation. répond exactement à ce besoin. Elle dit que la dérivée d’une composition est le produit des dérivées locales :

h(x)=f(g(x))g(x).h'(x) = f'\big(g(x)\big) \cdot g'(x).

L’intuition est mécanique. Si gg amplifie les variations d’un facteur g(x)g'(x), et que ff les amplifie d’un facteur ff' au point où elle reçoit son entrée, alors le tout amplifie d’un facteur égal au produit des deux. On multiplie les pentes le long du chemin.

Déroulons un exemple chiffré. Soit u=g(x)=3x+1u = g(x) = 3x + 1 et y=f(u)=u2y = f(u) = u^2. Les dérivées locales sont g(x)=3g'(x) = 3 et f(u)=2uf'(u) = 2u. La règle de la chaîne donne

dydx=2uf(u)3g(x)=6(3x+1).\frac{dy}{dx} = \underbrace{2u}_{f'(u)} \cdot \underbrace{3}_{g'(x)} = 6\,(3x + 1).

En x=1x = 1, on a u=4u = 4, donc dydx=243=24\tfrac{dy}{dx} = 2 \cdot 4 \cdot 3 = 24.

La même mécanique est un neurone. Voici le point clé du chapitre. Reprends un seul neurone et sa note, comme au chapitre 6. L’entrée xx traverse trois calculs emboîtés :

z=wx+b,a=σ(z),L=(ay)2.z = wx + b, \qquad a = \sigma(z), \qquad L = (a - y)^2.

Pour savoir comment ajuster le poids ww, on cherche dLdw\tfrac{dL}{dw}. C’est une composition de trois fonctions, donc on multiplie trois dérivées locales le long du chemin wzaLw \to z \to a \to L :

dLdw=2(ay)dL/daa(1a)da/dzxdz/dw.\frac{dL}{dw} = \underbrace{2(a - y)}_{dL/da} \cdot \underbrace{a(1 - a)}_{da/dz} \cdot \underbrace{x}_{dz/dw}.

La première dérivée vient de L=(ay)2L = (a-y)^2, la deuxième est la dérivée de la sigmoïde (qui s’écrit avec sa propre valeur, a(1a)a(1-a)), la troisième vient de z=wx+bz = wx + b. Pour le biais, seul le dernier facteur change : dzdb=1\tfrac{dz}{db} = 1, donc dLdb=2(ay)a(1a)\tfrac{dL}{db} = 2(a - y)\,a(1 - a).

Tu viens de calculer comment la note réagit à un poids, en propageant des dérivées locales à rebours dans le graphe. C’est exactement la rétropropagation. Le chapitre 8 ne fera que l’appliquer mécaniquement à un réseau entier.

Bascule entre la composition abstraite et le graphe du neurone, et regarde les dérivées locales se multiplier le long du chemin.

Multiplier les pentes le long d'une chaîne

g' = 3dy/dg = 2g = 8,000xgy
Produit le long du chemin : dy/dx = 24,000

Trois choses à observer en jouant :

  • En mode composition, chaque arête porte sa dérivée locale, et le produit le long du chemin reconstitue dydx\tfrac{dy}{dx}. Change xx : le produit suit.
  • En mode neurone, le même mécanisme calcule dLdw\tfrac{dL}{dw} et dLdb\tfrac{dL}{db}. Les arêtes sont les mêmes briques, seules les fonctions changent.
  • Quand un facteur du produit est petit (par exemple a(1a)a(1 - a) quand le neurone est saturé), tout le produit s’écrase. C’est l’origine du gradient qui s’évanouit, un problème qu’on retrouvera plus loin.

Acte 3 : dérivées partielles et gradient

Un vrai réseau n’a pas un poids mais des millions. La note LL est alors une fonction de tous ces poids à la fois. Comment parler de pente quand il y a plusieurs directions où bouger ?

La réponse tient en un geste simple : on regarde une direction à la fois. La dérivée partielle Dérivée partielle Dérivée d'une fonction de plusieurs variables par rapport à une seule d'entre elles, les autres étant gardées constantes. Elle mesure la pente selon un axe. Empilées, les dérivées partielles forment le gradient. par rapport à un poids est la pente obtenue en ne faisant varier que ce poids, tous les autres gardés constants. Pour la noter, on remplace le dd droit par un \partial rond : Lw1\tfrac{\partial L}{\partial w_1} est la pente selon w1w_1 seul.

Prenons un coût jouet à deux poids, L(w1,w2)=w12+2w22L(w_1, w_2) = w_1^2 + 2\,w_2^2. Ses deux dérivées partielles sont

Lw1=2w1,Lw2=4w2.\frac{\partial L}{\partial w_1} = 2 w_1, \qquad \frac{\partial L}{\partial w_2} = 4 w_2.

Empile ces pentes dans un vecteur, et tu obtiens le gradient Gradient Vecteur de toutes les dérivées partielles d'une fonction. Il indique la direction de plus forte augmentation de la fonction au point considéré, et sa norme mesure la pente. En apprentissage, on suit l'opposé du gradient pour faire baisser la fonction de coût. , noté L\nabla L :

L=(Lw1,  Lw2)=(2w1,  4w2).\nabla L = \left( \frac{\partial L}{\partial w_1},\; \frac{\partial L}{\partial w_2} \right) = (2 w_1,\; 4 w_2).

Le gradient n’est pas qu’une liste de nombres. Vu comme une flèche au point courant, il pointe dans la direction de plus forte montée de la note, et sa longueur mesure la raideur de cette montée. Pour faire baisser la note, il suffit donc d’aller dans la direction opposée, L-\nabla L. On tient enfin la boussole de la descente.

Déplace le point sur le relief et lis les deux pentes partielles ainsi que la flèche du gradient.

w₁w₂

Le gradient, boussole de la descente

∂f/∂w₁ : 2,000
∂f/∂w₂ : 3,200
Gradient ∇f (montée)
-∇f (descente)

Le gradient est la boussole de la descente du chapitre 9.

Trois choses à observer en jouant :

  • La flèche du gradient pointe toujours vers le haut du relief, à l’opposé du creux. La flèche de descente L-\nabla L vise le creux.
  • Au fond du bol, les deux pentes partielles s’annulent et le gradient devient nul. C’est le signal d’un minimum, la version multi-poids de la tangente horizontale de l’acte 1.
  • Le coefficient 22 devant w22w_2^2 rend la pente selon w2w_2 deux fois plus raide : le gradient ne pointe pas vers le centre en ligne droite, il penche vers l’axe le plus pentu.

Exercices

Prends de quoi écrire. Les corrigés sont volontairement détaillés, ligne par ligne.

Exercice 1. Retrouve la dérivée de f(x)=x2f(x) = x^2 par la définition, c’est-à-dire calcule la limite de (x+h)2x2h\tfrac{(x+h)^2 - x^2}{h} quand h0h \to 0.

Exercice 2. Soit y=(3x+1)2y = (3x + 1)^2. Calcule dydx\tfrac{dy}{dx} avec la règle de la chaîne, puis donne sa valeur en x=2x = 2.

Exercice 3. Pour un neurone, L=(ay)2L = (a - y)^2 avec a=σ(z)a = \sigma(z) et z=wx+bz = wx + b. Donne dLdz\tfrac{dL}{dz}, puis dLdw\tfrac{dL}{dw}.

Exercice 4. Soit L(w1,w2)=w12+2w22L(w_1, w_2) = w_1^2 + 2\,w_2^2. Calcule le gradient L\nabla L au point (1,1)(1, 1), puis donne la direction de descente.

En une phrase

La dérivée mesure la pente d’une fonction en un point, la règle de la chaîne propage cette pente à travers des calculs emboîtés en multipliant les dérivées locales, et le gradient empile ces pentes en une boussole qui indique, pour chaque poids, dans quel sens faire baisser la note.

Quiz

Quiz
  1. 1. Que mesure la dérivée d’une fonction en un point ?

  2. 2. Comment la règle de la chaîne dérive-t-elle une composition f(g(x)) ?

  3. 3. Pourquoi le calcul de dL/dw d’un neurone préfigure-t-il la rétropropagation ?

  4. 4. Qu’est-ce qu’une dérivée partielle ?

  5. 5. Dans quelle direction pointe le gradient, et que fait-on pour baisser la note ?

Vers le chapitre 8

On sait désormais calculer la pente de la note par rapport à un poids isolé, en multipliant des dérivées locales le long du graphe d’un neurone. Mais un réseau réel compte des milliers de poids enchaînés sur plusieurs couches. Refaire ce calcul de zéro pour chacun serait ruineux. La rétropropagation, au chapitre 8, organise ce calcul en un seul passage arrière à travers le réseau, qui récupère toutes les dérivées partielles d’un coup. C’est la règle de la chaîne, industrialisée.

Sources

  • Goodfellow, I., Bengio, Y. & Courville, A. (2016). Deep Learning. MIT Press. Chapitre 6 (et section 6.5 sur la rétropropagation et la différentiation). https://www.deeplearningbook.org
  • Spivak, M. (2008). Calculus (4e éd.). Publish or Perish. Chapitres sur la dérivée et la règle de la chaîne.
  • Nielsen, M. (2015). Neural Networks and Deep Learning. Chapitre 2, sur la propagation des dérivées dans un réseau. http://neuralnetworksanddeeplearning.com/chap2.html