Epoch
Aprenda o que é uma época no aprendizado de máquina e como ela impacta o treinamento de modelos. Explore a otimização, evite o overfitting e treine o Ultralytics YOLO26 com facilidade.
Um epoch representa um ciclo completo através de todo o training dataset por um algoritmo de machine learning. Durante este processo, o modelo tem a oportunidade de atualizar os seus parâmetros internos com base em cada amostra nos dados exatamente uma vez. No contexto de deep learning, uma única passagem raramente é suficiente para uma neural network aprender padrões complexos de forma eficaz. Portanto, o treino envolve normalmente múltiplos epochs, permitindo que o algoritmo de aprendizagem refine iterativamente a sua compreensão e minimize o erro entre as suas previsões e a ground truth real.
O papel das épocas na otimização#
O objetivo principal do treino é ajustar os model weights para minimizar uma loss function específica. Os algoritmos de otimização, como stochastic gradient descent (SGD) ou o Adam optimizer, utilizam o erro calculado durante cada epoch para orientar estes ajustes. À medida que o número de epochs aumenta, o modelo geralmente transita de um estado de erro elevado (adivinhação aleatória) para um erro inferior (padrões aprendidos).
No entanto, selecionar o número correto de epochs é um aspeto crítico da hyperparameter tuning.
- Demasiado poucos epochs: Isto pode levar a underfitting, onde o modelo ainda não captou a tendência subjacente dos dados.
- Demasiados epochs: Isto resulta frequentemente em overfitting, onde o modelo memoriza o ruído de treino em vez de generalizar para novos dados. Para evitar isto, os programadores monitorizam frequentemente o desempenho em validation data e empregam técnicas como early stopping para interromper o treino quando a generalização para de melhorar.
Época vs. Lote vs. Iteração#
É comum os principiantes confundirem "epoch" com termos relacionados. Compreender a hierarquia destes conceitos é essencial para configurar corretamente os training loops:
- Época: Uma passagem completa pelo conjunto de dados completo.
- Batch: Um subconjunto do dataset processado em simultâneo. Como os datasets são frequentemente demasiado grandes para caber na GPU memory de uma só vez, são divididos em grupos mais pequenos definidos pelo batch size.
- Iteração: Uma única atualização nos pesos do modelo. Se um conjunto de dados tem 1.000 imagens e o tamanho do lote é 100, levará 10 iterações para completar uma época.
Aplicações no Mundo Real#
O número de épocas necessárias varia drasticamente dependendo da complexidade da tarefa e do tamanho dos dados.
- Análise de Imagem Médica: Na medical image analysis, tal como a deteção de tumores em exames de ressonância magnética, a precisão é fundamental. Os modelos treinados para estas tarefas correm frequentemente durante centenas de epochs. Este treino extensivo garante que a convolutional neural network (CNN) consegue discernir anomalias subtis que distinguem tecido maligno de tecido saudável, potencialmente salvando vidas.
- Condução Autónoma: Para autonomous vehicles, os modelos de deteção de objetos devem identificar de forma fiável peões, sinais e outros veículos. O treino destes sistemas robustos envolve tipicamente datasets massivos como COCO ou Objects365. Embora o tamanho do dataset seja enorme, o modelo ainda requer múltiplos epochs para convergir para uma solução que generalize bem para diversas condições meteorológicas e de iluminação.
Gerenciando ciclos de treinamento com código#
Ao utilizar frameworks modernas como Ultralytics YOLO, definir o número de epochs é um argumento direto no comando de treino. Ferramentas como a Ultralytics Platform podem ajudar a visualizar as curvas de perda ao longo de cada epoch para identificar o ponto de paragem ideal.
O exemplo seguinte demonstra como definir a contagem de epochs ao treinar um modelo YOLO26:
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train the model for 50 epochs
# The 'epochs' argument determines how many times the model sees the entire dataset
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)Neste snippet, o argumento epochs=50 instrui o motor de treino a percorrer o dataset coco8.yaml 50 vezes distintas. Durante cada ciclo, o modelo executa forward propagation e backpropagation para refinamento das suas capacidades de deteção.






