Module 08 · Comprendre depuis zéro

Bases des réseaux de neurones

Partir d'une droite, écrire à la main la descente de gradient et la rétropropagation, entraîner un premier petit réseau, puis passer à PyTorch pour reconnaître des chiffres manuscrits, et voir de ses propres yeux le surapprentissage et les moyens de le combattre.

Leçons

  1. 01
    Régression linéaire avec numpy

    Partir du problème le plus simple – prédire le prix d'un logement d'après sa surface. Une droite comme modèle, l'erreur quadratique moyenne pour mesurer la qualité, puis la méthode la plus bête, essayer une à une quatre-vingt-dix mille droites, pour voir clairement ce que « l'entraînement » cherche au juste.

    35 minutes · Débutant
  2. 02
    La descente de gradient

    Ne plus essayer à l'aveugle, mais calculer à chaque étape dans quelle direction et de combien modifier les paramètres. Comprendre la dérivée à partir de la pente, calculer les gradients à la main, écrire la boucle de la descente de gradient, puis voir de ses propres yeux ce qui se passe avec un taux d'apprentissage trop petit, trop grand, et des données non standardisées.

    45 minutes · Débutant
  3. 03
    La rétropropagation à la main

    Écrire une classe de quelques dizaines de lignes où chaque nombre se souvient de la façon dont il a été calculé ; on peut alors, en partant de la perte, faire remonter les gradients jusqu'à chaque paramètre grâce à la règle de dérivation en chaîne. La vérifier par dérivation numérique, puis s'en servir pour entraîner un petit réseau à apprendre le XOR.

    60 minutes · Intermédiaire
  4. 04
    Premiers pas avec PyTorch

    Refaire avec PyTorch ce que les trois leçons précédentes ont écrit à la main – tenseurs, dérivation automatique, nn.Module, optimiseurs. Chaque étape est comparée à la version écrite à la main : gradients calculés et paramètres entraînés sont exactement les mêmes.

    45 minutes · Débutant
  5. 05
    Reconnaître des chiffres manuscrits

    La première vraie tâche de classification – faire reconnaître à un réseau des chiffres manuscrits de 8×8 pixels. La différence entre classification et régression, ce que font softmax et l'entropie croisée, pourquoi entraîner par mini-lots, et enfin la matrice de confusion pour voir où il se trompe.

    45 minutes · Intermédiaire
  6. 06
    Le surapprentissage et comment le combattre

    Un réseau qui a tout juste sur le jeu d'entraînement mais ne progresse pas sur des données jamais vues souffre de surapprentissage. Provoquer volontairement un surapprentissage, puis essayer la décroissance des poids, le dropout, l'arrêt précoce et l'ajout de données, pour voir sur de vrais résultats lequel est le plus efficace.

    40 minutes · Intermédiaire

La seconde partie, « comprendre les grands modèles à partir de zéro », commence ici.

Dans la première partie, le grand modèle était pour vous une interface : on envoie du texte, on reçoit du texte. Cette partie l'ouvre pour comprendre comment il est entraîné. Ce module pose les fondations : quelle que soit la taille du modèle, les étapes centrales de son entraînement sont toujours les mêmes, calculer la perte, calculer les gradients, mettre à jour les paramètres. Ce module les réalise vous-même sur les exemples les plus petits.

Pas besoin de GPU : tout le code tourne en quelques secondes sur le CPU d'un portable ordinaire. Côté mathématiques, seules les dérivées du lycée servent, et chaque formule est vérifiée par du code et des valeurs numériques.

Pourquoi cet ordre

D'abord à la main avec numpy, ensuite PyTorch. Les leçons 1 à 3 n'utilisent aucun framework d'apprentissage profond : une droite pour comprendre « ce que cherche l'entraînement », la descente de gradient pour comprendre « comment on cherche », la rétropropagation pour comprendre « d'où viennent les gradients ». Avec cela, PyTorch à la leçon 4 n'est plus une boîte noire : pour chaque fonction, vous savez ce qu'elle fait en coulisse.

Les deux dernières leçons traitent de vraies données. La leçon 5 aborde une tâche de classification et introduit softmax et l'entropie croisée, que le module suivant réutilise telles quelles pour GPT. La leçon 6 traite du surapprentissage, un problème que rencontre l'entraînement de n'importe quel modèle.

Vous avez terminé quand

  • vous savez dire ce que fait « l'entraînement » : trouver un ensemble de paramètres qui rende la perte aussi petite que possible.
  • vous savez écrire à la main la boucle de la descente de gradient, dire ce qui se passe avec un taux d'apprentissage trop petit ou trop grand, et pourquoi il faut standardiser les entrées.
  • vous savez expliquer la rétropropagation par la règle de dérivation en chaîne, et vérifier par dérivation numérique un calcul de gradient que vous avez écrit.
  • vous savez écrire avec PyTorch une boucle d'entraînement complète : modèle, fonction de perte, optimiseur, remise à zéro des gradients, rétropropagation, mise à jour des paramètres.
  • vous savez dire pourquoi une tâche de classification utilise softmax et l'entropie croisée, et quelle est à peu près la perte d'un réseau à 10 classes au début de l'entraînement.
  • vous savez reconnaître le surapprentissage dans un journal d'entraînement, et dire ce que font les différents remèdes et quelles sont leurs limites.

Le code de ce module

Le code et les sorties des programmes sont reproduits tels qu’ils ont tourné : commentaires et sorties sont donc en chinois.