Depuração e interpretação em Redes Neurais: curvas de aprendizado, ablações e análise de erros

Capítulo 14

Tempo estimado de leitura: 13 minutos

+ Exercício

O que significa “depurar” e “interpretar” uma rede neural

Depurar (debug) um modelo é tratar o treinamento como um sistema observável: você coleta sinais (curvas, métricas, exemplos errados), formula hipóteses (subajuste, sobreajuste, problema de otimização, dados/rotulagem), executa intervenções controladas e mede o efeito. Interpretar, neste contexto, é entender onde e como o modelo falha (por classe, por subgrupo, por tipo de entrada), para escolher ações corretivas com maior probabilidade de funcionar.

Este capítulo organiza a depuração como um conjunto de procedimentos: (1) ler curvas de aprendizado, (2) inspecionar métricas e matriz de confusão, (3) fazer análise por fatias (subgrupos), (4) rodar ablações para testar contribuições de componentes, (5) fechar o ciclo com hipóteses e ações.

Procedimento 1: leitura de curvas de aprendizado (perda e métricas)

Sinais observáveis essenciais

  • Curva de perda de treino ao longo das épocas/steps.
  • Curva de perda de validação (mesma escala e frequência de avaliação).
  • Métricas de treino/validação (ex.: acurácia, F1, AUC, MAE), alinhadas ao objetivo.
  • Gap de generalização: diferença entre desempenho de treino e validação.
  • Estabilidade: oscilações, divergência, platôs, “serrilhado”.

Mapa rápido: padrão nas curvas → hipótese provável

Padrão observadoHipótese provávelPróximas verificações
Perda de treino alta e perda de validação alta; ambas melhoram poucoSubajuste (capacidade insuficiente, features fracas, regularização excessiva) ou otimização travadaVerificar se a perda de treino cai ao aumentar épocas; checar taxa de aprendizado; checar se o modelo consegue memorizar um lote pequeno
Perda de treino cai bem; perda de validação para de cair e começa a subirSobreajusteChecar tamanho/qualidade do dataset; avaliar regularização; verificar se há vazamento de dados; analisar por fatias
Perda de treino não cai (ou cai e volta a subir), com oscilações grandesProblema de otimização/instabilidade (LR alta, batch pequeno, normalização inadequada, gradientes instáveis)Reduzir LR; aumentar batch; checar clipping; checar normalização; inspecionar gradientes
Perda de treino cai muito lentamente; validação acompanha, mas tudo é lentoOtimização lenta (LR baixa, scheduler inadequado, arquitetura difícil)Aumentar LR gradualmente; testar scheduler; checar inicialização; testar otimização alternativa
Métrica melhora, mas perda não; ou perda melhora, mas métrica nãoDesalinhamento entre perda e métrica, limiar de decisão, desbalanceamentoChecar calibração/threshold; usar métrica adequada; analisar matriz de confusão e curvas por classe

Passo a passo prático: checklist de leitura das curvas

  • Passo 1 — Garanta comparabilidade: treino e validação devem usar o mesmo pré-processamento; a validação não pode ter augmentações estocásticas que mudem a distribuição (a menos que seja intencional e controlado).
  • Passo 2 — Observe a queda inicial: nos primeiros passos/épocas a perda de treino deveria cair. Se não cai, suspeite de otimização (LR, bug no pipeline, labels erradas, perda mal configurada).
  • Passo 3 — Meça o gap: se a métrica de treino é muito melhor que a de validação, há sobreajuste ou shift entre conjuntos.
  • Passo 4 — Procure o “ponto de virada”: quando a validação para de melhorar, isso indica limite de generalização com a configuração atual.
  • Passo 5 — Compare perda e métrica: divergências sugerem limiar inadequado, métrica insensível ao que a perda otimiza, ou desbalanceamento.

Procedimento 2: diferenciar subajuste, sobreajuste e otimização (com testes rápidos)

Teste rápido A: “overfit em um lote pequeno”

Objetivo: verificar se o modelo e o treinamento conseguem memorizar um subconjunto minúsculo. Se nem isso funciona, o problema tende a ser otimização, implementação ou dados/labels.

  • Passo 1: selecione um lote fixo pequeno (ex.: 32–128 exemplos) e treine apenas nele por muitas iterações.
  • Passo 2: monitore perda e métrica nesse lote.
  • Interpretação:
    • Se a perda não vai quase a zero (ou a métrica não chega perto do máximo), suspeite de bug (labels desalinhadas, perda errada, normalização errada, modelo não recebendo sinal), ou LR inadequada.
    • Se memoriza facilmente, mas falha na validação, o problema é generalização (sobreajuste, dataset pequeno/ruidoso, shift).

Teste rápido B: “curva de dados” (mais dados vs desempenho)

Objetivo: ver se o modelo se beneficia de mais dados.

  • Passo 1: treine o mesmo modelo com 10%, 30%, 60%, 100% dos dados (mantendo validação fixa).
  • Passo 2: plote métrica de validação vs tamanho do treino.
  • Interpretação:
    • Se melhora consistentemente com mais dados, o gargalo pode ser dados (quantidade/variedade) e/ou sobreajuste.
    • Se não melhora, pode ser subajuste (capacidade/representação) ou rótulos/ruído limitando o teto.

Teste rápido C: “sensibilidade à taxa de aprendizado”

Objetivo: identificar se o treinamento está travado por hiperparâmetros de otimização.

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

  • Passo 1: rode treinos curtos (poucas épocas) com LR em escala log (ex.: 1e-5, 3e-5, 1e-4, 3e-4, 1e-3).
  • Passo 2: compare queda de perda inicial e estabilidade.
  • Interpretação:
    • LR alta: perda oscila/diverge.
    • LR baixa: perda quase não cai.
    • Existe uma faixa “boa” onde a perda cai rápido e estável.

Procedimento 3: matriz de confusão e métricas por classe

Quando a matriz de confusão é indispensável

  • Classificação multiclasse com classes parecidas.
  • Desbalanceamento (classes raras).
  • Quando a acurácia global parece boa, mas usuários reclamam de erros específicos.

Como ler a matriz de confusão (diagnóstico orientado a ações)

  • Erros concentrados entre duas classes: sugere ambiguidade visual/semântica, rotulagem inconsistente, ou falta de exemplos representativos. Ação típica: coletar mais exemplos dessas classes, revisar rótulos, criar features/augmentações específicas, ou ajustar custo por classe.
  • Uma classe vira “lixeira” (muitos exemplos de outras classes caem nela): pode indicar limiar/viés do modelo, desbalanceamento ou que a classe é muito heterogênea. Ação: reavaliar definição da classe, dividir em subclasses, ponderar perda, calibrar.
  • Classe rara com recall muito baixo: o modelo quase nunca a prevê. Ação: reamostragem, ponderação, focal loss (se aplicável), mais dados e validação estratificada.

Passo a passo prático: relatório mínimo por classe

  • Passo 1: compute precisão, recall e F1 por classe.
  • Passo 2: ordene classes por pior recall (ou pela métrica crítica do produto).
  • Passo 3: para as piores classes, extraia exemplos de falsos positivos e falsos negativos e agrupe por padrões (iluminação, ângulo, ruído, comprimento do texto, etc.).
  • Passo 4: verifique se os erros são “difíceis” (ambíguos) ou “bobos” (rótulo errado, pré-processamento quebrado).

Procedimento 4: análise por fatias (subgrupos) para achar falhas escondidas

O que é uma “fatia”

Uma fatia é um subconjunto definido por uma condição interpretável: faixa etária, idioma, dispositivo, iluminação, comprimento da sequência, região, fonte de dados, horário, etc. A análise por fatias evita que uma métrica agregada esconda degradações graves em subgrupos.

Passo a passo prático: como montar uma análise por fatias

  • Passo 1 — Defina dimensões de segmentação: escolha atributos disponíveis e relevantes (ex.: “tipo de câmera”, “comprimento do texto”, “classe verdadeira”, “fonte do dado”).
  • Passo 2 — Garanta tamanho mínimo: imponha um mínimo de amostras por fatia para evitar conclusões ruidosas (ex.: >= 100, dependendo do problema).
  • Passo 3 — Meça a métrica certa: para classes raras, use recall/PR-AUC; para regressão, use MAE por faixa; para ranking, use NDCG por grupo.
  • Passo 4 — Compare com o global: calcule “delta” por fatia (métrica_fatia − métrica_global).
  • Passo 5 — Investigue as piores fatias: amostre erros e identifique causas (shift de distribuição, ruído, ausência de exemplos no treino).

Padrões típicos em fatias → hipóteses

PadrãoHipótese provávelAções corretivas
Uma fonte de dados específica tem desempenho muito piorShift de domínio (pré-processamento, qualidade, estilo)Normalizar pipeline; coletar dados dessa fonte; treino com mistura/ponderação; validação por domínio
Entradas longas têm pior desempenhoLimitação de contexto/representação; truncamento; ruído acumuladoAjustar truncamento; arquitetura/posição; features; treinar com distribuição real de comprimentos
Baixa luz/baixa resolução piora muitoRobustez insuficienteAugmentações direcionadas; dados reais; pré-processamento (denoise, resize consistente)
Subgrupo com rótulos inconsistentes tem métrica baixa e perda altaProblema de rotulagemAuditoria de rótulos; regras de anotação; limpeza; modelagem de ruído

Procedimento 5: ablação como ferramenta de diagnóstico (não só “melhoria”)

Conceito: o que é uma ablação

Ablação é um experimento controlado em que você remove, substitui ou simplifica um componente para medir sua contribuição. O objetivo é responder perguntas do tipo: “Esse componente realmente ajuda?” e “Ajuda em quais fatias/classe?”

Regras para ablações confiáveis

  • Uma mudança por vez: altere apenas um fator (ex.: tirar dropout) mantendo o resto fixo.
  • Mesmo orçamento: compare com mesmo número de épocas/steps e mesma política de early stopping.
  • Repita seeds: rode 3–5 seeds quando a variância for alta; reporte média e desvio.
  • Compare por fatias: um componente pode não melhorar o global, mas reduzir falhas críticas em subgrupos.

Tipos de ablação úteis (com hipóteses e leituras)

AblaçãoO que testaSinal esperadoInterpretação
Reduzir profundidade (menos camadas)Capacidade vs generalizaçãoTreino piora; validação pode melhorar se havia sobreajusteSe validação melhora, o modelo estava complexo demais para os dados
Aumentar profundidadeCapacidade/representaçãoTreino melhora; validação só melhora se havia subajusteSe treino melhora e validação não, falta regularização/dados
Trocar ativação (A→B)Dinâmica de otimização e expressividadeCurvas mais estáveis/rápidas ou saturação reduzidaSe a perda cai mais rápido, o gargalo era otimização/gradiente
Remover/alterar normalizaçãoEstabilidade e escala internaSem normalização pode divergir ou ficar mais lentoSe piora muito, o treino dependia de estabilização; revisar LR/batch
Remover dropout/L2RegularizaçãoTreino melhora; validação piora se havia sobreajusteSe validação piora, regularização era necessária
Trocar otimizador/schedulerEficiência de otimizaçãoQueda inicial mais rápida/estávelSe melhora só no começo, pode ser LR/scheduler, não arquitetura

Passo a passo prático: plano de ablação em 6 execuções

  • Execução 0 (baseline): configuração atual, com logging completo (curvas, matriz de confusão, fatias).
  • Execução 1 (capacidade): reduzir profundidade/largura em ~30%.
  • Execução 2 (capacidade): aumentar profundidade/largura em ~30%.
  • Execução 3 (regularização): remover uma regularização principal (ex.: dropout) mantendo o resto.
  • Execução 4 (regularização): aumentar regularização (ex.: maior weight decay ou dropout).
  • Execução 5 (otimização): manter arquitetura e trocar apenas LR/scheduler (ou otimizador).

Interprete em conjunto: se mudanças de capacidade alteram muito o treino, mas pouco a validação, o gargalo pode ser dados/ruído; se mudanças de otimização alteram fortemente a queda inicial, o gargalo era otimização; se regularização controla o gap, o gargalo era generalização.

Procedimento 6: análise de erros orientada a categorias (do sintoma à ação)

Como construir um “catálogo de erros”

  • Passo 1 — Colete um conjunto de erros: por exemplo, 200–500 exemplos errados da validação/teste, estratificados por classe e por fatias críticas.
  • Passo 2 — Crie categorias explicativas: ex.: “oclusão”, “baixa luz”, “texto truncado”, “ambiguidade entre classes A/B”, “rótulo suspeito”, “entrada fora do domínio”.
  • Passo 3 — Conte frequência e impacto: quantos erros por categoria e qual o impacto na métrica (ex.: quantos FN na classe crítica).
  • Passo 4 — Mapeie categoria → intervenção: dados, pré-processamento, mudança de loss, mudança de arquitetura, ajuste de threshold, etc.

Exemplos de diagnósticos típicos (com sinais → hipótese → ação)

Caso 1: acurácia de treino alta, validação estagna e piora

  • Sinais: perda de treino cai continuamente; perda de validação cai no início e depois sobe; gap crescente; matriz de confusão mostra classes raras com recall baixo.
  • Hipóteses prováveis: sobreajuste; desbalanceamento; validação com distribuição diferente; rótulos ruidosos em parte do treino.
  • Ações corretivas:
    • Reforçar regularização e/ou early stopping mais agressivo.
    • Rebalancear (ponderação por classe, reamostragem) e reavaliar por classe.
    • Auditar rótulos nas classes com maior confusão.
    • Adicionar dados nas fatias onde o desempenho é pior.

Caso 2: perda de treino não cai e métricas ficam próximas do aleatório

  • Sinais: curvas quase planas; pequenas mudanças com épocas; “overfit em lote pequeno” falha.
  • Hipóteses prováveis: bug no pipeline (labels desalinhadas, shuffle incorreto, normalização errada), perda incompatível com o formato do alvo, LR inadequada, dados com rótulos trocados em massa.
  • Ações corretivas:
    • Verificar manualmente pares (entrada, rótulo) após o dataloader.
    • Checar shapes e codificação do alvo (one-hot vs índice; máscara de padding; etc.).
    • Rodar varredura curta de LR e checar estabilidade.
    • Testar um modelo mínimo (bem pequeno) para validar o pipeline.

Caso 3: perda cai, mas a métrica não melhora (ou piora)

  • Sinais: perda de validação diminui, mas F1/recall não sobe; matriz de confusão mostra muitos falsos negativos na classe importante.
  • Hipóteses prováveis: limiar de decisão inadequado; métrica não alinhada ao objetivo; desbalanceamento; calibração ruim.
  • Ações corretivas:
    • Ajustar threshold com base na validação (otimizar F1/recall/precisão conforme requisito).
    • Reportar e otimizar métricas por classe e por fatias críticas.
    • Usar ponderação/custos por classe se o objetivo penaliza FN/FP de forma diferente.

Caso 4: desempenho global bom, mas uma fatia crítica é ruim

  • Sinais: métrica global alta; análise por fatias mostra grande queda em um subgrupo; erros têm padrão consistente (ex.: baixa luz, idioma específico).
  • Hipóteses prováveis: shift de domínio; falta de cobertura no treino; pré-processamento diferente na fatia.
  • Ações corretivas:
    • Adicionar dados representativos da fatia (ou reponderar amostragem).
    • Aplicar augmentações direcionadas que simulem a fatia.
    • Separar validação por domínio e monitorar métricas por fatia como critério de parada.

Procedimento 7: roteiro de depuração em 30–60 minutos (triagem)

  • 1) Sanidade do pipeline (5–10 min): inspecione exemplos e rótulos; rode “overfit em lote pequeno”.
  • 2) Curvas (10 min): identifique padrão (subajuste/sobreajuste/otimização) e o ponto de virada.
  • 3) Matriz de confusão + métricas por classe (10 min): encontre as piores classes e o tipo de confusão dominante.
  • 4) Fatias (10–20 min): compute métricas por subgrupo e liste as 5 piores fatias com tamanho suficiente.
  • 5) Hipóteses e 2 intervenções (5 min): escolha duas ações com maior chance de impacto e menor custo (ex.: ajustar LR; ajustar threshold; reponderar classes; coletar dados de uma fatia).

Modelos de registro (templates) para tornar a depuração repetível

Template de experimento

ID: exp_XXX Baseline/Ablação: (baseline | ablation) Mudança única: ... Dados: versão/recorte/estratificação ... Treino: épocas/steps, batch, LR, scheduler ... Métrica-alvo: ... Resultados globais: loss_val=..., metric_val=... Gap (train-val): ... Piores classes (recall): ... Piores fatias (delta): ... Observações de erros: categorias mais frequentes ... Próxima hipótese: ... Próxima ação: ...

Template de categorias de erro

Categoria | Exemplos (links/ids) | Frequência | Impacto (classe/fatia) | Hipótese | Ação (dados/modelo/threshold) | Prioridade

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

Ao observar que a perda de treino cai bem, mas a perda de validação para de cair e começa a subir, qual hipótese e ação inicial são mais coerentes com uma depuração orientada por curvas de aprendizado?

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

Você errou! Tente novamente.

Esse padrão indica sobreajuste: o modelo continua melhorando no treino, mas piora na validação. A depuração recomenda checar dados (tamanho/qualidade e vazamento), reforçar regularização/early stopping e investigar falhas por fatias.

Próximo capitúlo

Boas práticas de implementação de Deep Learning moderno: eficiência, reprodutibilidade e segurança de resultados

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

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.