Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Dérivées partielles et gradient

Après cette leçon: Je peux calculer le gradient d’une fonction de deux variables et dire quelle direction monte le plus vite.

Leçon de 60 min2 commandesLab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

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

MotCe que ça veut dire
Variableune entrée de la fonction que l’on peut faire bouger
Dérivée partiellela pente quand une seule variable bouge
Gradientla liste des dérivées partielles
Plus forte pentela direction où la fonction monte le plus vite
Point critiqueun 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 bougeVariable figéeDérivée partielleValeur en (1, 2)
xy2x2
yx6y12

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Estimer les deux pentes au point (1, 2)

Commande
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

DirectionChangement de l’altitudeLecture
Vers l’est (x plus 0,01)environ +0,02une montée douce
Vers le nord (y plus 0,01)environ +0,12une montée forte
Le long du gradientenviron +0,12la 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

Commande
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

Code: 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.

À propos de ce labo et de sa source: Lab JupyterLab de science des données : pandas, Matplotlib et scikit-learn dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.