Réseaux de neurones — cas concret
Estimer un loyer à la main prend 20 minutes, une expertise de terrain et un agent disponible. Et si un algorithme pouvait le faire en 12 millisecondes ?
On va construire ce réseau ensemble — de zéro. Étape par étape, avec de vraies données d'appartements grenoblois fictifs. À la fin, tu pourras faire tourner le modèle toi-même.
Étape 1
Chaque appartement = un exemple. Chaque colonne = un critère. Le réseau va apprendre la relation entre les deux.
On appelle chaque colonne une feature — une variable d'entrée. Ici on en a 5 : la surface, le nombre de pièces, le quartier, l'étage et la distance au tram. La dernière colonne (le loyer) est ce qu'on veut prédire — on appelle ça le label.
Le réseau va voir ces exemples des milliers de fois et ajuster ses paramètres pour que ses prédictions se rapprochent des loyers réels. C'est ça, apprendre — pas de règles programmées à la main, juste des exemples et des corrections répétées.
Pourquoi encoder les quartiers en chiffres ? Le réseau ne comprend que des nombres. "Presqu'île" ne lui dit rien — mais "3" oui. C'est une limite importante : l'ordre implicite (1 < 2 < 3) peut induire le réseau en erreur si les quartiers ne sont pas vraiment ordonnés. En pratique on utilise des techniques plus sophistiquées comme le one-hot encoding.
Ces 8 appartements sont fictifs mais cohérents avec les prix grenoblois. En vrai, un bon modèle immobilier s'entraîne sur des milliers d'exemples.
| Appartement | Surface (m²) | Pièces | Quartier | Étage | Tram (min) | Loyer réel |
|---|---|---|---|---|---|---|
| Appt. A | 45 | 2 | Échirolles 1 | 1 | 12 | 680 € |
| Appt. B | 72 | 3 | Championnet 2 | 3 | 5 | 950 € |
| Appt. C | 90 | 4 | Presqu'île 3 | 6 | 2 | 1 320 € |
| Appt. D | 30 | 1 | Échirolles 1 | 0 | 15 | 520 € |
| Appt. E | 65 | 3 | Presqu'île 3 | 4 | 3 | 1 080 € |
| Appt. F | 110 | 4 | Presqu'île 3 | 8 | 1 | 1 650 € |
| Appt. G | 55 | 2 | Championnet 2 | 2 | 7 | 810 € |
| Appt. H | 80 | 3 | Championnet 2 | 5 | 4 | 1 100 € |
Étape 2
Reçoit des données. Pondère. Transmet — ou se tait.
Imagine un employé qui note chaque critère d'un appartement, leur donne une importance, additionne tout — et donne son avis. Un neurone fait exactement ça.
b = biais — une constante que le neurone peut ajuster librement.
Survole les poids pour voir leur effet
Étape 3
On branche nos 5 features sur 5 neurones d'entrée. Ces neurones ne font rien de spécial — ils transmettent juste les valeurs. C'est le point d'entrée des données dans le réseau.
Étape 4
Sans elles, le réseau ne peut faire que de la règle de trois.
Une seule couche entrée → sortie ne peut apprendre que des relations linéaires. Or le loyer n'est pas linéaire — un étage élevé vaut plus seulement dans certains quartiers, pas tous.
Les couches cachées permettent au réseau d'apprendre ces interactions complexes. On en ajoute deux ici : une de 6 neurones, une de 4.
Chaque neurone caché se spécialise spontanément — l'un pourrait coder "grand appartement en centre-ville", un autre "petit logement périphérique". Personne ne le programme : ça émerge de l'entraînement.
Étape 5
Architecture finale : 5 → 6 → 4 → 1
Au total : 74 poids + 17 biais = 91 paramètres que le réseau va apprendre.
Étape 6
Au départ, les 91 paramètres sont initialisés aléatoirement. Le réseau ne sait rien. On lui présente l'Appt. A (45m², 2 pièces, quartier 1, étage 1, tram 12min — loyer réel : 680€).
C'est catastrophique — et c'est normal. L'entraînement va corriger ça.
poids positif poids négatif
Étape 7
À chaque epoch, le réseau voit tous les appartements. Pour chaque exemple :
Le forward pass c'est simple : les données entrent, traversent toutes les couches, et ressortent sous forme de prédiction. On compare avec le loyer réel et on calcule l'erreur — c'est la loss.
La backpropagation c'est l'inverse : on fait remonter l'erreur couche par couche en sens inverse, en calculant la responsabilité de chaque poids dans l'erreur finale. C'est du calcul différentiel — la règle de la chaîne appliquée au réseau.
La descente de gradient ajuste alors chaque poids dans la direction qui réduit l'erreur — d'un petit pas à la fois. Ce pas, c'est le learning rate. Trop grand : le réseau saute par-dessus la solution. Trop petit : il converge trop lentement.
On répète ça des centaines de fois sur tous les exemples — jusqu'à ce que l'erreur se stabilise. C'est ça, entraîner un réseau.
Étape 8
L'erreur diminue. Le réseau apprend.
La courbe ci-contre s'appelle la courbe de loss — c'est le journal de bord de l'apprentissage. Elle trace l'erreur moyenne du réseau à chaque epoch.
Elle descend vite au début — le réseau corrige ses erreurs grossières. Puis elle ralentit : les ajustements deviennent plus fins, les gains plus petits. Quand elle se stabilise, le modèle a convergé — il a appris tout ce qu'il peut apprendre de ces données.
Les pics que tu peux voir sur la courbe ? C'est le learning rate trop élevé qui fait "sauter" le gradient par-dessus un minimum. En vrai on utilise des techniques comme l'Adam optimizer pour éviter ça — mais pédagogiquement, ces pics sont parfaits pour illustrer pourquoi le choix du learning rate est crucial.
Démo live
Ajuste les curseurs — le réseau prédit en temps réel.
Lance d'abord l'entraînement en section 7 — essaie avant et après pour voir la différence !