Aumento de Dados

Visão geral

Aumento de dados (data augmentation) é uma família de técnicas que aumenta o tamanho e a diversidade efetivos de um conjunto de treinamento ao aplicar transformações que preservam o rótulo (label-preserving transformations) a exemplos existentes. Em vez de coletar novos dados, o aumento de dados gera amostras adicionais de treinamento que refletem variações plausíveis do mesmo sinal subjacente.

Exemplos comuns incluem:

  • Visão: espelhamentos, recortes, variação de cor, desfoque, ruído, cutout, mixup/cutmix
  • Texto: substituição de sinônimos (com cuidado), parafraseamento, retrotradução (back-translation)
  • Áudio: ruído aditivo, deslocamento temporal, mascaramento de tempo/frequência, respostas ao impulso de sala

O aumento de dados é usado para melhorar:

  • Generalização (desempenho em dados não vistos)
  • Robustez (estabilidade sob variações incômodas como iluminação, ruído, erros de digitação)
  • Eficiência de dados (melhores resultados com menos dados rotulados)

Ele não substitui boas práticas de dados — veja Coleta e Rotulagem de Dados, Curadoria de Conjuntos de Dados e Qualidade de Dados e Deriva — mas é uma das “primeiras alavancas” mais práticas a acionar quando o desempenho do modelo está limitado por dados de treinamento escassos ou pouco diversos.

Por que o aumento funciona (fundamentos teóricos)

Viés indutivo e invariâncias

Muitas tarefas têm invariâncias conhecidas: transformações que não deveriam mudar o rótulo.

  • Um gato continua sendo um gato se a imagem ficar ligeiramente mais brilhante.
  • Uma palavra falada é a mesma palavra se for gravada com leve ruído de fundo.
  • Um rótulo de sentimento geralmente permanece o mesmo sob pequenas paráfrases.

O aumento de dados injeta essas invariâncias no treinamento, atuando como um viés indutivo que guia o modelo em direção a funções que se comportam de forma consistente sob essas transformações.

Efeito de regularização (redução de overfitting)

O aumento de dados funciona como um regularizador: ele torna o problema de treinamento mais difícil ao expor o modelo a versões variadas de cada amostra, reduzindo a chance de memorizar detalhes idiossincráticos. Isso é especialmente importante para modelos de alta capacidade (CNNs profundas, Transformers) treinados em conjuntos de dados pequenos.

Minimização de Risco Vicinal (VRM)

Uma lente teórica comum é a Minimização de Risco Vicinal (Vicinal Risk Minimization): em vez de minimizar a perda apenas nos pontos empíricos de dados, você minimiza a perda esperada em uma vizinhança ao redor de cada ponto.

Se seu conjunto de dados original é ({(x_i, y_i)}), o aumento de dados define uma distribuição (q(\tilde{x} \mid x)) e treina em (\tilde{x} \sim q(\cdot \mid x)) com o mesmo rótulo (y). Isso efetivamente suaviza a fronteira de decisão aprendida ao redor das amostras observadas.

Mixup como um método VRM explícito

Mixup é um exemplo clássico que torna a VRM explícita ao treinar em combinações convexas de exemplos:

[ \tilde{x} = \lambda x_i + (1-\lambda) x_j,\quad \tilde{y} = \lambda y_i + (1-\lambda) y_j ]

Isso incentiva comportamento linear entre pontos de treinamento e frequentemente melhora calibração e robustez.

Quando o aumento ajuda (e quando não ajuda)

O aumento tende a ajudar quando

  • Você tem poucos dados rotulados, ou seu conjunto de dados subamostra a variação do mundo real.
  • A tarefa tem fatores de variação irrelevantes claros (pose, iluminação, ruído, variação ortográfica).
  • Seu modelo está com overfitting (acurácia de treinamento alta, acurácia de validação fica para trás).
  • Você espera mudança em produção: o mundo real tem sensores, ambientes ou estilos diferentes do seu conjunto de treinamento.
  • Você usa aprendizado semi-supervisionado (semi-supervised learning) (o aumento de dados é central para regularização por consistência).

O aumento pode prejudicar quando

  • Transformações mudam o rótulo (corrupção de rótulo).
    • Espelhar um “6” pode se parecer com um “9” (classificação de dígitos).
    • Retrotradução pode inverter sentimento (“not bad” → “good” muda a nuance).
    • Alteração de pitch pode mudar a identidade do falante em reconhecimento de locutor.
  • Você viola a semântica da tarefa:
    • Recorte aleatório pode remover o objeto em uma tarefa de classificação de imagens.
    • Deleção agressiva de texto pode remover palavras de negação críticas.
  • Sua divisão treino/validação está vazando:
    • Amostras aumentadas quase duplicadas podem aparecer em diferentes divisões se você dividir incorretamente.
  • Os aumentos são fortes demais:
    • Modelos podem ter underfitting se a maioria das amostras de treinamento estiver fortemente distorcida.
    • Mudança excessiva de distribuição pode treinar o modelo em amostras irreais.

O princípio-chave é: o aumento deve aproximar variações plausíveis que você espera no momento de teste (ou invariâncias plausíveis do rótulo), não distorção arbitrária.

Categorias centrais de aumento

1) Transformações geométricas e fotométricas (comuns em visão)

  • Geométricas: espelhamento horizontal, recorte/redimensionamento aleatório, rotação, translação, deformação de perspectiva
  • Fotométricas: variação de brilho/contraste/saturação, mudanças de gama, escala de cinza, desfoque, ruído

Use-as quando os rótulos forem invariantes a mudanças de ponto de vista/iluminação.

Cuidado:

  • Espelhamento vertical pode ser inválido em muitos domínios (imagens médicas, cenas de rua).
  • Rotação é segura em algumas tarefas (imagens aéreas), mas insegura em outras (texto manuscrito).

2) Ruído e corrupção (visão/áudio/texto)

Adicionar ruído modela imperfeições do sensor e pode melhorar robustez.

  • Visão: ruído gaussiano, artefatos de compressão JPEG, desfoque
  • Áudio: ruído de fundo, reverberação, filtragem passa-faixa
  • Texto: erros de digitação, troca de caracteres (cuidado — pode quebrar tokenização ou significado)

3) Mistura de amostras: mixup, cutmix e variantes

  • Mixup: interpolação linear de duas amostras e rótulos
  • Cutmix: recorta e cola um patch de uma imagem em outra; mistura de rótulos proporcional à área do patch
  • Mixup em variedade (manifold mixup): mistura representações ocultas em vez das entradas brutas

Esses métodos frequentemente melhoram robustez e calibração, mas podem reduzir desempenho quando localização fina importa, a menos que sejam ajustados com cuidado.

4) Aumento baseado em política: AutoAugment, RandAugment, AugMix

Em vez de projetar transformações manualmente, métodos baseados em política escolhem tipos e intensidades de transformações.

  • AutoAugment: aprende políticas via busca (caro)
  • RandAugment: política aleatória simples com um pequeno número de hiperparâmetros
  • AugMix: mistura múltiplas cadeias de aumento; frequentemente melhora robustez a corrupções

Eles são populares em benchmarks de classificação de imagens e sistemas práticos de visão.

5) Específico de PLN: retrotradução e parafraseamento

Retrotradução:

  1. Traduza a sentença do idioma A → B
  2. Traduza de volta de B → A

Isso frequentemente gera uma paráfrase que preserva o significado enquanto muda a forma superficial.

Cuidado: o significado pode derivar, entidades nomeadas podem mudar, e rótulos sutis (toxicidade, sentimento, implicação) podem ser alterados.

6) Específico de áudio: mascaramento de tempo/frequência e perturbação de velocidade

Para tarefas de fala e acústica:

  • Deslocamento temporal (time shift): move a forma de onda levemente para frente/para trás
  • Perturbação de velocidade (speed perturbation): muda o andamento (frequentemente 0,9×, 1,0×, 1,1×)
  • SpecAugment: mascaramento de tempo e mascaramento de frequência em espectrogramas
  • Simulação de sala: convoluir com respostas ao impulso de sala (RIRs)

Essas técnicas visam invariâncias em gravações reais (diferenças de timing, limites de banda, salas).

Evitando vazamento e corrupção de rótulo

Divida primeiro, aumente depois

Um padrão comum de vazamento: aumentar o conjunto inteiro e depois dividir em treino/validação/teste. Isso arrisca colocar versões quase idênticas do mesmo exemplo tanto no treino quanto na validação.

Boa prática:

  • Divida seu conjunto de dados original em treino/val/teste.
  • Aplique aumento apenas no pipeline de treinamento.
  • Mantenha o pré-processamento de validação/teste limitado a normalização e redimensionamento determinísticos.

Relacionado: deduplicação de conjunto de dados e higiene de divisão são parte de Curadoria de Conjuntos de Dados e Versionamento de Dados.

Rastreie a proveniência das amostras aumentadas

Amostras aumentadas são dados derivados. Em cenários regulados ou críticos para segurança, rastreie:

  • ID do exemplo fonte
  • tipos e parâmetros de aumento
  • semente aleatória (se reprodutibilidade importar)

Isso ajuda na depuração e em treinamento reprodutível (veja Pipelines de Dados (ETL/ELT para ML)).

Garanta que o rótulo é realmente invariante

Antes de adotar um aumento, pergunte:

  • A transformação preserva o rótulo semântico para todos (ou quase todos) os exemplos?
  • Existem casos de borda em que falha?
  • Você está mudando pistas espúrias nas quais o modelo deveria de fato se apoiar?

Exemplos concretos de corrupção de rótulo:

  • Imagens médicas: espelhamentos esquerda-direita podem inverter rótulos de lateralidade (por exemplo, “pulmão esquerdo”).
  • Direção autônoma: espelhamentos verticais são irreais e podem confundir pistas de “cima/baixo”.
  • OCR: rotação pode mudar caracteres ou torná-los ilegíveis.
  • Classificação de texto: deleção aleatória pode remover “not”, invertendo o sentimento.
  • ID de locutor: alteração de pitch muda características do falante.

Mantenha o aumento consistente com as anotações

Para tarefas de predição estruturada (detecção, segmentação, pontos-chave), você deve transformar os rótulos de forma consistente:

  • Caixas delimitadoras devem ser recomputadas após recorte/redimensionamento.
  • Máscaras devem ser transformadas com as mesmas operações geométricas.
  • Pontos-chave devem ser transformados e a visibilidade atualizada se forem recortados.

Muitos “fracassos misteriosos” de treinamento vêm de transformações incompatíveis entre entradas e alvos.

Controle a intensidade do aumento (e monitore underfitting)

Se você aplicar aumento pesado, monitore:

  • perda de treinamento (pode permanecer alta se o aumento estiver difícil demais)
  • diferença entre treino e validação (o aumento pode reduzir a diferença, mas excesso pode reduzir ambos)

Uma abordagem comum é:

  • começar com aumento moderado,
  • rodar um estudo de ablação,
  • opcionalmente usar cronogramas (mais fraco no início ou mais forte depois, dependendo da tarefa).

Escolhas práticas por modalidade

Visão (imagens/vídeo)

Receita de base (classificação de imagens)

Uma base forte e comum:

  • Recorte redimensionado aleatório (por exemplo, escala 0,8–1,0)
  • Espelhamento horizontal (se válido)
  • Variação de cor (brilho/contraste/saturação)
  • Desfoque ou ruído leve (opcional)
  • Apagamento aleatório/cutout (opcional)
  • Mixup ou cutmix (opcional, ajustar intensidade)

Exemplo (PyTorch / torchvision)

import torchvision.transforms as T

train_tfms = T.Compose([
    T.RandomResizedCrop(224, scale=(0.7, 1.0)),
    T.RandomHorizontalFlip(p=0.5),
    T.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2, hue=0.05),
    T.ToTensor(),
    T.Normalize(mean=(0.485, 0.456, 0.406),
                std=(0.229, 0.224, 0.225)),
])

val_tfms = T.Compose([
    T.Resize(256),
    T.CenterCrop(224),
    T.ToTensor(),
    T.Normalize(mean=(0.485, 0.456, 0.406),
                std=(0.229, 0.224, 0.225)),
])

Detecção/segmentação: prefira bibliotecas que lidam com transformações conjuntas para imagem + anotações (por exemplo, Albumentations, transforms v2 do torchvision) e valide que caixas/máscaras permanecem corretas após o aumento.

Aumento focado em robustez

Se você se importa com corrupções do mundo real (compressão, desfoque, efeitos tipo clima), considere:

  • Misturas no estilo AugMix de cadeias de corrupção
  • Simulação de compressão JPEG
  • Desfoque de movimento / desfoque por defocus
  • Perfis de ruído de sensor (específicos do domínio)

Também considere avaliar em benchmarks de corrupção ou em uma suíte de corrupções personalizada alinhada com a implantação.

Texto (PLN)

O aumento de texto é poderoso, mas fácil de errar porque pequenas edições podem mudar o significado. Os aumentos mais seguros são aqueles que preservam a semântica com alta probabilidade.

Retrotradução (geração de paráfrases)

A retrotradução é amplamente usada para classificação e tarefas sequência-para-sequência.

Dicas práticas:

  • Use modelos de tradução de alta qualidade.
  • Filtre saídas: descarte se forem diferentes demais (deriva semântica) ou parecidas demais (sem benefício).
  • Preserve entidades: considere decodificação com restrições ou verificações de substituição de entidades.

Pipeline ilustrativo (pseudo-código)

def back_translate(sentence, en_to_de, de_to_en):
    de = en_to_de.translate(sentence)
    en = de_to_en.translate(de)
    return en

Outros aumentos de texto (use com cautela)

  • Edições no estilo EDA (substituição de sinônimos, inserção, troca, deleção): podem funcionar para rótulos grosseiros, mas frequentemente corrompem o significado.
  • Parafraseamento com LLMs: pode ser eficaz, mas exige fortes barreiras de proteção:
    • “Não mude o sentimento/rótulo”
    • manter entidades nomeadas
    • evitar adicionar fatos
    • executar verificações automáticas (por exemplo, modelo de implicação, limiares de similaridade)

Para tarefas como implicação, QA factual, ou texto jurídico/médico, o aumento pode introduzir erros facilmente. Nesses contextos, considere focar em dados melhores, deduplicação e rotulagem cuidadosa (Coleta e Rotulagem de Dados).

Áudio (fala, som ambiental)

O aumento de áudio frequentemente é altamente eficaz porque o áudio do mundo real varia substancialmente com ambientes e dispositivos.

Aumentos comuns

  • Ruído aditivo: misturar ruído de fundo com SNRs aleatórios
  • Reverberação: convoluir com RIRs para simular salas
  • Deslocamento temporal: pequenos deslocamentos na forma de onda
  • Perturbação de velocidade: pequenas mudanças de andamento
  • SpecAugment: mascaramento de tempo/frequência em espectrogramas (fala)

Exemplo (torchaudio máscaras no estilo SpecAugment)

import torchaudio.transforms as AT

specaugment = torch.nn.Sequential(
    AT.FrequencyMasking(freq_mask_param=15),
    AT.TimeMasking(time_mask_param=35),
)

Cuidado:

  • Para ID de locutor, alguns aumentos (alteração de pitch, mudanças agressivas de velocidade) podem alterar pistas de identidade.
  • Para detecção de palavra-chave, recorte/mascaramento temporal pode remover a palavra-chave — aplique com restrições.

Tópicos avançados e técnicas relacionadas

Aumento no tempo de teste (TTA)

Aumento no tempo de teste (test-time augmentation, TTA) aplica transformações que preservam o rótulo em tempo de inferência (por exemplo, múltiplos recortes/espelhamentos) e faz média das previsões. Isso pode melhorar acurácia e estimativas de incerteza, mas aumenta a latência e pode complicar a reprodutibilidade.

Use TTA quando:

  • o custo de inferência for aceitável,
  • o aumento for claramente preservador de rótulo,
  • você quiser um pequeno ganho de acurácia sem retreinar.

Aumento em aprendizado semi-supervisionado e auto-supervisionado

Muitos métodos modernos dependem de aumento de dados para impor consistência:

  • Em aprendizado semi-supervisionado, o modelo é incentivado a dar previsões semelhantes para diferentes aumentos da mesma entrada não rotulada.
  • Em aprendizado auto-supervisionado, o aumento define “visões” para objetivos contrastivos ou de predição mascarada.

A escolha de aumento passa a ser parte do objetivo de aprendizado, não apenas um regularizador.

Relação com dados sintéticos

O aumento modifica amostras existentes; dados sintéticos (synthetic data) criam novas amostras (frequentemente a partir de simuladores ou modelos generativos). Eles podem ser complementares:

  • Use aumento para cobrir invariâncias locais (pequenas mudanças).
  • Use dados sintéticos para cobrir modos ausentes (novos fundos, eventos raros).

Veja Dados Sintéticos para riscos como incompatibilidade de distribuição e vazamento.

Como escolher aumentos na prática

Um fluxo de decisão simples

  1. Defina invariâncias: o que não deve mudar o rótulo no seu cenário de implantação?
  2. Comece com transformações seguras e padrão para sua modalidade.
  3. Adicione um aumento por vez e rode ablações.
  4. Valide a integridade dos rótulos (especialmente para rótulos estruturados).
  5. Ajuste intensidade/probabilidade:
    • fraco demais → pouco benefício
    • forte demais → underfitting ou deriva de rótulo
  6. Avalie robustez usando testes de estresse alinhados com falhas do mundo real.

Sinais práticos de monitoramento

  • Se o aumento ajuda, você frequentemente vê menor perda de validação e redução de overfitting.
  • Se o aumento é forte demais, a perda de treinamento permanece alta e tanto a acurácia de treino quanto a de validação podem cair.
  • Se o aumento corrompe rótulos, o treinamento pode ficar instável e a calibração pode piorar.

Considerações específicas do domínio

  • Segurança/médico: aumento conservador; valide invariâncias clinicamente significativas; observe vazamento e incompatibilidades de anotação.
  • Equidade: aumento pode reduzir dependência de pistas espúrias, mas também pode introduzir viés (por exemplo, alterar tom de pele via variação de cor). Combine com avaliação cuidadosa e documentação (Documentação de Conjuntos de Dados (Datasheets)).
  • Privacidade: aumento não anonimiza dados automaticamente; amostras derivadas ainda podem conter informações sensíveis. Veja Privacidade.

Checklist de armadilhas comuns

  • Aumentar e depois dividir → vazamento de dados
  • Transformações não aplicadas aos rótulos (caixas/máscaras) → supervisão quebrada
  • Suposição de “preserva rótulo” inválida para algumas classes → ruído sistemático de rótulo
  • Muitas corrupções pesadas → treinar em distribuição irreal
  • Sem estudo de ablação → difícil atribuir ganhos
  • Pré-processamento diferente entre treino e inferência → queda de desempenho em produção

Resumo

O aumento de dados é uma técnica prática e amplamente aplicável para melhorar a generalização e a robustez de modelos ao treinar com transformações que preservam o rótulo de dados existentes. Sua eficácia vem de injetar invariâncias relevantes para a tarefa e atuar como uma forma forte de regularização (frequentemente interpretável via minimização de risco vicinal). Os maiores riscos são vazamento (aumentar antes de dividir) e corrupção de rótulo (usar transformações que mudam o significado ou a correção das anotações). Um aumento eficaz é, portanto, tanto uma decisão de modelagem quanto uma disciplina de engenharia de dados — melhor abordada com conhecimento do domínio, validação cuidadosa e pipelines reprodutíveis.