Treinamento de Redes Neurais: descida do gradiente e otimização baseada em erros

Capítulo 5

Tempo estimado de leitura: 6 minutos

+ Exercício

Treinamento como minimização da perda

Treinar uma rede neural significa ajustar seus parâmetros (pesos e vieses) para reduzir uma função de perda medida nos dados. Em vez de “acertar de uma vez”, fazemos ajustes iterativos: calculamos o erro atual, estimamos como esse erro muda quando mexemos em cada parâmetro e então atualizamos os parâmetros em pequenos passos para diminuir a perda.

De forma abstrata, se juntarmos todos os parâmetros em um vetor θ (theta) e a perda em L(θ), o objetivo do treinamento é:

minimizar L(θ)

Como L(θ) geralmente é uma superfície complexa (muitas dimensões), usamos métodos numéricos baseados em derivadas para caminhar na direção que mais reduz a perda.

Gradiente: direção de maior aumento (e por que usamos o negativo)

O gradiente de uma função escalar L(θ) é o vetor de derivadas parciais:

∇L(θ) = [∂L/∂θ1, ∂L/∂θ2, ..., ∂L/∂θn]

Intuição importante: o gradiente aponta para a direção de maior aumento de L (a subida mais íngreme). Se queremos diminuir a perda, seguimos a direção oposta, isto é, o negativo do gradiente.

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

A regra de atualização mais básica (Descida do Gradiente) é:

θ ← θ - η ∇L(θ)

onde η (eta) é a taxa de aprendizado (learning rate): o tamanho do passo. Se η for muito pequeno, o treino pode ficar lento; se for muito grande, pode “passar do ponto” e piorar a perda.

Batch, minibatch e épocas: como os dados entram no treino

Batch (lote) e minibatch

Para calcular o gradiente, precisamos de uma estimativa do erro. Há três formas comuns de usar os dados:

  • Batch (gradiente em lote completo): calcula o gradiente usando todos os exemplos do conjunto de treino antes de atualizar os parâmetros. É estável, mas pode ser lento e pesado em memória.
  • Stochastic / online: atualiza os parâmetros a cada exemplo individual. É rápido por atualização, mas o gradiente é muito ruidoso.
  • Minibatch: usa pequenos lotes (por exemplo, 32, 64, 128 exemplos). É o padrão na prática porque equilibra eficiência computacional e ruído útil para escapar de regiões ruins.

Época

Uma época é uma passagem completa por todo o conjunto de treino. Se você tem N exemplos e usa minibatches de tamanho B, então cada época tem aproximadamente N/B atualizações.

Taxa de aprendizado e efeitos típicos no comportamento do treino

A taxa de aprendizado η controla o quanto os parâmetros mudam a cada atualização. Alguns padrões comuns:

  • Convergência lenta: η muito pequeno. A perda diminui, mas devagar; pode “parecer travada” por muitas épocas.
  • Divergência: η grande demais. A perda aumenta ou vira NaN (instabilidade numérica), e os parâmetros “explodem”.
  • Oscilações: η um pouco alto. A perda até cai, mas fica subindo e descendo (zigue-zague) e pode não estabilizar bem.

Na prática, é comum testar alguns valores de η (ordens de grandeza diferentes) e observar as curvas de perda para escolher um regime estável e eficiente.

Exemplo numérico pequeno: 1–2 passos de atualização de pesos

Para tornar o processo concreto, vamos usar um modelo extremamente simples com um único peso w e uma perda quadrática:

L(w) = (w - 3)^2

Essa perda é mínima quando w = 3. Vamos “treinar” começando de um valor inicial e aplicando descida do gradiente.

1) Calcular o gradiente

Derivando:

dL/dw = 2(w - 3)

2) Escolher taxa de aprendizado

Vamos usar η = 0.1.

3) Passo 1 (atualização)

Comece com w0 = 0.

  • Gradiente em w0: dL/dw = 2(0 - 3) = -6
  • Atualização: w1 = w0 - η * (-6) = 0 - 0.1 * (-6) = 0.6
  • Perda antes: L(w0) = (0 - 3)^2 = 9
  • Perda depois: L(w1) = (0.6 - 3)^2 = 5.76

Note que o gradiente foi negativo (a perda aumentaria se aumentássemos na direção do gradiente), então subtrair o gradiente fez w aumentar em direção a 3.

4) Passo 2 (mais uma atualização)

  • Gradiente em w1=0.6: dL/dw = 2(0.6 - 3) = -4.8
  • Atualização: w2 = 0.6 - 0.1 * (-4.8) = 1.08
  • Perda: L(w2) = (1.08 - 3)^2 = 3.6864

Em apenas dois passos, a perda caiu de 9 para 3.6864. Em redes reais, fazemos isso para milhares/milhões de parâmetros, e o gradiente vem do erro propagado pelo modelo (via retropropagação), mas a lógica da atualização é a mesma.

O que acontece se a taxa de aprendizado for grande demais?

Use o mesmo exemplo com η = 1.1 e w0 = 0:

  • Gradiente: -6
  • Atualização: w1 = 0 - 1.1 * (-6) = 6.6
  • Perda: L(w1) = (6.6 - 3)^2 = 12.96 (piorou)

O passo foi tão grande que ultrapassou o mínimo e foi parar numa região com perda maior. Repetindo, o processo pode oscilar ou divergir.

Passo a passo prático do ciclo de treinamento (minibatch)

Abaixo está um roteiro mental do que acontece em cada época, usando minibatches:

  1. Embaralhar os dados de treino (reduz padrões indesejados na ordem).
  2. Dividir em minibatches de tamanho B.
  3. Para cada minibatch:
    • Forward: calcular as saídas do modelo.
    • Perda: medir o erro no minibatch.
    • Backward: calcular gradientes dos parâmetros.
    • Atualizar: aplicar θ ← θ - η ∇L (ou uma variação com otimizadores mais avançados).
  4. Ao fim da época: avaliar em validação (sem atualizar parâmetros) para monitorar generalização.

Como interpretar curvas de treino e validação

Durante o treinamento, é comum acompanhar pelo menos duas curvas ao longo das épocas:

  • Perda de treino (training loss): calculada nos minibatches de treino.
  • Perda de validação (validation loss): calculada em dados separados, sem atualizar pesos.

Padrões típicos e o que eles sugerem

Padrão observadoComo aparece nas curvasInterpretação prática
Treino e validação caem juntosAmbas as perdas diminuem de forma semelhanteAprendizado saudável; o modelo melhora e generaliza melhor
Treino cai, validação para de cair e sobeGap crescente entre treino e validaçãoSinal de sobreajuste; o modelo memoriza treino e piora em validação
Treino não cai (ou cai muito pouco)Curva quase plana em treino e validaçãoOtimização ineficiente (taxa de aprendizado inadequada, gradientes fracos, inicialização ruim, capacidade insuficiente)
Perdas instáveis/serrilhadas demaisOscilações grandes, picos frequentesTaxa de aprendizado alta, minibatch muito pequeno, ou instabilidade numérica
Perda explode ou vira NaNSubida abrupta, valores inválidosDivergência (learning rate alto), gradientes explodindo; requer ajuste imediato

Guia rápido de diagnóstico usando as curvas

  • Se a perda de treino cai muito devagar: experimente aumentar η moderadamente ou usar um agendador (redução ao longo do tempo) para acelerar no começo e estabilizar no fim.
  • Se a perda oscila: reduza η ou aumente o tamanho do minibatch para reduzir ruído; verifique também normalização/escala dos dados.
  • Se validação piora enquanto treino melhora: aplique regularização (por exemplo, weight decay), aumente dados/augmentação, ou use parada antecipada (early stopping) baseada na validação.
  • Se tudo está ruim desde o início: confirme se o pipeline está correto (rótulos, embaralhamento, perda compatível com a tarefa, escala de entradas) antes de ajustar hiperparâmetros.

Além da perda, acompanhar uma métrica da tarefa (por exemplo, acurácia em classificação) ajuda a evitar interpretações enganosas: às vezes a perda muda pouco, mas a métrica melhora de forma consistente, ou vice-versa.

Agora responda o exercício sobre o conteúdo:

Ao observar as curvas de treino e validação, qual padrão indica sobreajuste (overfitting) durante o treinamento de uma rede neural?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Quando o treino melhora (perda cai) mas a validação piora (perda sobe), o modelo está se ajustando demais ao conjunto de treino e perdendo capacidade de generalização.

Próximo capitúlo

Backpropagation em Redes Neurais: regra da cadeia de forma intuitiva e computacional

Arrow Right Icon
Capa do Ebook gratuito Introdução a Redes Neurais: do perceptron ao deep learning moderno
33%

Introdução a Redes Neurais: do perceptron ao deep learning moderno

Novo curso

15 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.