Perceptrón multicapa y representaciones ocultas

2 min

Objetivo: construir mentalmente un MLP y contar sus parámetros.

Un MLP es una red de propagación hacia adelante formada por capas totalmente conectadas.

text
a⁽⁰⁾ = x
z⁽ˡ⁾ = W⁽ˡ⁾a⁽ˡ⁻¹⁾ + b⁽ˡ⁾
a⁽ˡ⁾ = φ(z⁽ˡ⁾)

Una capa Linear(p, q) contiene p × q pesos y q sesgos, es decir (p + 1)q parámetros. Un modelo 784 → 128 → 10 contiene por tanto 784×128+128 + 128×10+10 = 101 770 parámetros.

python
from torch import nn

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

Capas ocultas

«Oculta» significa que su salida no es ni la entrada bruta ni la predicción entregada. Construye una representación intermedia. No hay que suponer que cada neurona tiene un sentido humano simple; una representación suele estar distribuida entre varias unidades.

Capa de salida

La salida depende de la tarea:

TareaSalida bruta
Regresión escalar1 valor
Clasificación binaria1 logit
Clasificación de K clasesK logits
Multietiqueta con K etiquetasK logits independientes

Un logit es una puntuación no normalizada. En clasificación multiclase, PyTorch espera en general los logits directamente; CrossEntropyLoss aplica la transformación numérica estable apropiada.

Trampas

  • Añadir softmax en el modelo antes de CrossEntropyLoss.
  • Contar la capa de entrada como una capa parametrizada.
  • Elegir cientos de millones de parámetros sin datos ni justificación.

Comprobación rápida

¿Cuántos parámetros contiene Linear(20, 5)? ¿Qué dimensión de salida para 7 clases exclusivas?

Respuestas

20×5 + 5 = 105. Hacen falta 7 logits.

Actividad de dominio — Presupuesto de parámetros

Calcula formas y parámetros de un MLP 20 → 8 → 5 → 3, sesgos incluidos. Propón después una variante dos veces más pequeña y precisa qué mantienes constante para comparar las dos. Éxito: cada matriz está orientada correctamente y el protocolo no toca el conjunto de prueba.

Propagación de las dimensiones en un MLP

Lectura: una capa lineal cambia la última dimensión, nunca el tamaño del lote. Para una clasificación de K clases, la última capa produce exactamente K logits. La trampa principal es aplicar una activación de salida incompatible con la función de pérdida, por ejemplo softmax antes de CrossEntropyLoss.