Perceptron multicamadas e representações ocultas

2 min

Objetivo: construir mentalmente um MLP e contar seus parâmetros.

Um MLP é uma rede de propagação direta formada por camadas totalmente conectadas.

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

Uma camada Linear(p, q) contém p × q pesos e q vieses, ou seja (p + 1)q parâmetros. Um modelo 784 → 128 → 10 contém, portanto, 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),
)

Camadas ocultas

« Oculta » significa que sua saída não é nem a entrada bruta nem a predição entregue. Ela constrói uma representação intermediária. Não se deve supor que cada neurônio tenha um sentido humano simples; uma representação é frequentemente distribuída por várias unidades.

Camada de saída

A saída depende da tarefa:

TarefaSaída bruta
Regressão escalar1 valor
Classificação binária1 logit
Classificação em K classesK logits
Multilabel com K rótulosK logits independentes

Um logit é uma pontuação não normalizada. Em classificação multiclasse, o PyTorch espera em geral os logits diretamente; CrossEntropyLoss aplica a transformação numericamente estável apropriada.

Armadilhas

  • Adicionar softmax no modelo antes de CrossEntropyLoss.
  • Contar a camada de entrada como uma camada parametrizada.
  • Escolher centenas de milhões de parâmetros sem dados nem justificativa.

Verificação rápida

Quantos parâmetros contém Linear(20, 5)? Qual dimensão de saída para 7 classes exclusivas?

Respostas

20×5 + 5 = 105. São necessários 7 logits.

Atividade de domínio — Orçamento de parâmetros

Calcule formas e parâmetros de um MLP 20 → 8 → 5 → 3, vieses incluídos. Em seguida, proponha uma variante duas vezes menor e especifique o que você mantém constante para comparar as duas. Sucesso: cada matriz está orientada corretamente e o protocolo não toca no teste.

Propagação das dimensões em um MLP

Leitura: uma camada linear muda a última dimensão, nunca o tamanho do lote. Para uma classificação em K classes, a última camada produz exatamente K logits. A principal armadilha é aplicar uma ativação de saída incompatível com a função de perda, por exemplo softmax antes de CrossEntropyLoss.