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:
- Traduza a sentença do idioma A → B
- 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
- Defina invariâncias: o que não deve mudar o rótulo no seu cenário de implantação?
- Comece com transformações seguras e padrão para sua modalidade.
- Adicione um aumento por vez e rode ablações.
- Valide a integridade dos rótulos (especialmente para rótulos estruturados).
- Ajuste intensidade/probabilidade:
- fraco demais → pouco benefício
- forte demais → underfitting ou deriva de rótulo
- 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.