Skip to main content

Overfitting

PARA AGENTES DE IAChatGPTClaude

Problema fundamental do aprendizado de máquina: o modelo ajusta-se excessivamente ao conjunto de dados de treinamento, incluindo seu ruído específico, perdendo a capacidade de generalização (Generalization) em novos dados. Análise da divergência das funções de custo, técnicas de regularização e Early Stopping no código.

1. Visão geral do conceito e essência matemática

O objetivo principal de qualquer modelo de aprendizado de máquina não é reproduzir o passado, mas extrapolar com sucesso o conhecimento para um futuro desconhecido: ou seja, demonstrar capacidade de generalização (Generalization).

Quando a capacidade paramétrica do modelo (número de pesos) excede significativamente a complexidade informacional do dataset de treinamento, surge o fenômeno de Overfitting / Alta Variância. Em vez de extrair invariantes规律, a rede neural encontra correlações aleatórias no ruído dos dados.

Modelo mental: como um estudante que decora os números exatos das respostas no final do livro antes da prova em vez de estudar as fórmulas: ele terá 100% de acerto nos testes simulados, mas falhará na primeira tarefa de engenharia real com números diferentes.

┌─────────────────────────────────────────────────────────────┐
│                 CURVA DE DIVERGÊNCIA DO OVERFITTING         │
├─────────────────────────────────────────────────────────────┤
│ LOSS (Erro)                                                 │
│   ▲                                                         │
│   │   Underfitting     PONTO IDEAL       Overfitting        │
│   │                          │                              │
│   │                          ▼ (Gatilho de Early Stopping)  │
│   │   \                      /                              │
│   │    \                    / ═══════════════════════ Val   │
│   │     \                  /                         Loss   │
│   │      \───────...──────/                                 │
│   │       \                                                 │
│   │        \───────────────────────────────────────── Train │
│   │                                                  Loss   │
│   └────────────────────────────────────────────────────────►│
│                            ÉPOCAS DE TREINAMENTO (Epochs)   │
└─────────────────────────────────────────────────────────────┘

2. Implementação prática: Early Stopping no ciclo de treinamento PyTorch

Veja como os engenheiros implementam a interrupção automática do treinamento no código para evitar a degradação do modelo:

import torch

class EarlyStopping:
    def __init__(self, patience: int = 3, min_delta: float = 0.001):
        self.patience = patience          # Скільки епох чекати після зупинки прогресу
        self.min_delta = min_delta        # Мінімальне покращення loss
        self.counter = 0
        self.best_loss = float('inf')
        self.should_stop = False

    def check(self, val_loss: float) -> bool:
        if val_loss < self.best_loss - self.min_delta:
            self.best_loss = val_loss
            self.counter = 0              # Скидаємо лічильник: є покращення!
        else:
            self.counter += 1
            if self.counter >= self.patience:
                self.should_stop = True
                print(f"[ALERT] Overfitting виявлено! Зупинка навчання на eval_loss: {val_loss:.4f}")
        return self.should_stop

Durante o fine-tuning com a biblioteca Hugging Face Trainer, isso é configurado literalmente com duas linhas de configuração:

from transformers import EarlyStoppingCallback, TrainingArguments

training_args = TrainingArguments(
    eval_strategy="epoch",
    save_strategy="epoch",
    load_best_model_at_end=True,
    metric_for_best_model="eval_loss",
    weight_decay=0.01  # L2 регуляризація
)
callbacks = [EarlyStoppingCallback(early_stopping_patience=2)]

3. Quatro principais métodos para combater o overfitting

  1. Regularização de pesos (Weight Decay / $L_2$): Penaliza o modelo por valores absolutos excessivamente grandes dos pesos na função de perda ($Loss = Loss_{orig} + \lambda \sum w_i^2$), forçando o modelo a permanecer suave e estável contra picos locais.
  2. Dropout (Desativação aleatória de nós): Durante o treinamento, 10–20% aleatórios dos neurônios em cada camada são temporariamente zerados. Isso impede a "conspiração" (co-adaptation) entre neurônios e força a rede a encontrar caminhos redundantes e confiáveis para a transmissão de sinal.
  3. Redução da capacidade paramétrica (LoRA Rank Reduction): Se o dataset para adaptação for pequeno (por exemplo, 200 exemplos de estilo corporativo), definir r=64 no LoRA quase certamente levará a um overfitting catastrófico. Reduzir o rank para r=8 ou r=16 atua como um regularizador poderoso.
  4. Augmentação e dados sintéticos: Adição artificial de ruído, paráfrase via modelos de linguagem e expansão de conteúdo para diluir formulações específicas.

4. Conclusão de engenharia

O overfitting é o preço pago pela alta capacidade expressiva das redes neurais modernas. Um engenheiro de ML profissional nunca se orienta pelos belos números da loss de treinamento, mantendo sempre um conjunto de validação rigoroso fora do loop de treinamento.

/ Perguntas FrequentesSchema.org FAQPage

FAQ: Overfitting

Pelo ponto de divergência: o erro de treinamento (Train Loss) continua a cair monotonicamente, enquanto o erro de validação (Validation Loss) atinge um mínimo e começa a subir. É neste momento que o modelo deixa de aprender regras gerais e passa a memorizar amostras específicas.
/ Links internos
Todos os termos