#sur-apprentissage — Ré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
- 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-1d'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. - 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. - 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. - Tape
/valpour 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. - Remède n°1 : plus de données. Tape
/points 200, puis relance/entrainer 200et compare. Avec 200 exemples, le bruit se moyenne : le même modèle n'a plus de quoi mémoriser chaque exception. - Remède n°2 : un modèle plus petit. Reviens à peu de données avec
/points 30, puis tape/taille 2-4-1et/entrainer 200. Quatre neurones ne peuvent pas mémoriser trente points : la frontière reste simple. - 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./val— Affiche ou masque les points de validation dans la scène./reinit— Revient à 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
- #neurone — Décomposons un neurone : entrées, poids, somme, activation.
- #dropout — Régularisation par dropout : le meilleur ami des réseaux profonds.
- #activation — Pourquoi une activation ? ReLU, sigmoid, tanh, Leaky ReLU, GELU et le gradient qui disparaît.
- #descente-de-gradient — La perte est un paysage. Le gradient dit où ça monte, on fait un pas dans l'autre sens.
- #rétropropagation — Le 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-apprentissage — Un gros modèle sur peu de données : la frontière de décision se tord jusqu'à mémoriser le bruit.
- #cnn-filtres — Une image est une grille de nombres. Un filtre 3×3 glisse dessus, multiplie, additionne : c'est une convolution.
- #is-it-einstein — Is 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-3d — Un mot devient un vecteur : proches dans l'espace = proches en sens, et on peut calculer dessus.