01-02-02 — Forward Pass e Backward Pass (Conceitual)
A Analogia: Aprender a Arremessar
Imagine aprender a arremessar uma bola numa cesta às cegas. Você arremessa (forward pass), alguém diz "errou por 2 metros à direita e 1 metro acima" (loss function), você ajusta o ângulo e força para a próxima tentativa (backward pass + gradient descent). Repetindo milhares de vezes, você calibra os parâmetros do arremesso sem ninguém explicar explicitamente a física.
Redes neurais aprendem exatamente assim — sem que ninguém explique as regras. Só feedback sobre o erro.
Forward Pass: Dados Fluindo
O forward pass é a direção "normal" de computação. Você entra com dados, eles percorrem a rede da esquerda para a direita, e no final você tem uma previsão.
Durante o forward pass, cada camada recebe os valores da camada anterior, aplica seus pesos e função de ativação, e passa o resultado adiante. O modelo não aprende nada ainda — está só "pensando".
Loss Function: Medir o Erro
A loss function (função de perda) transforma a diferença entre o que o modelo previu e o que era correto num único número. Quanto maior o número, pior o modelo está.
Exemplos sem matemática:
- Classificação (spam/não-spam): a loss mede quão confiante o modelo estava na resposta errada. Se ele disse "99% spam" e era legítimo, a perda é enorme
- Regressão (prever preço): a loss mede a distância entre o preço previsto e o real — como a "régua do erro"
- Geração de texto: a loss mede quão surpreso o modelo ficou com a palavra correta — se ele previu "banco" com 1% de probabilidade e era "banco", alta perda
Backward Pass: O Erro Volta
O backward pass (ou backpropagation) usa o erro calculado pela loss function e o propaga de trás para frente — da saída de volta para a entrada. Cada peso na rede recebe uma indicação de "quanto ele contribuiu para o erro" e "em que direção deve mudar para reduzir o erro".
A intuição: se um peso alto numa certa conexão resultou em erro, esse peso deveria diminuir um pouco. Se um peso estava na direção certa, deveria aumentar um pouco.
O algoritmo que faz esse cálculo de trás para frente se chama backpropagation, desenvolvido por Rumelhart, Hinton e Williams em 1986. Foi o breakthrough que tornou o treinamento de redes profundas viável.
Gradient Descent: A Bússola do Aprendizado
Imagine que os pesos da rede formam uma paisagem montanhosa. A loss é a altitude — você quer chegar no vale mais baixo (mínimo da loss). O gradient descent é o algoritmo de descer essa montanha um passo de cada vez, sempre na direção que desce mais rápido.
- Learning rate: o tamanho de cada passo. Muito grande: você pula o vale. Muito pequeno: leva eternidade
- Epoch: uma passagem completa pelo dataset de treino
- Batch: quantos exemplos você processa antes de atualizar os pesos
O Loop de Treinamento
Treinamento vs. Inference: A Diferença de Custo
Entender esse loop explica por que treinamento é caro e inference é barato:
- Treinamento: requer forward pass + backward pass + atualização de pesos. Para cada exemplo do dataset. Por milhares de epochs. GPT-3 custou ~US$4 milhões só em compute para treinar
- Inference: só o forward pass. Você passa os dados e pega a resposta. 100x–1000x mais barato que treinamento
Quando você usa a API do GPT-4, está pagando pela inference — o treinamento já aconteceu uma vez, custou muito, e a OpenAI amortiza esse custo em milhões de requisições.
Exemplo Prático: O Loop de Treino em Pseudo-Código
# Pseudocódigo conceitual — não precisa rodar
for epoch in range(num_epochs):
for batch in training_data:
# 1. Forward pass — dados fluem pela rede
predictions = model(batch.inputs)
# 2. Loss — mede o erro
loss = loss_function(predictions, batch.labels)
# 3. Backward pass — calcula gradientes
loss.backward()
# 4. Gradient descent — atualiza pesos
optimizer.step()
optimizer.zero_grad() # limpa gradientes para o próximo batch
print(f"Epoch {epoch}, Loss: {loss.item():.4f}")
# Esperamos ver esse número cair a cada epoch
Desafio
Fontes
- Wikipedia — Backpropagation — Rumelhart, Hinton, Williams (1986) e fundamentos
- Wikipedia — Gradient Descent — Algoritmo, variantes e intuição geométrica
- Wikipedia — Loss Function — Tipos de loss e quando usar cada uma
- Microsoft Learn — Train Models with Azure ML — Como o treinamento funciona na prática no Azure