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

Descente de gradient

Après cette leçon: Je peux minimiser une fonction avec des pas de descente de gradient et dire quand arrêter.

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

Trouver le bas d’une vallée à pied

La descente de gradient est une méthode qui cherche le minimum d’une fonction en faisant de petits pas dans le sens où elle descend. Elle sert à régler un modèle pour que son erreur soit la plus faible possible.

C’est comme marcher dans le brouillard : on ne voit pas le fond, mais on sent de quel côté le sol penche.

À la fin de cette leçon

Remarque

Je peux minimiser une fonction avec des pas de descente de gradient et dire quand arrêter.

Mots clés

MotCe que ça veut dire
Minimumle point où la fonction est la plus basse
Descente de gradientune suite de pas opposés au gradient
Taux d’apprentissagela taille de chaque pas, un nombre choisi
Itérationun tour de la boucle de descente
Divergencequand les pas s’éloignent du minimum au lieu de s’en approcher

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

Chaque pas retire un morceau de la dérivée

La règle tient en une ligne : le nouveau x vaut l’ancien x, moins le taux fois la dérivée. Si la pente est positive, on recule. Si elle est négative, on avance.

Le taux d’apprentissage règle la taille du pas. Plus la pente est forte, plus le pas est long, et il raccourcit en approchant du fond.

Exemple : cinq pas de descente

Pasx avantDérivée 2(x - 3)x après
10-60,6
20,6-4,81,08
31,08-3,841,464
41,464-3,0721,7712
51,7712-2,45762,017

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

Écrire le programme de descente dans le labo

Commande
docker exec jupyter sh -c "printf 'x = 0.0\nfor i in range(5):\n    x = x - 0.1 * 2 * (x - 3)\n    print(i + 1, round(x, 4))\n' > descente.py"

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.

Lancer cinq pas de descente

Commande
docker exec jupyter python3 descente.py

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.

On s’arrête quand la pente est presque nulle

Une descente ne tombe jamais exactement sur le minimum. On choisit donc un critère d’arrêt : la dérivée est plus petite qu’un seuil, comme 0,001.

On ajoute aussi un nombre maximal d’itérations. Sans cette limite, un programme qui ne converge pas tournerait sans fin.

Une descente avec un critère d’arrêt

Code: python
# Descendre vers le minimum de (x - 3) au carré.
def derivee(x):
    return 2 * (x - 3)

x = 0.0
taux = 0.1
pas = 0
while abs(derivee(x)) > 0.001 and pas < 1000:
    x = x - taux * derivee(x)
    pas = pas + 1
print("pas :", pas)
print("x :", round(x, 3))
# Mettez taux à 0.5, puis relancez : combien de pas faut-il ?

Un pas trop grand fait diverger la descente

Un taux trop grand dépasse le minimum et tombe de l’autre côté, plus haut qu’avant. Le pas suivant dépasse encore plus loin. Les valeurs de x grandissent : c’est la divergence.

Avec un taux de 1,1 sur la même fonction, le programme saute de part et d’autre de 3 en s’éloignant.

Écrire la descente au taux 1,1

Commande
docker exec jupyter sh -c "printf 'x = 0.0\nfor i in range(5):\n    x = x - 1.1 * 2 * (x - 3)\n    print(i + 1, round(x, 4))\n' > trop_grand.py"

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.

Voir la descente diverger

Commande
docker exec jupyter python3 trop_grand.py

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.

Une erreur fréquente

Attention

Beaucoup pensent qu’un taux plus grand fait toujours aller plus vite. C’est vrai jusqu’à un seuil. Au-delà, chaque pas dépasse le minimum et la descente s’éloigne. Commencez petit, comme 0,1, et agrandissez tant que l’erreur baisse.

Pour aller plus loin

Dans le terminal, éditez trop_grand.py : essayez des taux de 0,9, 1,0 et 1,01. Notez à partir de quel taux x cesse de se rapprocher de 3.

La leçon suivante utilise cette descente pour ajuster une droite à des points.

À 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.