Backpropagation é o método que as redes neurais usam para calcular gradientes: o quanto a perda mudaria se você alterasse um pouco cada peso ou viés. Em linguagem simples, ele diz ao modelo quais parâmetros empurraram a previsão na direção errada e em que medida.

A versão curta é simples: execute a rede para frente, meça o erro e depois volte pela mesma computação usando a regra da cadeia. Isso torna um modelo profundo administrável, porque cada camada só precisa contribuir com uma pequena derivada local.

O que o backpropagation calcula

O backpropagation não atualiza os parâmetros por si só. Ele calcula gradientes como Lw\frac{\partial L}{\partial w} e Lb\frac{\partial L}{\partial b}, em que LL é a perda. Um otimizador, como o gradient descent, usa esses gradientes para fazer a atualização de fato.

Se o modelo e a perda forem diferenciáveis, ou pelo menos diferenciáveis por partes o suficiente para métodos baseados em gradiente, o backpropagation permite calcular esses gradientes de forma eficiente em uma única passagem para trás.

Por que a regra da cadeia é a ideia central

Pense em uma rede neural como uma longa cadeia de cálculos. Cada camada recebe uma entrada, a transforma e passa o resultado para a próxima camada. Quando você chega à perda, o erro final depende de todas as escolhas anteriores.

O backpropagation faz uma pergunta local em cada etapa: se este valor intermediário mudasse um pouco, como a perda final mudaria? Esses efeitos locais se multiplicam à medida que você volta. Isso é a regra da cadeia em linguagem simples.

Exemplo de backpropagation com um neurônio

Use um neurônio com uma entrada:

z=wx+bz = wx + b a=σ(z)a = \sigma(z) L=12(ay)2L = \frac{1}{2}(a - y)^2

Aqui, xx é a entrada, ww é o peso, bb é o viés, aa é a previsão, yy é o alvo, e σ\sigma é a função sigmoide.

Considere

x=2,w=0.5,b=0,y=1.x = 2, \qquad w = 0.5, \qquad b = 0, \qquad y = 1.

Etapa 1: Passagem para frente

Primeiro, calcule a soma ponderada do neurônio:

z=wx+b=0.52+0=1.z = wx + b = 0.5 \cdot 2 + 0 = 1.

Agora aplique a sigmoide:

a=σ(1)0.731.a = \sigma(1) \approx 0.731.

Agora calcule a perda:

L=12(0.7311)20.036.L = \frac{1}{2}(0.731 - 1)^2 \approx 0.036.

A previsão está abaixo do alvo, então a perda é positiva.

Etapa 2: Passagem para trás

Agora calcule o gradiente em relação ao peso.

Comece pela perda e vá para dentro:

La=ay.\frac{\partial L}{\partial a} = a - y.

Para a sigmoide,

az=a(1a).\frac{\partial a}{\partial z} = a(1-a).

E para a soma ponderada,

zw=x,zb=1.\frac{\partial z}{\partial w} = x, \qquad \frac{\partial z}{\partial b} = 1.

Agora encadeie as partes:

Lw=Laazzw=(ay)a(1a)x.\frac{\partial L}{\partial w} = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} \cdot \frac{\partial z}{\partial w} = (a-y)a(1-a)x. Lb=Laazzb=(ay)a(1a).\frac{\partial L}{\partial b} = \frac{\partial L}{\partial a} \cdot \frac{\partial a}{\partial z} \cdot \frac{\partial z}{\partial b} = (a-y)a(1-a).

Substitua os valores:

Lb(0.7311)(0.731)(10.731)0.0529\frac{\partial L}{\partial b} \approx (0.731 - 1)(0.731)(1 - 0.731) \approx -0.0529 Lw(0.0529)(2)0.1058.\frac{\partial L}{\partial w} \approx (-0.0529)(2) \approx -0.1058.

Os sinais negativos importam. Eles dizem que aumentar ww ou bb um pouco reduziria a perda neste caso, o que faz sentido porque a previsão atual está baixa demais.

Se você usar gradient descent com taxa de aprendizado η=0.1\eta = 0.1, então

wnew=wηLw=0.50.1(0.1058)0.5106w_{\text{new}} = w - \eta \frac{\partial L}{\partial w} = 0.5 - 0.1(-0.1058) \approx 0.5106 bnew=bηLb=00.1(0.0529)0.0053.b_{\text{new}} = b - \eta \frac{\partial L}{\partial b} = 0 - 0.1(-0.0529) \approx 0.0053.

Essa é a ideia toda em miniatura: passagem para frente, perda, passagem para trás, atualização.

Por que o backpropagation funciona em redes profundas

Em uma rede mais profunda, você faz a mesma coisa camada por camada. A principal diferença é que cada camada oculta afeta a perda indiretamente por meio das camadas posteriores, então seu gradiente inclui mais fatores da regra da cadeia.

O backpropagation continua prático porque cada camada só precisa de sua derivada local e do sinal que vem da camada seguinte. Você não precisa derivar a rede inteira do zero para cada parâmetro.

Erros comuns em backpropagation

Confundir backpropagation com gradient descent

O backpropagation calcula gradientes. O gradient descent usa esses gradientes para atualizar os parâmetros. Eles estão intimamente ligados, mas não são a mesma etapa.

Esquecer que a perda está no final

A passagem para trás começa na perda, não em uma camada oculta qualquer. Se você perder de vista de que a perda depende, a cadeia de derivadas geralmente se quebra.

Ignorar o comportamento da ativação

Algumas funções de ativação produzem gradientes muito pequenos em certas regiões. Se isso acontecer repetidamente em muitas camadas, o aprendizado pode ficar lento.

Supor que uma única passagem para trás significa que o modelo aprendeu

Uma passagem para trás fornece um conjunto de gradientes para um lote. O treinamento normalmente precisa de muitas atualizações em muitos exemplos.

Quando o backpropagation é usado

O backpropagation é o método padrão de cálculo de gradientes para treinar muitas redes neurais, incluindo perceptrons multicamadas, redes convolucionais, modelos recorrentes e transformers.

O otimizador exato pode mudar, e algumas arquiteturas adicionam truques práticos, mas a ideia central geralmente é a mesma: calcular a perda, propagar os gradientes para trás e atualizar os parâmetros para reduzir o erro futuro.

Uma forma prática de lembrar

O backpropagation é uma maneira estruturada de atribuir mérito e culpa dentro de um modelo em camadas. Se a saída estiver errada, o método rastreia esse erro para trás para que cada parâmetro receba um sinal sobre como contribuiu.

É por isso que a expressão "como as redes neurais aprendem" é, em grande parte, correta. O aprendizado acontece por meio de atualizações repetidas dos parâmetros, e o backpropagation é o que torna essas atualizações informadas em vez de aleatórias.

Tente um problema parecido

Mantenha o mesmo exemplo, mas mude o alvo de y=1y = 1 para y=0y = 0. Recalcule Lw\frac{\partial L}{\partial w} e Lb\frac{\partial L}{\partial b}, e depois veja como os sinais se invertem. Essa única mudança deixa o papel da perda muito mais claro do que apenas memorizar as fórmulas.

Precisa de ajuda com um problema?

Envie sua pergunta e receba uma solução verificada, passo a passo, em segundos.

Abrir GPAI Solver →