Perceptron multicouche et représentations cachées

2 min

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.

text
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.

python
from torch import nn

model = nn.Sequential(
    nn.Flatten(),
    nn.Linear(28 * 28, 128),
    nn.ReLU(),
    nn.Linear(128, 10),
)

Couches cachées

« 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.

Couche de sortie

La sortie dépend de la tâche :

TâcheSortie brute
Régression scalaire1 valeur
Classification binaire1 logit
Classification K classesK logits
Multilabel K labelsK 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.

Pièges

  • Ajouter softmax dans le modèle avant CrossEntropyLoss.
  • Compter la couche d'entrée comme une couche paramétrée.
  • Choisir des centaines de millions de paramètres sans données ni justification.

Vérification rapide

Combien de paramètres contient Linear(20, 5) ? Quelle dimension de sortie pour 7 classes exclusives ?

Réponses

20×5 + 5 = 105. Il faut 7 logits.

Activité de maîtrise — Budget de paramètres

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.

Propagation des dimensions dans un MLP

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.