Aller au contenu principal

Chargement du lab visuel…

#sur-apprentissageRéseaux de neurones

Un gros modèle sur peu de données : la frontière de décision se tord jusqu'à mémoriser le bruit.

Ce que tu vas manipuler

  1. Bienvenue dans #sur-apprentissage. Sur la scène : 30 points bruités — rose pour la classe 0, bleu pour la classe 1 — et un MLP 2-32-32-1 d'environ 1 200 paramètres, bien trop gros pour trente exemples. La frontière de décision, c'est la ligne où le modèle hésite (p = 0,5) : d'un côté il prédit rose, de l'autre bleu. Pour l'instant le fond est uni : rien n'a encore été appris.
  2. Lance /entrainer 30. La frontière apparaît, encore lisse et raisonnable : elle sépare grossièrement les deux lunes sans s'attarder sur les exceptions.
  3. Continue : /entrainer 200. Le modèle a assez de capacité pour aller chercher chaque point bruité : la frontière se tord, des tentacules apparaissent. L'accuracy train grimpe vers 100 % pendant que la val stagne ou baisse.
  4. Tape /val pour afficher les 300 points de validation (petits, translucides) que le modèle n'a jamais vus. Beaucoup tombent du mauvais côté des tentacules : c'est le prix de la mémorisation.
  5. Remède n°1 : plus de données. Tape /points 200, puis relance /entrainer 200 et compare. Avec 200 exemples, le bruit se moyenne : le même modèle n'a plus de quoi mémoriser chaque exception.
  6. Remède n°2 : un modèle plus petit. Reviens à peu de données avec /points 30, puis tape /taille 2-4-1 et /entrainer 200. Quatre neurones ne peuvent pas mémoriser trente points : la frontière reste simple.
  7. Remèdes n°3 et 4 : le dropout (canal #dropout) et l'early stopping — arrêter dès que la perte val remonte ; le trait pointillé du panneau droit marque cet instant. Joue librement : /bruit 0.8, /dataset cercles, /taille 2-64-64-64-1, /reinit. Prochaine étape : #cnn-filtres, où les motifs appris deviennent visibles.

Commandes du canal

  • /entrainer <époques=1..300>Continue l'entraînement du modèle courant (lr 0.05, ReLU, sortie sigmoid).
  • /taille <2-…-1>Change l'architecture (ex. 2-4-1, 2-32-32-1, 2-64-64-64-1) et repart de zéro.
  • /points <10..300>Change le nombre de points d'entraînement (la validation reste à 300) et repart de zéro.
  • /bruit <0..0.8>Change le bruit des données (train et val régénérés) et repart de zéro.
  • /dataset <lunes|cercles|xor>Change le jeu de données 2D et repart de zéro.
  • /valAffiche ou masque les points de validation dans la scène.
  • /reinitRevient à l'état initial : lunes, 30 points, 2-32-32-1, aucun entraînement.

Glossaire

Sur-apprentissage
Le modèle mémorise les exemples d'entraînement (jusqu'au bruit) au lieu d'apprendre la règle : excellent sur le train, mauvais sur des données nouvelles. Frontière tordue autour de chaque point.
Sous-apprentissage
Le modèle est trop simple pour la structure des données : mauvais partout, frontière trop lisse. Remède : plus de capacité, plus d'entraînement, de meilleures variables.
Généralisation
Capacité d'un modèle à bien prédire sur des données jamais vues. C'est le seul objectif qui compte ; la perte d'entraînement n'en est qu'un indice.
Compromis biais-variance
Biais = erreur due à un modèle trop simple ; variance = sensibilité aux données d'entraînement (modèle trop souple). Augmenter la capacité baisse le biais et monte la variance : on cherche l'équilibre.
Jeu de validation
Données mises de côté pour mesurer la généralisation pendant l'entraînement et choisir les hyperparamètres. Distinct du jeu de test, réservé au verdict final.
Arrêt précoce
On stoppe l'entraînement quand la perte de validation cesse de baisser, même si la perte d'entraînement continue : régularisation gratuite.
Capacité
Richesse des fonctions qu'un modèle peut représenter (nombre de paramètres, profondeur). Plus de capacité = risque de sur-apprentissage si les données sont peu nombreuses.
Bruit
Part des données qui ne suit aucune règle (erreurs de mesure, hasard). Un modèle qui l'apprend sur-apprend par définition.

Autres canaux du thème Réseaux de neurones

  • #neuroneDécomposons un neurone : entrées, poids, somme, activation.
  • #dropoutRégularisation par dropout : le meilleur ami des réseaux profonds.
  • #activationPourquoi une activation ? ReLU, sigmoid, tanh, Leaky ReLU, GELU et le gradient qui disparaît.
  • #descente-de-gradientLa perte est un paysage. Le gradient dit où ça monte, on fait un pas dans l'autre sens.
  • #rétropropagationLe graphe de calcul rejoué à l'envers : chaque nœud reçoit ∂L/∂(lui) et la règle de la chaîne fait le reste.
  • #sur-apprentissageUn gros modèle sur peu de données : la frontière de décision se tord jusqu'à mémoriser le bruit.
  • #cnn-filtresUne image est une grille de nombres. Un filtre 3×3 glisse dessus, multiplie, additionne : c'est une convolution.
  • #is-it-einsteinIs it Einstein ? Deux visages passent au scanner d’un réseau qui n’a appris qu’Einstein : Haythem → NON, Einstein → OUI. Regarder est gratuit ; toucher est Premium.
  • #embeddings-3dUn mot devient un vecteur : proches dans l'espace = proches en sens, et on peut calculer dessus.