Dans quelle direction la pente monte-t-elle le plus ?
Le gradient d’une fonction de deux variables est la liste de ses deux pentes, une par variable. Il indique la direction où la fonction monte le plus vite.
Les modèles d’apprentissage ont des milliers de réglages, pas un seul. Pour les améliorer, il faut savoir de quel côté bouger chacun.
À la fin de cette leçon
Remarque
Je peux calculer le gradient d’une fonction de deux variables et dire quelle direction monte le plus vite.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Variable | une entrée de la fonction que l’on peut faire bouger |
| Dérivée partielle | la pente quand une seule variable bouge |
| Gradient | la liste des dérivées partielles |
| Plus forte pente | la direction où la fonction monte le plus vite |
| Point critique | un point où le gradient est nul |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une dérivée partielle fige l’autre variable
Imaginez une colline dont l’altitude dépend de la position (x, y). Si vous marchez vers l’est, seul x change. Si vous marchez vers le nord, seul y change.
Une dérivée partielle mesure la pente dans un seul de ces sens, l’autre variable restant figée comme un nombre ordinaire.
Exemple : une colline à deux variables
| Variable qui bouge | Variable figée | Dérivée partielle | Valeur en (1, 2) |
|---|---|---|---|
| x | y | 2x | 2 |
| y | x | 6y | 12 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Estimer les deux pentes au point (1, 2)
docker exec jupyter python3 -c "f = lambda x, y: x ** 2 + 3 * y ** 2; h = 0.0001; print(round((f(1 + h, 2) - f(1 - h, 2)) / (2 * h), 3), round((f(1, 2 + h) - f(1, 2 - h)) / (2 * h), 3))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Le gradient pointe vers la plus forte montée
Le gradient range les deux dérivées partielles dans une liste. Au point (1, 2), il vaut [2, 12]. La pente est six fois plus forte vers le nord que vers l’est.
La direction du gradient est celle où la colline monte le plus vite. La direction opposée est celle où elle descend le plus vite.
Exemple : un petit pas, trois directions
| Direction | Changement de l’altitude | Lecture |
|---|---|---|
| Vers l’est (x plus 0,01) | environ +0,02 | une montée douce |
| Vers le nord (y plus 0,01) | environ +0,12 | une montée forte |
| Le long du gradient | environ +0,12 | la montée la plus forte pour ce pas |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Mesurer la montée dans trois directions
docker exec jupyter python3 -c "f = lambda x, y: x ** 2 + 3 * y ** 2; print(round(f(1.01, 2) - f(1, 2), 4), round(f(1, 2.01) - f(1, 2), 4), round(f(1 + 0.01 * 2 / 148 ** 0.5, 2 + 0.01 * 12 / 148 ** 0.5) - f(1, 2), 4))"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Un gradient numérique en Python
# Une colline : l’altitude dépend de la position (x, y).
def colline(x, y):
return x ** 2 + 3 * y ** 2
def gradient(f, x, y):
h = 0.0001
pente_x = (f(x + h, y) - f(x - h, y)) / (2 * h)
pente_y = (f(x, y + h) - f(x, y - h)) / (2 * h)
return [round(pente_x, 2), round(pente_y, 2)]
print(gradient(colline, 1, 2))
print(gradient(colline, 0, 0))
# Changez le point en (3, 1) : prévoyez le résultat avant de relancer.
Une erreur fréquente
Attention
Beaucoup pensent que le gradient est un nombre. C’est une liste : une pente par variable. Deux gradients peuvent avoir la même longueur et pointer vers des directions très différentes. Gardez toujours les deux valeurs ensemble.
Pour aller plus loin
Dans un carnet du labo, tracez les courbes de niveau de x au carré plus 3y au carré avec plt.contour. Elles forment des ellipses plus serrées vers y.
La leçon suivante marche vers le bas de cette colline, pas à pas, en suivant l’opposé du gradient.