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 : comment un réseau apprend

Après cette leçon: Je peux expliquer comment un réseau de neurones apprend de ses erreurs.

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

Comment un réseau corrige-t-il ses erreurs ?

La descente de gradient est la méthode qui règle les poids d’un réseau de neurones pour réduire son erreur. C’est elle qui transforme un réseau de nombres au hasard en un réseau qui répond bien.

Un loueur de vélos prédit ses locations à partir de la température. Chaque jour, il compare sa prédiction à la réalité, et il corrige un peu son réglage.

À la fin de cette leçon

Remarque

Je peux expliquer comment un réseau de neurones apprend de ses erreurs.

Mots clés

MotCe que ça veut direExemple
Perteun nombre qui mesure l’erreur du réseau
Gradientla pente de la perte quand on change un poids
Descente de gradientcorriger les poids en descendant la pente de la perte
Taux d’apprentissagela taille de chaque correction0.125
Époqueun passage sur toutes les données d’entraînement
Rétropropagationle calcul des gradients, de la sortie vers l’entrée

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

La perte mesure l’erreur du réseau

Pour corriger un réseau, il faut mesurer son erreur en un seul nombre. Ce nombre est la perte.

Pour chaque jour, on prend l’écart entre la prédiction et la vraie valeur, puis on le met au carré. La perte est la moyenne de ces carrés. Elle vaut 0 quand toutes les prédictions sont justes.

Exemple travaillé : la perte pour quatre poids

PoidsPrédictions (x = 1, puis 2)ErreursPerte
00 et 0-2 et -4(4 + 16) / 2 = 10
11 et 2-1 et -2(1 + 4) / 2 = 2,5
22 et 40 et 00
33 et 61 et 2(1 + 4) / 2 = 2,5

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

La perte pour cinq poids

Commande
docker exec jupyter python3 -c "for w in [0, 1, 2, 3, 4]: print(w, ((w * 1 - 2) ** 2 + (w * 2 - 4) ** 2) / 2)"

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 donne le sens de la correction

Imaginez la perte comme une vallée dont le poids est la position. Le gradient est la pente à l’endroit où vous êtes. Il vaut 0 au fond.

Une pente négative veut dire que la perte baisse quand le poids monte : il faut donc l’augmenter. On corrige le poids ainsi : nouveau poids = ancien poids - taux × pente.

Exemple travaillé : un pas depuis le poids 0

xyPrédictionErreur2 × erreur × x
120-2-4
240-4-16
Moyenne-10, c’est la pente
Nouveau poids0 - 0,125 × (-10) = 1,25

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

Quatre pas de descente en Python

Code: python
xs = [1, 2]
ys = [2, 4]
w = 0.0
taux = 0.125

for pas in range(4):
    pente = 0.0
    perte = 0.0
    for n in range(len(xs)):
        erreur = w * xs[n] - ys[n]
        pente = pente + 2 * erreur * xs[n] / len(xs)
        perte = perte + erreur * erreur / len(xs)
    print(pas, "poids", w, "perte", perte, "pente", pente)
    w = w - taux * pente
# Passez taux à 0.5 puis relancez.
# Que devient la perte d’un pas au suivant ?

Le taux d’apprentissage règle la taille du pas

Le taux d’apprentissage multiplie la pente. Un petit taux avance prudemment mais lentement. Un grand taux avance vite.

Trop grand, il fait sauter par-dessus le fond de la vallée. Avec un taux de 0,5, le poids passe de 0 à 5, puis à -2,5, puis à 8,75. La perte monte au lieu de baisser.

Une erreur fréquente

Attention

Beaucoup pensent qu’un taux plus grand fait toujours apprendre plus vite. Ce n’est vrai que jusqu’à un seuil. Au-delà, la perte monte : si elle augmente d’une époque à l’autre, baissez le taux.

La rétropropagation calcule les gradients d’un réseau

Un vrai réseau a des milliers de poids. Il faut la pente de la perte pour chacun. La rétropropagation (backpropagation en anglais) les calcule de la sortie vers l’entrée.

Chaque couche reçoit l’erreur de la couche d’après et en tire ses propres pentes. Les bibliothèques font ce calcul pour vous. La boucle d’entraînement, elle, reste celle de cette leçon.

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