Partie 7 · Apprendre
Bilan de la journée
Tu as parcouru, en une journée, tout le chemin d'un modèle : du neurone calculé à la main jusqu'au réseau entraîné, surveillé et jugé honnêtement. Voici la synthèse, partie par partie.
| Partie | Notion | À retenir (chiffres du cours) |
|---|---|---|
| 1. Le neurone | tenseur, somme pondérée, biais, activation | neurone : somme pondérée + biais, puis ReLU ou sigmoïde ; nn.Linear(4, 3) calcule W @ x + b |
| 2. La perte et ses pentes | entropie croisée, softmax, backward() | perte = moyenne des −log(p) ; perte.backward() range les pentes dans .grad ; perte de départ 11 organes ≈ 2,40 |
| 3. Descendre le gradient | pas η, optimiseur | paramètre − η × pente ; creux en w ≈ 1,46 ; pas trop petit : lent, trop grand : la perte remonte |
| 4. Un neurone pour la pneumonie | premier modèle entraîné | 784 pixels, 785 paramètres ; 95,0 % contre 74,2 % pour « toujours pneumonie » |
| 5. Le réseau des organes | couches cachées, 11 scores | 784 → 128 → 64 → 11 : 109 451 paramètres ; vérifications : perte 2,40 et un paquet par cœur |
| 6. Le sur-apprentissage | validation, meilleure époque, test | entraînement qui baisse + validation qui remonte ; poids de la meilleure époque ; test 17 778 images, une fois |
Comment les notions s'enchaînent
- Neurone → perte : un neurone produit un score ; la sigmoïde (deux réponses) ou la softmax (plusieurs) le transforme en probabilités, et la perte −log(p) mesure l'erreur.
- Perte → pentes → descente :
backward()dit dans quel sens bouger chaque paramètre ;step()fait le pas η × pente. - Boucle en cinq temps : prédire, mesurer, effacer les pentes, calculer les pentes, faire un pas : la même pour le neurone de la pneumonie et le réseau des organes.
- Modèle → note honnête : la perte baisse sur l'entraînement, mais c'est la validation qui dit si le modèle généralise ; le test donne la note finale.
- Toujours comparer : à une stratégie simple (74,2 % ; 15,9 %), sinon un chiffre ne veut rien dire.
Les trois vérifications avant de croire un modèle
| Vérification | Valeur attendue | Si ce n'est pas le cas |
|---|---|---|
| Perte au départ | environ −log(1/11) ≈ 2,40 (11 organes) ; −log(0,5) ≈ 0,69 (pneumonie) | mauvais format d'étiquettes, softmax ou sigmoïde en trop |
| Un seul paquet appris par cœur | perte proche de 0 (2,366 → 0,0013) | problème dans les étapes 3, 4 ou 5 de la boucle |
| Deux courbes de perte | entraînement et validation baissent ensemble | validation qui remonte : sur-apprentissage, garder la meilleure époque |
Ce que tu dois savoir expliquer
- Pourquoi le modèle renvoie des scores et pourquoi on les compare à 0 (et non 0,5) pour la pneumonie.
- Pourquoi
CrossEntropyLossreçoit les scores bruts : elle applique la softmax elle-même (sinon, double softmax). - Combien de paramètres a un réseau, couche par couche : entrées × sorties + sorties (8 635 ; 101 899 ; 109 451).
- Pourquoi on compare l'accuracy à « toujours la réponse la plus fréquente ».
- Ce qu'est le sur-apprentissage, comment on le reconnaît, et pourquoi
copy.deepcopyest nécessaire. - À quoi servent les trois groupes d'images (apprentissage, validation, test) et pourquoi le test ne se mesure qu'une fois.
- La limite du neurone : il lit les pixels un par un, sans savoir lesquels sont voisins. D'où la suite, en J2.
À toi de coder