Jonathan Suru

Calcul Vectoriel : Fondements Essentiels pour le Machine Learning

Cet article fait suite à notre précédent article "Algèbre Linéaire : Fondements Essentiels pour le Machine Learning". Si l'algèbre linéaire nous a fourni le langage pour décrire vivent les vecteurs et les matrices, le calcul vectoriel nous explique comment les fonctions transforment ces espaces - comment les quantités changent lorsque nous nous déplaçons.

Cet article s'inspire principalement d'une présentation issue du Deep Learning Indaba 2025 qui s'est tenu au Rwanda, organisée par Dr. Ismaila SECK, Géraud Nangue Tasse et l'équipe DLI.

Dans le domaine de l'apprentissage automatique, nous optimisons presque toujours une fonction de perte scalaire L(W) sur des millions de paramètres W. Comprendre le calcul vectoriel est donc essentiel pour maîtriser les algorithmes d'apprentissage automatique. Sans cette compréhension, il est difficile d'innover véritablement dans le domaine.

1. Différentiation Scalaire \(f: \mathbb{R} \rightarrow \mathbb{R}\)

La différentielle scalaire est le point de départ de notre exploration. Elle concerne les fonctions qui prennent un nombre réel en entrée et produisent un nombre réel en sortie.

Définition de la dérivée

La dérivée est définie comme la limite du quotient des différences :

$$ f'(x) = \frac{df}{dx} = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h} $$

Exemple :

Prenons la fonction \(f(x) = x^2\). Calculons sa dérivée en utilisant la définition :

  1. $$ f(x+h) = (x+h)^2 = x^2 + 2xh + h^2 $$
  2. $$ f(x+h) - f(x) = (x^2 + 2xh + h^2) - x^2 = 2xh + h^2 $$
  3. $$ \frac{f(x+h) - f(x)}{h} = \frac{2xh + h^2}{h} = 2x + h $$
  4. $$ \lim_{h \to 0} (2x + h) = 2x $$

Donc, \(f'(x) = 2x\) pour \(f(x) = x^2\).

Interprétation concrète : La vitesse comme dérivée de la position

Considérons un objet en mouvement dont la position est décrite par une fonction de temps \(s(t)\).

Calcul

Interprétation

Signification physique

Pourquoi c'est important pour le machine learning

Règles de base de différentielle

Règle de somme

$$ (f(x)+g(x))' = f'(x)+g'(x) = \frac{df(x)}{dx} + \frac{dg(x)}{dx} $$

Exemple

Règle de produit

$$ (f(x)g(x))' = f'(x)g(x) + f(x)g'(x) = \frac{df(x)}{dx}g(x) + f(x)\frac{dg(x)}{dx} $$

Exemple

Règle de chaîne

$$ (g \circ f)'(x) = (g(f(x)))' = g'(f(x))f'(x) = \frac{dg(f(x))}{df} \frac{df(x)}{dx} $$

Exemple très simple pour débutants
Interprétation

La règle de chaîne est comme une "chaîne" de dérivées. Si vous avez une fonction à l'intérieur d'une autre fonction, vous devez multiplier les dérivées.

Application pratique en apprentissage automatique

Exemple concret

Considérons une fonction sigmoïde utilisée dans les réseaux de neurones :

Pourquoi c'est important

Cette dérivée simple est utilisée partout dans les réseaux de neurones pour la rétropropagation. Si vous comprenez cela, vous comprenez déjà une grande partie du fonctionnement des réseaux de neurones!

2. Différentiation Multivariée \(f: \mathbb{R}^N \rightarrow \mathbb{R}\)

Lorsque nous passons à des fonctions avec plusieurs variables d'entrée, nous entrons dans le domaine de la différentielle multivariée.

Dérivées partielles

La dérivée partielle mesure le taux de changement d'une fonction par rapport à une seule variable à la fois, en gardant toutes les autres variables constantes :

$$ \frac{\partial f}{\partial x_i} = \lim_{h \to 0} \frac{f(x_1, ..., x_{i-1}, x_i+h, x_{i+1}, ..., x_N) - f(x)}{h} $$

Le gradient

Le gradient est un vecteur qui regroupe toutes les dérivées partielles d'une fonction scalaire par rapport à chacune de ses variables d'entrée :

\[\nabla f = \frac{df}{dx} = \left[\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, ..., \frac{\partial f}{\partial x_N}\right] \in \mathbb{R}^{1 \times N}\]

Notez que le gradient est un vecteur ligne dans cette notation.

Interprétation géométrique

Le gradient pointe dans la direction de la plus forte augmentation de la fonction. Sa magnitude indique le taux de cette augmentation.

Exemple de différentielle multivariée

Fonction simple

Fonction avancée

3. Différentiation de Champs Vectoriels \(f: \mathbb{R}^N \rightarrow \mathbb{R}^M\)

Lorsque notre fonction produit un vecteur en sortie plutôt qu'un scalaire, nous entrons dans le domaine de la différentielle de champs vectoriels.

La matrice jacobienne

La matrice jacobienne est la généralisation du gradient aux fonctions vectorielles. Elle regroupe toutes les dérivées partielles premières :

\[J = \frac{df}{dx} = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_N} \\ \vdots & \ddots & \vdots \\ \frac{\partial f_M}{\partial x_1} & \cdots & \frac{\partial f_M}{\partial x_N} \end{bmatrix} \in \mathbb{R}^{M \times N}\]

Où \(J_{ij} = \frac{\partial f_i}{\partial x_j}\)

Interprétation géométrique

La matrice jacobienne \(J(x_0)\) représente la meilleure application linéaire qui approxime la fonction \(f\) près du point \(x_0\).

Exemple important : Transformation linéaire

Considérons \(f(x) = Ax\), où \(f(x) \in \mathbb{R}^M\), \(A \in \mathbb{R}^{M \times N}\) et \(x \in \mathbb{R}^N\) :

\[\begin{bmatrix} y_1 \\ \vdots \\ y_M \end{bmatrix} = \begin{bmatrix} f_1(x) \\ \vdots \\ f_M(x) \end{bmatrix} = \begin{bmatrix} A_{11}x_1 + A_{12}x_2 + \cdots + A_{1N}x_N \\ \vdots \\ A_{M1}x_1 + A_{M2}x_2 + \cdots + A_{MN}x_N \end{bmatrix}\]

Le gradient est alors simplement :

\[\frac{df}{dx} = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_N} \\ \vdots & \ddots & \vdots \\ \frac{\partial f_M}{\partial x_1} & \cdots & \frac{\partial f_M}{\partial x_N} \end{bmatrix} = A \in \mathbb{R}^{M \times N}\]

Exemple d'application en apprentissage automatique

Considérons la fonction de perte :

\[L(W) = \|e\|^2 = \|y - f(x, W)\|^2\]

Où \(f(x, W) = W^T x\), avec \(x \in \mathbb{R}^N\), \(y \in \mathbb{R}\), et \(W \in \mathbb{R}^{N \times M}\)

Pour calculer le gradient \(\frac{dL}{dW}\) :

  1. \(L = e^T e\) où \(e = y - W^T x\)
  2. \(\frac{dL}{de} = 2e \in \mathbb{R}^M\)
  3. \(\frac{de}{dW} = -x^T \in \mathbb{R}^{M \times N}\)
  4. \(\frac{dL}{dW} = \frac{dL}{de} \cdot \frac{de}{dW} = 2e \cdot (-x^T) = -2(y - W^T x)x^T \in \mathbb{R}^{1 \times N}\)

Notez que la dimension du gradient est : nombre de dimensions de la cible × nombre de dimensions d'entrée.

4. La Règle de Chaîne et la Rétropropagation

Comprendre la Règle de Chaîne en Profondeur

La règle de chaîne est l'outil mathématique le plus important pour comprendre la rétropropagation. Elle nous permet de calculer la dérivée d'une fonction composée, ce qui est essentiel dans les réseaux de neurones où les transformations s'empilent les unes sur les autres.

Pour deux fonctions \(f\) et \(g\), la règle de chaîne s'écrit :

\[(g \circ f)'(x) = g'(f(x)) \cdot f'(x)\]

Pour trois fonctions \(f\), \(g\) et \(h\) :

\[(h \circ g \circ f)'(x) = h'(g(f(x))) \cdot g'(f(x)) \cdot f'(x)\]

Interprétation

Le taux de changement global est le produit des taux de changement locaux à chaque étape de la composition.

Diagramme de Rétropropagation dans un Réseau de Neurones

Réseau de neurones à une couche cachée

x₁ x₂ a₁⁽¹⁾ a₂⁽¹⁾ ŷ y compare e = y - ŷ Légende: Propagation avant Rétropropagation

Considérons un réseau de neurones simple avec :

Notation

Étape 1: Propagation Avant

La propagation avant calcule la sortie du réseau pour une entrée donnée.

Calcul des valeurs de la couche cachée
Calcul de la sortie

Étape 2: Calcul de l'Erreur

L'erreur mesure la différence entre la prédiction et la valeur réelle.

Étape 3: Rétropropagation - Calcul des Deltas

La rétropropagation calcule les erreurs "responsables" à chaque couche en appliquant la règle de chaîne.

Calcul du delta de sortie (\(\delta^{(2)}\))
Calcul du delta de la couche cachée (\(\delta^{(1)}\))

Étape 4: Calcul des Gradients

Gradient pour les poids de la couche de sortie

\(\frac{\partial L}{\partial W^{(2)}} = \delta^{(2)} \cdot (a^{(1)})^T\)

Gradient pour les biais de la couche de sortie

\(\frac{\partial L}{\partial b^{(2)}} = \delta^{(2)}\)

Gradient pour les poids de la couche cachée

\(\frac{\partial L}{\partial W^{(1)}} = \delta^{(1)} \cdot x^T\)

Gradient pour les biais de la couche cachée

\(\frac{\partial L}{\partial b^{(1)}} = \delta^{(1)}\)

Étape 5: Mise à Jour des Paramètres

Les poids et biais sont mis à jour en utilisant les gradients calculés :

Où \(\eta\) est le taux d'apprentissage.

Exemple Numérique Complet

Prenons des valeurs numériques spécifiques :

Propagation avant
Rétropropagation
Calcul des gradients
Mise à jour des paramètres
Vérification de l'amélioration

Avec les nouveaux paramètres, recalculons \(\hat{y}\) :

Nous constatons que l'erreur a diminué de 0.1059 à 0.0977 et la perte de 0.00561 à 0.00477, ce qui confirme que la rétropropagation a effectivement amélioré notre modèle.

Compréhension Profonde de la Règle de Chaîne dans la Rétropropagation

La rétropropagation est essentiellement une application systématique de la règle de chaîne à travers tout le réseau. Pour comprendre pleinement ce processus, analysons la dérivation complète pour un poids spécifique, disons \(w_{11}^{(1)}\) (le poids reliant l'entrée 1 au premier neurone caché).

Nous voulons calculer \(\frac{\partial L}{\partial w_{11}^{(1)}}\). En appliquant la règle de chaîne :

\[\frac{\partial L}{\partial w_{11}^{(1)}} = \frac{\partial L}{\partial \hat{y}} \cdot \frac{\partial \hat{y}}{\partial z^{(2)}} \cdot \frac{\partial z^{(2)}}{\partial a_1^{(1)}} \cdot \frac{\partial a_1^{(1)}}{\partial z_1^{(1)}} \cdot \frac{\partial z_1^{(1)}}{\partial w_{11}^{(1)}}\]

Décortiquons chaque terme :

  1. \(\frac{\partial L}{\partial \hat{y}} = -(y - \hat{y}) = -e\)
  2. \(\frac{\partial \hat{y}}{\partial z^{(2)}} = 1\) (puisque \(\hat{y} = z^{(2)}\))
  3. \(\frac{\partial z^{(2)}}{\partial a_1^{(1)}} = w_1^{(2)}\) (le poids de la couche cachée vers la sortie)
  4. \(\frac{\partial a_1^{(1)}}{\partial z_1^{(1)}} = \sigma'(z_1^{(1)}) = \sigma(z_1^{(1)})(1 - \sigma(z_1^{(1)}))\)
  5. \(\frac{\partial z_1^{(1)}}{\partial w_{11}^{(1)}} = x_1\) (l'entrée correspondante)

Ainsi :

\[\frac{\partial L}{\partial w_{11}^{(1)}} = (-e) \cdot 1 \cdot w_1^{(2)} \cdot \sigma'(z_1^{(1)}) \cdot x_1\]

Ce qui correspond exactement à :

\[\frac{\partial L}{\partial w_{11}^{(1)}} = \delta^{(2)} \cdot w_1^{(2)} \cdot \sigma'(z_1^{(1)}) \cdot x_1 = \delta_1^{(1)} \cdot x_1\]

C'est la justification mathématique du calcul des deltas que nous avons utilisé dans notre exemple numérique.

Importance de la Règle de Chaîne pour la Rétropropagation

  1. Efficacité computationnelle : Sans la règle de chaîne, nous devrions calculer chaque gradient indépendamment, ce qui serait extrêmement coûteux. La rétropropagation réutilise les calculs intermédiaires, rendant l'algorithme très efficace.
  2. Propagation de l'information : La règle de chaîne permet de propager l'information sur l'erreur depuis la sortie vers l'entrée, ce qui est essentiel pour que les couches cachées puissent apprendre.
  3. Généralité : La règle de chaîne s'applique à n'importe quelle composition de fonctions, ce qui rend la rétropropagation applicable à presque tous les types de réseaux de neurones.
  4. Intuition géométrique : Chaque terme dans la règle de chaîne correspond à une "étape" dans le réseau, nous permettant de comprendre comment chaque composant contribue à l'erreur finale.

5. Importance pour l'Apprentissage Automatique

Optimisation et descente de gradient

Le calcul vectoriel est au cœur des algorithmes d'optimisation en apprentissage automatique. La descente de gradient utilise le gradient pour minimiser une fonction de perte :

\[W_{nouveau} = W_{ancien} - \eta \cdot \nabla L(W_{ancien})\]

Où \(\eta\) est le taux d'apprentissage. Le gradient indique la direction de la plus forte augmentation de la fonction, donc nous nous déplaçons dans la direction opposée pour minimiser la perte.

Points Clés à Retenir

  1. Le gradient généralise la notion de pente aux dimensions supérieures et guide la plupart des algorithmes d'optimisation.
  2. La matrice jacobienne linéarise les applications vectorielles - essentielle pour la rétropropagation.
  3. La règle de chaîne est le fondement mathématique de la rétropropagation - sans elle, les réseaux de neurones profonds ne pourraient pas apprendre.
  4. La géométrie visuelle construit une intuition forte : chaque dérivée raconte une histoire de mouvement.

Conclusion

En maîtrisant le calcul vectoriel, vous obtiendrez non seulement la capacité à implémenter des algorithmes existants, mais aussi à concevoir de nouvelles approches et à résoudre des problèmes complexes dans le domaine de l'apprentissage automatique. Le calcul vectoriel n'est pas seulement un outil mathématique - c'est le langage qui permet de décrire comment les modèles apprennent et s'adaptent, ce qui est au cœur même de l'apprentissage automatique.

Liens Utiles

Pour approfondir vos connaissances et explorer des outils avancés, voici quelques ressources :

Ma recommandation musicale du jour : à écouter sans modération !

Écouter sur YouTube