Master Smart Cities · Introduction aux réseaux de neurones
🚲 Apprendre à prévoir l’affluence d’une station de vélos
Un réseau de neurones est un programme qui apprend par l’exemple au lieu de suivre des règles écrites à la main. Ici, on lui montre des situations vécues par une station de vélos en libre-service (l’heure, le jour, la météo) et le niveau d’affluence observé (faible, moyenne ou forte), et il apprend à prévoir l’affluence d’une situation qu’il n’a jamais vue.
📖 Comment lire cette page
- À gauche : la situation de la station (heure ? jour ouvré ou week-end ? température ? pluie ? vent ?). Chaque valeur est ramenée entre 0 et 1 avant d’entrer dans le réseau (heure ÷ 24, température ÷ 35 °C, pluie ÷ 10 mm/h, vent ÷ 60 km/h, jour ouvré = 1 et week-end = 0) : c’est la normalisation des données. La page affiche les valeurs en unités réelles.
- À droite : la réponse du réseau — affluence faible, moyenne ou forte.
- Au milieu : des neurones cachés dont le réseau ajuste les poids pour combiner les informations (par exemple « jour ouvré ET heure de pointe »). Personne ne lui dit lesquels.
- Les traits : plus un trait gris est épais, plus la valeur absolue de son poids est grande. Cette importance s’appelle un poids ; c’est ce qui change pendant l’apprentissage.
- Ce que le réseau règle : deux sortes de nombres, appris pendant l’entraînement. Les poids (l’importance de chaque connexion, visible dans l’épaisseur des traits) et les biais (un petit décalage propre à chaque neurone, qui le rend plus ou moins facile à allumer ; il n’est pas dessiné sur le schéma). Apprendre, c’est trouver les bons poids et les bons biais.
Au départ, le réseau ne sait rien : ses réponses dépendent de poids initialisés au hasard et ne sont pas encore fiables. C’est normal, c’est tout l’intérêt de l’apprentissage !
🧭 Parcours en 4 étapes
- Avant d’apprendre : choisis « Jour ouvré, 8 h » ci-dessous. Regarde les trois barres de réponse : elles se ressemblent, le réseau hésite.
- Apprends : clique sur « Apprendre ». Observe les traits changer d’épaisseur et la courbe d’erreur évoluer (elle baisse généralement).
- Reteste : la forte affluence de 8 h est maintenant reconnue. Essaie le week-end et la nuit.
- Invente une situation : avec les curseurs, crée une situation imaginaire (ex. : un jour ouvré à midi, ou une tempête à l’heure de pointe). Que répond le réseau ?
Pour voir les calculs en détail, ouvre « Explorer le calcul » sous le schéma, ou « Mode avancé » en bas de page.
Un « cycle » affiché correspond à cinq passages sur les neuf exemples (cinq époques). Les poids sont ajustés après chaque exemple : descente de gradient stochastique, dans un ordre fixe.
🔍 Explorer le calcul : étapes, inspecter un neurone, modifier un poids
Propagation complète — clique sur « Étape suivante » pour commencer.
Les étapes ne changent pas les poids : elles dévoilent les calculs de gauche à droite. Clique sur un neurone pour voir son calcul, ou sur une connexion pour régler son poids et afficher les signes + ou − directement sur le réseau.
Les curseurs changent la situation testée, pas le réseau. Teste aussi des situations imaginaires !
Deux courbes pour comparer les exemples appris aux situations jamais utilisées pour corriger les poids. Avec seulement 8 tests synthétiques, la courbe de test peut remonter légèrement après un certain nombre de cycles (surapprentissage), ou pas.
Lance l’apprentissage pour voir le minimum atteint par chaque courbe. Survole la courbe pour lire les valeurs.
Le réseau n’a encore rien appris. Teste une situation, puis clique sur « Apprendre ».
🛠️ Mode avancé : fiches des neurones et données d’apprentissage / test
Chaque neurone combine les cinq entrées avec ses poids et son biais. Les barres bleues représentent des poids positifs, les orange des poids négatifs. L’activation dépend de la situation choisie ; les poids ne changent que lors de l’apprentissage ou d’une modification manuelle. Les trois poids de sortie indiquent les contributions possibles aux scores, sans attribuer au neurone une signification unique.
Les cinq informations n’ont ni les mêmes unités ni les mêmes ordres de grandeur (des heures, des °C, des mm/h, des km/h). Avant de les donner au réseau, on les ramène toutes à une échelle commune entre 0 et 1 : c’est la normalisation (mise à l’échelle « min-max »).
Formule générale : xnormalisé = (x − min) / (max − min). Ici le minimum vaut 0 pour toutes les informations, donc on divise simplement par le maximum choisi. Le tableau ci-dessous se met à jour avec la situation choisie ou réglée avec les curseurs.
Pourquoi normaliser ?
- Rendre les entrées comparables. Sans normalisation, avec un même poids, une valeur « 60 km/h » écraserait une valeur « 1 » (jour ouvré). Les traits gris (importance des poids) n’ont de sens que si toutes les entrées ont la même échelle.
- Éviter de saturer la sigmoïde. Si une entrée valait 60 avec un poids de +1, on aurait z ≥ 60 : σ(z) serait collée à 1 (voir le graphique de la sigmoïde dans l’inspection d’un neurone). Le neurone ne réagirait plus aux petites variations et l’apprentissage deviendrait très lent.
- Stabiliser l’apprentissage. Le même pas de correction (0,18) s’applique à tous les poids : il convient mieux quand toutes les entrées ont des valeurs du même ordre.
Ce qu’il faut savoir (choix et limites)
- Les bornes sont un choix. Ici, 35 °C, 10 mm/h et 60 km/h sont des maximums choisis. Une valeur hors de l’échelle vue (par exemple 40 °C, soit 1,14) reste acceptée, mais le réseau ne l’a jamais rencontrée pendant l’apprentissage.
- Dans un projet réel, on calcule les bornes (ou la moyenne et l’écart-type) sur les données d’apprentissage, puis on applique exactement la même transformation aux nouvelles mesures des capteurs. Sinon, le réseau reçoit des valeurs qu’il ne sait pas interpréter.
- Variable à deux valeurs : « jour ouvré » est codé 1 et « week-end » 0.
- L’heure est circulaire : 23 h et 0 h sont proches dans la réalité, mais valent 0,96 et 0 une fois divisées par 24. On garde ce codage simple ici ; en pratique, on utilise souvent un sinus et un cosinus de l’heure. C’est l’une des raisons pour lesquelles le réseau a besoin de neurones cachés.
- Autre méthode courante : la standardisation, (x − moyenne) / écart-type, qui donne des valeurs centrées autour de 0.
📊 Données d’apprentissage et données de test
Les 9 exemples d’apprentissage servent à ajuster les poids. Les 8 exemples de test, différents (dont deux volontairement difficiles), ne sont jamais utilisés pour corriger les poids. Ils permettent de vérifier si le réseau généralise. Toutes ces données sont synthétiques et simplifiées, pas des relevés réels d’une station.
Les valeurs des cinq informations décrivent les entrées ; la colonne « Classe » est la bonne réponse attendue. Les colonnes « Prédiction » et « Score » sont recalculées après chaque entraînement.
🔬 Pour aller plus loin (vocabulaire technique)
Réseau à 5 entrées, une couche cachée de 2, 4 ou 8 neurones et 3 sorties (architecture 5 → N → 3). La couche cachée utilise la fonction sigmoïde, la sortie utilise la fonction softmax : elle transforme les trois valeurs brutes en trois scores positifs qui s’additionnent à 100 %.
L’apprentissage utilise la rétropropagation de l’erreur et la descente de gradient sur neuf exemples synthétiques. Les « poids » sont les coefficients des connexions ; les « activations » sont les valeurs des neurones.
Épaisseur colorée = |activation × poids| ; ligne grise = |poids|. Un cycle affiché réalise cinq passages sur les neuf exemples. Le bouton « Autre départ » change l’initialisation aléatoire des poids : l’apprentissage aboutit à un résultat comparable, mais pas identique.
Modèle pédagogique. Les pourcentages sont des scores, pas des probabilités calibrées. La réussite sur les données de test est mesurée sur seulement huit exemples synthétiques : elle ne garantit pas de prévoir l’affluence d’une vraie station.
© Didier Orlandi — webprofs.fr · Licence CC BY-NC-SA 4.0