Descubra como identificar, prevenir e resolver o overfitting em machine learning. Descubra técnicas para melhorar a generalização do modelo e o desempenho no mundo real.
O sobreajuste é um fenómeno comum na aprendizagem automática (ML), em que um modelo aprende os dados de treino muito bem, captando ruído e flutuações aleatórias em vez do padrão subjacente. Isso resulta num modelo que tem um desempenho excepcionalmente bom nos dados em que foi treinado, mas não consegue generalizar para informações novas e desconhecidas . Essencialmente, o modelo memoriza as respostas específicas em vez de aprender as regras gerais necessárias para fazer previsões em cenários do mundo real. Esta é uma questão crítica, porque o objetivo principal de qualquer agente de IA ou sistema preditivo é lidar com dados novos com precisão, não apenas recordar exemplos passados.
O sobreajuste ocorre normalmente quando um modelo é demasiado complexo em relação à quantidade e variedade de dados disponíveis. Se uma rede neural (NN) tiver demasiados parâmetros ou camadas, tem a capacidade de «memorizar» o conjunto de treino. Outros fatores que contribuem para isso incluem:
As consequências do sobreajuste podem ser observadas em vários setores onde a IA é implementada:
Os engenheiros utilizam estratégias específicas para identificar quando um modelo está a começar a sobreajustar-se. O método mais comum envolve dividir os dados em conjuntos de dados de treino e validação. Se o erro de treino continuar a diminuir enquanto o erro de validação começa a aumentar, está a ocorrer sobreajuste.
Para combater isso, várias técnicas são práticas padrão:
É importante distinguir o sobreajuste do subajuste. Enquanto o sobreajuste se comporta como um aluno que memoriza o livro didático, mas é reprovado na prova, o subajuste é como um aluno que mal estudou. Um modelo subajustado é simples demais para capturar a tendência subjacente dos dados, resultando em baixo desempenho tanto nos conjuntos de treino quanto nos de teste. Essa relação é frequentemente descrita como o compromisso entre viés e variância, em que alta variância leva ao sobreajuste e alto viés leva ao subajuste.
Ao treinar modelos modernos de deteção de objetos, como YOLO26,
os parâmetros podem ser ajustados para evitar o sobreajuste diretamente no comando de treino. O seguinte Python
demonstra como aplicar dropout e patience (para interrupção antecipada) usando o
ultralytics pacote.
from ultralytics import YOLO
# Load the latest YOLO26 model
model = YOLO("yolo26n.pt")
# Train with techniques to prevent overfitting
# 'dropout' adds regularization, 'patience' enables early stopping
results = model.train(
data="coco8.yaml",
epochs=100,
dropout=0.1, # 10% dropout rate
patience=10, # Stop if validation loss doesn't improve for 10 epochs
imgsz=640,
)
Ao ajustar cuidadosamente esses hiperparâmetros, os programadores podem garantir que os seus modelos sejam robustos, precisos e prontos para implementação em diversos ambientes.