Formation libre — apprentissage automatique
Pas une animation, pas une vidéo : un réseau de neurones authentique, avec propagation avant, rétropropagation et descente de gradient — écrit à la main dans cette page, sans aucune bibliothèque. Posez des points, lancez l'entraînement, regardez la frontière de décision se déformer jusqu'à séparer vos données. En cinq minutes vous saurez ce qu'« apprendre » veut dire pour une machine, et vous aurez vu de vos yeux l'endroit exact où un réseau trop simple échoue.
Faites défiler
Le point de départ
Voici tout ce qu'un neurone fait : il prend vos coordonnées, les multiplie par deux nombres appelés poids, ajoute un troisième nombre appelé biais, et regarde si le résultat est positif ou négatif. Géométriquement, cela trace une droite et demande de quel côté vous êtes. Bougez les trois curseurs : vous pilotez le neurone à la main.
Survolez pour interroger le neurone en un point
Sans biais, la droite passerait forcément par l'origine. C'est lui qui lui permet d'aller où il faut.
La formule complète, sans rien cacher. Le neurone calcule z = w₁·x + w₂·y + b, puis applique une fonction qui écrase ce nombre entre 0 et 1 — ici la sigmoïde, σ(z) = 1/(1+e^−z). C'est tout. Les deux poids donnent l'orientation de la droite, le biais sa position. Quand vous entendez qu'un modèle a « 400 milliards de paramètres », ce sont exactement ces nombres-là — juste beaucoup, beaucoup plus nombreux. Aucune magie supplémentaire n'intervient : c'est la même opération, répétée à une échelle qu'on ne peut plus se représenter.
La bascule
Vous venez de régler les poids à la main. Un réseau les trouve tout seul par une méthode d'une simplicité déroutante : il regarde de combien il s'est trompé, calcule dans quelle direction chaque poids devrait bouger pour se tromper un peu moins, et fait un petit pas dans cette direction. Puis recommence. Des milliers de fois. C'est la descente de gradient, et c'est littéralement tout ce que « l'apprentissage » recouvre.
Cliquez pour ajouter un point · maj+clic pour l'autre classe
Perte au fil des époques
Ce qui se passe à chaque pas, en clair. Pour chaque point, le réseau produit une prédiction entre 0 et 1. On mesure l'écart avec la bonne réponse — c'est la perte. Puis vient l'astuce : en dérivant, on obtient pour chaque poids un nombre qui dit « si tu augmentes ce poids, la perte augmente d'autant ». Il suffit donc d'aller dans le sens opposé. La vitesse d'apprentissage règle la taille du pas : trop petite, l'entraînement rampe ; trop grande, il saute par-dessus la solution et diverge. Poussez le curseur à 3 pour voir la perte exploser — c'est instructif, et c'est un problème que rencontrent aussi les modèles à des milliards de paramètres.
L'échec qui a gelé la recherche pendant quinze ans
Voici XOR : deux points en haut à gauche et en bas à droite d'une classe, deux autres en diagonale de l'autre. Essayez de tracer une seule droite qui les sépare. Vous n'y arriverez pas, et le réseau non plus — pour la même raison, qui n'est pas un manque de puissance mais une impossibilité géométrique. Lancez l'entraînement et regardez la précision plafonner autour de 50 %.
Ajoutez des neurones cachés et relancez
Perte au fil des époques
1969 : le livre qui a tout arrêté. Marvin Minsky et Seymour Papert publient Perceptrons, où ils démontrent proprement ce que vous venez de constater : un perceptron à une seule couche ne peut représenter que des fonctions linéairement séparables, et XOR n'en est pas une. Le résultat était juste. Sa réception l'était moins : la démonstration ne portait que sur le cas à une couche, mais elle a été lue comme une condamnation des réseaux de neurones en général. Les financements se sont taris, et le domaine est entré dans ce qu'on appelle le premier hiver de l'IA. Il faudra attendre 1986 et la popularisation de la rétropropagation par Rumelhart, Hinton et Williams pour que les couches cachées deviennent entraînables — et que le mur tombe.
Pourquoi une couche cachée suffit. Ajoutez ne serait-ce que deux neurones cachés et regardez la frontière : elle n'est plus droite, elle se plie. Chaque neurone caché trace toujours sa propre droite — c'est le neurone de sortie qui les combine, et une combinaison de droites peut découper le plan en régions arbitrairement complexes. C'est le théorème d'approximation universelle : un réseau à une seule couche cachée, pourvu qu'elle soit assez large, approche n'importe quelle fonction continue d'aussi près qu'on veut. Le théorème ne dit pas combien de neurones il faudrait, ni comment les trouver — ce qui explique pourquoi les vrais modèles empilent des dizaines de couches plutôt qu'une seule très large.
À vous
Tous les réglages sont ouverts. Dessinez vos propres données en cliquant, choisissez l'architecture, la fonction d'activation, la vitesse. Essayez de faire apprendre les spirales — c'est le cas difficile, celui qui demande une vraie profondeur. Et essayez aussi de casser le réseau : c'est en le voyant échouer qu'on comprend ce qu'il fait.
Clic = classe A · maj+clic = classe B · glisser pour dessiner
Perte au fil des époques
Le nombre de paramètres d'une couche : deux poids par neurone plus un biais. Les modèles de langage suivent exactement la même comptabilité, avec des milliards de termes.
La fonction la plus utilisée aujourd'hui : max(0, z). Plus rapide que la sigmoïde et moins sujette au gradient qui s'évanouit — mais un neurone peut « mourir » et ne plus jamais s'activer.
Rumelhart, Hinton et Williams popularisent la rétropropagation. La méthode existait avant eux, mais c'est cet article qui a montré qu'elle rendait les couches cachées entraînables.
AlexNet gagne ImageNet avec un écart considérable. Rien de nouveau en théorie — mais des GPU, des données et de la patience. La théorie attendait depuis vingt-cinq ans.
Ce que vous venez de voir échouer, et pourquoi c'est essentiel. Trop peu de neurones : le réseau ne peut pas plier la frontière assez, il sous-apprend. Trop de neurones avec peu de points : il finit par mémoriser chaque exemple, y compris le bruit, et sa frontière devient un contour tarabiscoté qui ne généralisera pas — c'est le sur-apprentissage. Vitesse trop élevée : la perte explose au lieu de descendre. Ces trois échecs sont exactement ceux que rencontrent les équipes qui entraînent les plus gros modèles du monde. La différence d'échelle ne change pas la nature des problèmes.
La limite qu'il faut avoir en tête. Ce que vous venez de faire est du vrai apprentissage supervisé — même mathématique, mêmes équations que dans un modèle industriel. Ce qui change à grande échelle, ce n'est pas la méthode : ce sont l'architecture, le volume de données, et les milliers d'astuces d'ingénierie qui rendent l'entraînement stable sur des millions d'étapes. Mais la boucle est identique : prédire, mesurer l'erreur, corriger un peu, recommencer. Un modèle de langage entraîné pendant des mois sur des milliers de processeurs fait, à chaque instant, exactement ce que fait cette page — en beaucoup plus grand.
Vérifier par vous-même
Le code de cette page implémente réellement la propagation avant, la rétropropagation et la descente de gradient. Il est lisible dans le source, commenté, et n'utilise aucune bibliothèque. Aucune donnée ne sort de votre navigateur.
a − y. C'est cette simplification qui rend le code si court.