Backpropagation
Algoritmo que ajusta pesos de redes neurais propagando erro do output para input via chain rule.
O quê
Backpropagation (ou backprop) é o algoritmo que calcula os gradientes de uma função de loss em relação a cada parâmetro de uma rede neural, aplicando recursivamente a regra da cadeia do cálculo. Sem backprop, treinar redes neurais profundas com gradient descent seria computacionalmente intratável.
A ideia data dos anos 1960–70 — Henry J. Kelley (1960), Stuart Dreyfus (1962), Seppo Linnainmaa (1970, descreveu como “reverse-mode automatic differentiation”), Paul Werbos (1974, tese de doutorado em Harvard). Mas foi Rumelhart, Hinton e Williams (Nature, 1986) que mostraram, com experimentos convincentes, que backprop conseguia treinar multi-layer perceptrons para resolver tarefas não-triviais (XOR, paridade, codificação simétrica). Essa publicação tirou redes neurais do AI Winter pós-Minsky-Papert.
Toda rede neural moderna — CNN para visão, transformer para linguagem, diffusion para imagem, RL policy network — é treinada com alguma variante de backprop. É o algoritmo central do deep learning.
Como funciona
A regra da cadeia, aplicada
Considere uma rede com 2 camadas:
input x → [W₁, b₁] → hidden h = σ(W₁x + b₁) → [W₂, b₂] → output ŷ = W₂h + b₂
loss L = (ŷ - y)²
Queremos saber como L muda quando ajustamos cada peso. Para W₂ é direto:
∂L/∂W₂ = 2(ŷ - y) × h
Para W₁, precisamos da regra da cadeia (porque W₁ afeta ŷ indiretamente, via h):
∂L/∂W₁ = ∂L/∂ŷ × ∂ŷ/∂h × ∂h/∂W₁
= 2(ŷ - y) × W₂ × σ'(W₁x + b₁) × x
O insight do backprop: calcule os gradientes camada por camada, propagando do output em direção ao input. Cada camada precisa apenas da derivada parcial vinda da camada seguinte (∂L / ∂output daquela camada) — ela combina com derivadas locais (que conhece) para produzir ∂L / ∂input e ∂L / ∂parâmetros.
O passo computacional
Para uma rede com L camadas, treino de um exemplo é:
1. Forward pass: computar e armazenar ativações a[1], a[2], ..., a[L].
2. Loss: L = loss(a[L], y).
3. Backward pass:
- Iniciar com delta[L] = ∂L / ∂a[L].
- Para l = L-1, L-2, ..., 1:
delta[l] = (W[l+1])ᵀ · delta[l+1] ⊙ σ'(z[l])
∂L/∂W[l] = delta[l] · a[l-1]ᵀ
4. Update: W[l] := W[l] - η · ∂L/∂W[l].
Custo computacional do backward pass é da mesma ordem que o forward pass — uma matriz multiplication por camada, mas no sentido inverso. Esse é o ganho central: gradientes para milhões de parâmetros pelo preço de duas passadas de inferência.
Automatic Differentiation moderno
PyTorch e JAX implementam backprop como caso particular de reverse-mode automatic differentiation (AD). Você não escreve a fórmula da derivada: o framework constrói um grafo computacional durante o forward pass, e percorre o grafo no sentido inverso aplicando regras de derivação locais.
import torch
x = torch.tensor([1.0, 2.0], requires_grad=True)
y = (x ** 2).sum() # forward: y é função de x
y.backward() # backward: x.grad agora contém ∂y/∂x = [2.0, 4.0]
Cada operação tensorial tem uma “regra de gradiente” registrada. A magia (autograd) é só varredura do grafo. Internamente, esse grafo pode ser otimizado, paralelizado em GPU, ou — em compiladores como XLA — transformado em kernels customizados.
Por que não tinha sido descoberto antes
Backprop conceitualmente é só a regra da cadeia. Linnainmaa (1970) publicou o algoritmo geral. Werbos (1974) aplicou explicitamente a redes neurais em sua tese. Porque, então, o paper de 1986 é citado como “invenção”?
Três razões pragmáticas:
- Hardware: em 1970, computar gradientes para redes maiores que toy era proibitivamente caro.
- Sigmoid bem comportada: redes pré-1986 usavam tipicamente função degrau (perceptron), cujo gradiente é zero quase em todo lugar. Sigmoid (proposta por outros antes, mas adotada amplamente pós-RHW) tem derivada $\sigma(z)(1-\sigma(z))$, sempre não-nula. Backprop precisa de ativações diferenciáveis.
- Demonstração convincente: Rumelhart, Hinton e Williams resolveram problemas que os críticos (Minsky/Papert) listaram como insolúveis (XOR, paridade), mostrando experimentalmente que MLPs treinados com backprop funcionavam.
A combinação desses três fatores fez backprop “decolar” em 1986, mesmo sendo matematicamente antigo.
Por que importa
Backprop é o método de gradiente único do deep learning. Adam, SGD, RMSProp, AdamW — todos os otimizadores modernos pressupõem que backprop forneceu os gradientes. Mudar de otimizador é trivial; treinar sem backprop é território de pesquisa exótica (Hebbian learning, evolution strategies, target propagation).
Habilita escala. Quando GPT-4 treina com 1.8T parâmetros, backprop computa 1.8T gradientes em cada passo. O custo escala linearmente com o número de parâmetros — exatamente porque a regra da cadeia se aplica localmente. Sem essa propriedade, treinar modelos grandes seria computacionalmente impossível.
Não é como o cérebro aprende. Esse ponto é debatido há 40 anos. O cérebro biológico não tem um sinal de “erro propagado para trás” sináptico óbvio. Hinton, em palestras recentes (2023–2024), explicitamente disse que [VERIFICAR — Hinton “Forward-Forward Algorithm” paper, NeurIPS 2022 workshop] backprop pode não ser biológicamente plausível, e propôs alternativas como o Forward-Forward Algorithm. Por enquanto, nada funciona melhor que backprop em prática.
Gradiente é interpretável. Você consegue olhar para os gradientes e diagnosticar problemas: explodindo (norma > 1000)? Saturando (norma ~ 0)? Tudo em uma direção? Gradient checking é a primeira ferramenta de debugging em DL.
Estado em 2026
- Backprop continua o algoritmo universal de treino. Cada framework — PyTorch, JAX, MLX, TensorFlow — implementa autograd. Nenhuma alternativa séria desbancou.
- Mixed precision (FP16 + FP32 mestre, BFloat16) é padrão para reduzir memória do backward pass. H100/B200 têm hardware otimizado para BF16.
- Gradient checkpointing (re-computar ativações no backward em vez de armazenar) virou padrão para modelos enormes — troca compute por memória.
- Distributed training (FSDP, ZeRO, DeepSpeed) distribui o backward pass entre GPUs/nós; backprop matematicamente continua o mesmo, mas a coreografia de comunicação é o estado-da-arte.
- Forward-Forward (Hinton 2022), DFA — Direct Feedback Alignment (Lillicrap et al. 2016) e outras alternativas circulam em papers, mas em 2026 nenhuma destrona backprop em benchmarks reais.
- Backprop através de tempo (BPTT) treina RNNs/LSTMs; mas RNNs estão obsoletos para sequências longas — transformers + atenção venceram.
- Reflexões filosóficas sobre Hinton (Nobel 2024) sempre voltam ao paper de 1986. Sem aquele paper, talvez não houvesse AlexNet, ImageNet moment, ou GPT.
Backprop é o mecanismo invisível. Não é tema de carta de jogador médio, mas é o que faz qualquer Modelo do jogo aprender entre matches.
Tratamento de carta — proposta
Backpropagation Técnica · Classical ML / Deep Learning · custo 🟦🟦
Escolha um Modelo seu que sofreu dano neste turno: dê +1/+1 permanente. Ele entra “tocado” no próximo turno (não pode atacar).
“O erro volta. Os pesos ajustam. O próximo passo já sabe um pouco mais.”
A mecânica reflete o trade-off real do treino: backprop te dá força adicional permanente, mas custa um turno de “treino” (não atacar) — exatamente como um modelo em fine-tuning sai temporariamente do circuito de produção.
Veja também
- Rumelhart, D. E., Hinton, G. E., Williams, R. J. (1986). Learning representations by back-propagating errors. Nature, 323(6088).
- Werbos, P. (1974). Beyond Regression: New Tools for Prediction and Analysis in the Behavioral Sciences. PhD thesis, Harvard University.
- Linnainmaa, S. (1970). The representation of the cumulative rounding error of an algorithm as a Taylor expansion of the local rounding errors. MS thesis, University of Helsinki.
- LeCun, Y., Bottou, L., Bengio, Y., Haffner, P. (1998). Gradient-based learning applied to document recognition. Proceedings of the IEEE.