Objectif : construire mentalement un MLP et compter ses paramètres.
Un MLP est un réseau à propagation avant formé de couches entièrement connectées.
a⁽⁰⁾ = x
z⁽ˡ⁾ = W⁽ˡ⁾a⁽ˡ⁻¹⁾ + b⁽ˡ⁾
a⁽ˡ⁾ = φ(z⁽ˡ⁾)Une couche Linear(p, q) contient p × q poids et q biais, soit (p + 1)q
paramètres. Un modèle 784 → 128 → 10 contient donc 784×128+128 + 128×10+10 = 101 770 paramètres.
from torch import nn
model = nn.Sequential(
nn.Flatten(),
nn.Linear(28 * 28, 128),
nn.ReLU(),
nn.Linear(128, 10),
)« Cachée » signifie que sa sortie n'est ni l'entrée brute ni la prédiction livrée. Elle construit une représentation intermédiaire. Il ne faut pas supposer que chaque neurone a un sens humain simple ; une représentation est souvent distribuée sur plusieurs unités.
La sortie dépend de la tâche :
| Tâche | Sortie brute |
|---|---|
| Régression scalaire | 1 valeur |
| Classification binaire | 1 logit |
| Classification K classes | K logits |
| Multilabel K labels | K logits indépendants |
Un logit est un score non normalisé. En classification multiclasse, PyTorch attend en
général les logits directement ; CrossEntropyLoss applique la transformation numérique
stable appropriée.
softmax dans le modèle avant CrossEntropyLoss.Combien de paramètres contient Linear(20, 5) ? Quelle dimension de sortie pour 7
classes exclusives ?
20×5 + 5 = 105. Il faut 7 logits.
Calculez formes et paramètres d'un MLP 20 → 8 → 5 → 3, biais inclus. Proposez ensuite
une variante deux fois plus petite et précisez ce que vous gardez constant pour comparer les
deux. Réussite : chaque matrice est orientée correctement et le protocole ne touche pas au test.
Lecture : une couche linéaire change la dernière dimension, jamais la taille du lot. Pour
une classification à K classes, la dernière couche produit exactement K logits. Le
piège principal est d'appliquer une activation de sortie incompatible avec la fonction de
perte, par exemple softmax avant CrossEntropyLoss.