Epoch
Bir epoch, modelin eğitim verisinin tamamını bir kez işlemesidir. Epoch'ların batch'ler ve iterasyonlarla ilişkisini ve kaç epoch eğitim yapman gerektiğini öğren.
Bir epok, makine öğrenmesi modelinin tüm eğitim veri kümesini baştan sona bir kez işlemesidir. Bir epok sırasında her eğitim örneği, model ağırlıklarının güncellenmesine tam olarak bir kez katkıda bulunur. Derin öğrenme modelleri tek bir geçişte nadiren yeterince öğrenir; bu nedenle eğitim birçok epok boyunca sürer ve ağ tahminlerini iyileştirdikçe eğitim verilerindeki hata genellikle her epokta azalır.
Epoch, Batch ve İterasyon Karşılaştırması#
Bir eğitim çalışmasının yapısını üç terim tanımlar ve bunların her biri kendisinden öncekinin içinde yer alır:
- Epok: Eğitim veri kümesinin tamamında bir kez geçiş.
- Yığın: Tek bir adımda birlikte işlenen örnekler grubu. Veri kümeleri genellikle tek seferde GPU belleğine sığmaz; bu nedenle her epok, çoğunlukla veriler karıştırıldıktan sonra yığınlara bölünür.
- İterasyon: Bir yığın üzerinde kayıp fonksiyonu hesaplandıktan ve gradyanları geriye yayılım yoluyla geri aktıktan sonra yapılan tek bir ağırlık güncellemesi. "Adım" da aynı anlamda kullanılır.
Epok başına iterasyon sayısı, veri kümesinin boyutunun yığın boyutuna bölünüp yukarı yuvarlanmasına eşittir. Yığın boyutu 100 olan 1.000 görüntülük bir veri kümesi, epok başına 10 iterasyon gerektirir; dolayısıyla 50 epok, 500 ağırlık güncellemesi yapar. PyTorch içinde bu yapı, iç içe iki döngü olarak görünür: epoklar üzerinde çalışan bir dış döngü ve bir DataLoader tarafından sunulan yığınlar üzerinde çalışan bir iç döngü.
import torch
from torch.utils.data import DataLoader, TensorDataset
torch.manual_seed(0)
# 1,000 noisy samples of the line y = 3x + 2, served in shuffled batches of 100
x = torch.rand(1000, 1)
y = 3 * x + 2 + 0.1 * torch.randn(1000, 1)
loader = DataLoader(TensorDataset(x, y), batch_size=100, shuffle=True)
model = torch.nn.Linear(1, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.5)
for epoch in range(5): # one epoch = one full pass over all 1,000 samples
for xb, yb in loader: # 1,000 / 100 = 10 iterations per epoch
loss = torch.nn.functional.mse_loss(model(xb), yb)
optimizer.zero_grad()
loss.backward()
optimizer.step()
print(f"Epoch {epoch + 1}: {len(loader)} iterations, last batch loss {loss.item():.4f}")Her epokta 10 iterasyon çalışır ve model gerçek doğruya yakınsadıkça son yığındaki kayıp ilk epoktan sonra 0.1096'dan beşinci epoktan sonra 0.0088'e düşer. Eğitimde veri artırma kullanıldığında her epokta her görüntünün yeni dönüştürülmüş bir sürümü görülür; böylece sonraki epoklar aynı görüntüleri aynen tekrarlamak yerine çeşitlilik ekler.
Epok Sayısını Seçme#
Epok sayısı, hiperparametre ayarının temel ayarlarından biridir. Çok az epok, modelin hem eğitim hem de doğrulama verilerinde yüksek hata vererek yetersiz öğrenmesine yol açar. Çok fazla epok ise modelin eğitim örneklerini ezberlemeye başlaması nedeniyle eğitim kaybı düşmeye devam ederken doğrulama puanının durakladığı veya gerilediği aşırı öğrenmeye yol açar. Uygun sayı; veri kümesinin ve modelin boyutuna, öğrenme hızı çizelgesine ve eğitimin aktarım öğrenmesi yoluyla önceden eğitilmiş ağırlıklarla başlayıp başlamadığına bağlıdır. Ölçek de yanıtı değiştirir: küçük görsel veri kümeleri genellikle yüzlerce epok boyunca eğitilirken büyük dil modelleri verilerinin büyük bölümünü bir kereden az görür; GPT-3 ise filtrelenmiş Common Crawl verilerinde 0,44 epok tamamlamıştır.
Erken durdurma, bu seçimi otomatikleştirir. Model her epoktan sonra doğrulama verilerinde değerlendirilir, en iyi kontrol noktası saklanır ve sabır adı verilen belirli sayıda epok boyunca doğrulama puanı iyileşmediğinde eğitim sona erer.
Epok Tabanlı Eğitim Zamanlamaları#
Durdurma noktasının yanı sıra, öğrenme hızı ısınması ve azaltılması ya da artırma gücü gibi birçok eğitim ayarı epok çizelgesine göre değişir. Ultralytics YOLO eğitiminde, epochs ve patience varsayılan olarak 100'dür; öğrenme hızı ilk 3 epok boyunca ısınır ve modelin gerçek girdilere benzeyen görüntülerle eğitimi tamamlaması için mozaik artırma son 10 epokta kapatılır (close_mosaic=10). YOLO26 eğitim tarifi, sayının model boyutuna göre ne kadar değiştiğini gösterir: Objects365 üzerinde 150 epok ön eğitimden sonra COCO ince ayarı YOLO26n için 245, YOLO26x içinse 40 epok sürmüştür.
from ultralytics import YOLO
# Önceden eğitilmiş bir YOLO26n modeli yükle
model = YOLO("yolo26n.pt")
# 50 epok boyunca eğitim yap: COCO8 eğitim görüntülerinin tamamında 50 geçiş
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)Bu çalışma sırasında eğitici, YOLO26 modelini her epoktan sonra doğrular, her seferinde last.pt dosyasının üzerine yazar ve tespit için mAP50-95 olan doğrulama uygunluk değeri yeni bir zirveye ulaştığında best.pt dosyasını kaydeder.










