Epoch
Makine öğreniminde bir epoch'un ne olduğunu ve model eğitimini nasıl etkilediğini öğren. Optimizasyonu keşfet, aşırı öğrenmeden kaçın ve Ultralytics YOLO26'yı kolayca eğit.
Bir epoch, bir makine öğrenimi algoritmasının tüm training dataset üzerinden gerçekleştirdiği bir tam döngüyü temsil eder. Bu süreç boyunca model, verideki her bir örnek üzerinden tam olarak bir kez geçerek dahili parametrelerini güncelleme fırsatı bulur. deep learning bağlamında, tek bir geçiş, bir neural network modelinin karmaşık kalıpları etkili bir şekilde öğrenmesi için nadiren yeterlidir. Bu nedenle eğitim genellikle birden fazla epoch içerir; bu da öğrenme algoritmasının anlayışını yinelemeli olarak geliştirmesine ve tahminleri ile gerçek zemin gerçeği (ground truth) arasındaki hatayı en aza indirmesine olanak tanır.
Optimizasyonda Epoch'ların Rolü#
Eğitimin birincil amacı, belirli bir loss function değerini en aza indirmek için model weights ayarlarını yapmaktır. stochastic gradient descent (SGD) veya Adam optimizer gibi optimizasyon algoritmaları, bu ayarlara rehberlik etmesi için her epoch sırasında hesaplanan hatayı kullanır. Epoch sayısı arttıkça model genellikle yüksek hata (rastgele tahmin) durumundan daha düşük hata (öğrenilmiş kalıplar) durumuna geçer.
Ancak, doğru epoch sayısını seçmek hyperparameter tuning sürecinin kritik bir yönüdür.
- Çok az epoch: Bu durum, modelin verideki temel eğilimi henüz yakalayamadığı underfitting sorununa yol açabilir.
- Çok fazla epoch: Bu durum genellikle modelin yeni verilere genelleme yapmak yerine eğitim gürültüsünü ezberlediği overfitting ile sonuçlanır. Bunu önlemek için geliştiriciler genellikle validation data üzerindeki performansı izler ve genelleme iyileşmeyi durdurduğunda eğitimi durdurmak için early stopping gibi teknikler kullanır.
Epoch vs. Batch vs. İterasyon#
Yeni başlayanların "epoch" terimini ilgili terimlerle karıştırması yaygındır. Bu kavramların hiyerarşisini anlamak, training loops yapılandırmasını doğru yapmak için esastır:
- Epoch: Tüm veri kümesi üzerinden bir tam geçiş.
- Batch: Veri kümesinin aynı anda işlenen bir alt kümesidir. Veri kümeleri genellikle tümüyle GPU memory içine sığamayacak kadar büyük olduğundan, batch size ile tanımlanan daha küçük gruplara bölünürler.
- İterasyon: Modelin ağırlıklarına yapılan tek bir güncelleme. Eğer bir veri kümesinde 1.000 görüntü varsa ve batch size 100 ise, bir epoch'u tamamlamak 10 iterasyon sürecektir.
Gerçek Dünya Uygulamaları#
Gereken epoch sayısı, görevin karmaşıklığına ve verinin boyutuna bağlı olarak büyük ölçüde değişir.
- Tıbbi Görüntü Analizi: MRI taramalarındaki tümörleri tespit etmek gibi medical image analysis alanında doğruluk çok önemlidir. Bu görevler için eğitilen modeller genellikle yüzlerce epoch boyunca çalışır. Bu kapsamlı eğitim, convolutional neural network (CNN) modelinin, potansiyel olarak hayat kurtaracak şekilde, kötü huylu dokuyu sağlıklı dokudan ayıran ince anomalileri ayırt edebilmesini sağlar.
- Otonom Sürüş: autonomous vehicles için nesne algılama modelleri yayaları, tabelaları ve diğer araçları güvenilir bir şekilde tanımlamak zorundadır. Bu sağlam sistemlerin eğitimi genellikle COCO veya Objects365 gibi devasa veri kümelerini içerir. Veri kümesinin boyutu çok büyük olsa da, modelin farklı hava ve ışık koşullarına iyi genelleme yapan bir çözüme ulaşması için yine de birden fazla epoch gereklidir.
Eğitim Döngülerini Kod ile Yönetme#
Ultralytics YOLO gibi modern çerçeveler kullanılırken, epoch sayısını tanımlamak eğitim komutunda basit bir argümandır. Ultralytics Platform gibi araçlar, en uygun durdurma noktasını belirlemek için her epoch boyunca kayıp eğrilerini görselleştirmeye yardımcı olabilir.
Aşağıdaki örnek, bir YOLO26 modeli eğitilirken epoch sayısının nasıl ayarlanacağını göstermektedir:
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)Bu kod parçasında, epochs=50 argümanı eğitim motoruna coco8.yaml veri kümesi üzerinde 50 farklı kez döngü yapmasını söyler. Her döngü sırasında model, algılama yeteneklerini geliştirmek için forward propagation ve backpropagation gerçekleştirir.






