Epoch (Epoch (Eğitim Döngüsü))

Tüm eğitim veri setinin bir yapay sinir ağından baştan sona tam olarak bir kez geçirilmesine 'epoch' (epok veya eğitim döngüsü) denir.

Epoch (Epok ya da Eğitim Döngüsü), makine öğrenimi ve derin öğrenme modellerinin eğitiminde kullanılan temel bir zaman birimidir. Bir epoch; modelin tüm eğitim veri setini baştan sona tam olarak bir kez işlemesi, yani her örnek üzerinde hem ileri yayılım (forward pass) hem de geri yayılım (backward pass) gerçekleştirmesi anlamına gelir. Makine öğrenimi modellerini eğitirken, yalnızca bir epoch genellikle yeterli olmaz. Model, karmaşık kalıpları ve ilişkileri kavrayabilmek için aynı veriler üzerinde defalarca geçiş yapmak zorundadır. Bu nedenle modeller onlarca, yüzlerce hatta binlerce epoch boyunca eğitilebilir. Büyük dil modellerinin (LLM) eğitimi milyarlarca token üzerinde birden fazla epoch uygulanarak gerçekleştirilir; görüntü sınıflandırma gibi daha küçük görevlerde ise 10-100 epoch sıkça kullanılır. Epoch ve Batch İlişkisi Her epoch, büyük veri setini daha küçük parçalara (batch) bölerek işler. Bir epoch içindeki güncelleme sayısı, veri seti boyutunun batch boyutuna bölünmesiyle hesaplanır. Örneğin 10.000 örnekli bir veri seti 100'lük batch boyutuyla işleniyorsa, her epoch 100 ağırlık güncellemesi (iterasyon) içerir. Her iterasyonda gradyan hesaplanır ve model ağırlıkları güncellenir; böylece model adım adım öğrenir. Overfitting ve Erken Durdurma Epoch sayısının doğru seçilmesi kritik öneme sahiptir. Çok az epoch modelin yeterince öğrenememesine (underfitting) yol açar; model verinin altında yatan örüntüleri kavramaz ve hem eğitim hem de test verisinde kötü performans gösterir. Öte yandan, çok fazla epoch modelin eğitim verisini mekanik olarak ezberlemeye (overfitting) başlamasına neden olabilir. Bu durumda model eğitim setinde mükemmel sonuçlar verirken yeni verilerde başarısız olur. Bu dengesizliği çözmek için "Early Stopping" (Erken Durdurma) tekniği uygulanır: model her epoch sonunda doğrulama (validation) seti üzerinde değerlendirilir ve doğrulama kaybı iyileşmemeye başladığında eğitim otomatik olarak durdurularak en iyi ağırlıklar korunur. Eğitim ve doğrulama kaybının birbirinden ayrışmaya başlaması (divergence), overfitting'in erken belirtisidir. Epoch Sayısını Belirlemek Kaç epoch kullanılacağı, modelin karmaşıklığına, veri setinin büyüklüğüne ve görevin zorluğuna bağlıdır. Küçük veri setlerinde genellikle daha fazla epoch gerekir çünkü model her geçişte sınırlı miktarda örneğe maruz kalır. Büyük veri setlerinde ise tek bir epoch bile çok sayıda güncelleme içerdiğinden az epoch ile tatmin edici sonuçlar alınabilir. Epoch sayısı, öğrenme hızı (learning rate) ve model mimarisiyle birlikte hiperparametre optimizasyonunun temel bileşenlerinden biridir.

loop Neden Birden Fazla Epoch Gerekir?

Bir öğrenciye 1000 sayfalık bir kitabı bir kez okutursanız, konuyu tam anlayamaz. Kitabı ikinci kez okuduğunda daha iyi anlar, 10. kez okuduğunda ustalaşır. Yapay zeka da böyledir. 1 Epoch, 10.000 fotoğrafın hepsine bir kez bakılmasıdır. Modelin detayları kavraması için genellikle 50 veya 100 Epoch'a (aynı veriyi 100 kez turlamaya) ihtiyaç vardır.

balance Epoch Sayısını Belirlemek

Eğer Epoch çok düşük (Örn: 2) olursa, model hiçbir şey öğrenemez (Underfitting). Eğer Epoch çok yüksek (Örn: 1000) olursa, model veriyi tamamen ezberler ve yeni durumlara adapte olamaz (Overfitting). Veri bilimciler Loss grafiğine bakarak 'Erken Durdurma' (Early Stopping) yöntemiyle en ideal Epoch anında eğitimi keserler.

Epoch, Batch ve Iteration İlişkisi

  • check_circle Epoch: Tüm Verinin Bir Kez Görülmesi: Model eğitim verisinin tamamını bir kez işlediğinde bir epoch tamamlanır. 10.000 örnekli veri seti ile 10 epoch eğitim yapılırsa model bu örnekleri toplamda 10 kez görür. Her epoch tamamlandığında genellikle doğrulama seti üzerinde performans ölçülür.
  • check_circle Batch: Her Seferinde İşlenen Örnek Grubu: Model tüm veriyi aynı anda değil, küçük gruplara (batch) bölerek işler. Batch boyutu (batch size) tipik olarak 16, 32, 64 veya 128 olarak seçilir. Küçük batch → daha gürültülü ama daha düzenli güncelleme; büyük batch → daha kararlı ama bellek gereksimi yüksek.
  • check_circle Iteration: Her Batch için Bir Güncelleme: Her batch'in işlenmesi ve parametre güncellemesi bir iteration'dır. 10.000 örnek ve batch boyutu 100 ise 1 epoch = 100 iteration. 3 epoch eğitim = 300 iteration = 30.000 örnek görülmesi. Learning rate scheduler, warmup adımları ve early stopping çoğunlukla iteration sayısına göre ayarlanır.
  • check_circle Gradient Accumulation: GPU belleği kısıtlı olduğunda büyük batch boyutu kullanmak mümkün olmayabilir. Gradient accumulation, birkaç küçük batch'in gradyanlarını topladıktan sonra tek bir büyük güncelleme yapmayı sağlar. Örnek: 32'lik batch boyutu ve 4 adım birikim = 128'lik efektif batch boyutu; bellek kullanımı değişmez.

Doğru Epoch Sayısı: Early Stopping ve LR Scheduling

Kaç epoch eğitim yapılmalı sorusunun evrensel cevabı yoktur; veri boyutu, model karmaşıklığı ve görev türüne göre değişir. Çok az epoch → underfitting: model veriyi yeterince öğrenemez. Çok fazla epoch → overfitting: model eğitim verisini ezberler, doğrulama performansı bozulur. Early stopping bu dengeyi otomatik bulur: doğrulama kaybı belirli bir sabır (patience) sayısı kadar iyileşmediğinde eğitim durdurulur. Learning rate scheduling da epoch/iteration tabanlıdır: cosine annealing, step decay ve warmup stratejileri eğitim süresince öğrenme hızını yönetir. LLM ince ayarında (fine-tuning) genellikle 1-5 epoch yeterlidir; görüntü sınıflandırma modellerinde 50-200 epoch tipiktir.

Epoch Yönetimi İçin Pratik Araçlar

Early Stopping (Keras/PyTorch)

Doğrulama kaybı iyileşmediğinde eğitimi erken sonlandırır; patience parametresiyle minimum epoch garantisi verilir — aşırı öğrenmeden kaçınmanın standart yolu.

LR Scheduler

Epoch ilerledikçe öğrenme hızını azaltma; CosineAnnealingLR ve ReduceLROnPlateau yaygın tercihler — çok epoch gereksinimini dolaylı azaltır.

Warmup Stratejisi

İlk N epoch'ta öğrenme hızını yavaşça artırma; transformer eğitiminde erken kararsız güncellemelerin önüne geçer.

WandB / MLflow İzleme

Her epoch'ta kayıp ve metrik loglaması; eğriler sayesinde optimal epoch sayısı ve erken durdurma noktası görsel olarak tespit edilir.

checklist Göreve göre tipik epoch sayıları

  • check_circle LLM ince ayarı (SFT, LoRA): 1-3 epoch. Birkaç bin örneklik temiz talimat setlerinde 2-3 epoch iyi sonuç verir; on binlerce örnekte 1 epoch genellikle yeterli. Model eğitim örneklerini kelimesi kelimesine tekrar etmeye başladıysa epoch sayısı fazla demektir.
  • check_circle Tercih hizalaması (DPO): Çoğunlukla 1 epoch. İkinci epoch'tan sonra model tercih setine ezberler ve matematik, kod gibi genel yetenek testlerinde gerileme görülür.
  • check_circle BERT sınıfı model ince ayarı: 2-4 epoch. Metin sınıflandırma ve varlık tanıma görevlerinde bu aralık uzun süredir standart başlangıç; daha fazlası doğrulama skorunu nadiren artırır.
  • check_circle Transfer öğrenmeyle görüntü sınıflandırma: Donmuş gövde üzerinde 5-15 epoch, ardından düşük öğrenme oranıyla 10-30 epoch ince ayar. Toplam bütçe sıfırdan eğitimin onda biri civarında kalır.
  • check_circle Sıfırdan CNN eğitimi: 50-200 epoch. CIFAR-10 ölçeğinde 100 epoch tipik bir başlangıç noktası; büyük görüntü veri setlerinde 90 epoch civarı eğitimler yaygın olarak raporlanır.
  • check_circle Nesne tespiti (YOLO ailesi): Kendi veri setinizde 100-300 epoch. Birkaç yüz görüntülük küçük setlerde erken durdurma ve veri artırımı olmadan ezber kaçınılmaz.
  • check_circle Tablo verisiyle sinir ağı: Sabit sayı belirlemek yerine erken durdurma kullanın. Doğrulama kaybı 10-20 epoch boyunca iyileşmiyorsa durdurun; bu tür verilerde gradient boosting modellerinin daha iyi sonuç verdiği durumlar da sık.

timer Early stopping ile epoch ayarı: hazır kod

  • check_circle Keras: callbacks listesine keras.callbacks.EarlyStopping(monitor="val_loss", patience=5, restore_best_weights=True) ekleyin. restore_best_weights parametresini vermezseniz eğitim doğru yerde durur ama elinizde en iyi değil, en son ağırlıklar kalır. epochs değerini bilinçli olarak yüksek verip durdurma kararını callback'e bırakabilirsiniz.
  • check_circle Hugging Face Trainer: TrainingArguments içinde num_train_epochs=3, eval_strategy="epoch", save_strategy="epoch", load_best_model_at_end=True ve metric_for_best_model="eval_loss" ayarlayın, ardından callbacks=[EarlyStoppingCallback(early_stopping_patience=2)] verin. eval_strategy parametresi eski transformers sürümlerinde evaluation_strategy adıyla geçer.
  • check_circle PyTorch (elle): Her epoch sonunda doğrulama kaybını hesaplayın, en iyi değeri ve o anki ağırlıkları torch.save(model.state_dict(), yol) ile saklayın, sabır sayacı dolduğunda döngüden çıkın. Yirmi satırlık bir yardımcı sınıf bu işi görür, hazır kütüphane şart değil.
  • check_circle Doğru metriği izleyin: Dengesiz sınıflarda val_loss yerine F1 veya AUC izleyin ve mode değerini max yapın. Yanlış metrik seçildiğinde erken durdurma modeli yanlış noktada dondurur; bu, fazla epoch'tan daha sinsi bir hata.
  • check_circle Sabır değerini çok düşük tutmayın: Warmup kullanan eğitimlerde ilk epoch'lar dalgalı geçer. patience değeri 1 verildiğinde model daha ısınmadan eğitim kesilebilir; 3-5 arası daha güvenli bir başlangıç.
  • check_circle Checkpoint kaydedin: save_best_only veya load_best_model_at_end olmadan erken durdurma yarım fayda sağlar. Uzun eğitimlerde her epoch'ta checkpoint almak, kesilen bir işi baştan başlatmaktan çok daha ucuza gelir.

payments Epoch sayısı GPU faturasını nasıl belirler

Eğitim süresi doğrudan epoch sayısıyla çarpılır, bu yüzden "ne olur ne olmaz 100 epoch koyalım" yaklaşımının bir bedeli var. Hesap basit: bir epoch'taki adım sayısı, örnek sayısının efektif yığın boyutuna (yığın boyutu çarpı gradyan biriktirme adımı) bölümüdür. Elli bin örnek ve 32'lik yığın, biriktirme yoksa 1.563 adım eder. Adım başına 0,4 saniye ölçtüyseniz bir epoch yaklaşık 10 dakika sürer; 20 epoch üç buçuk saat demektir.

Bulut GPU kirası saatlik birkaç dolar bandında seyrettiğinde tek bir eğitim genellikle tek haneli dolarda kalır. Fark hiperparametre aramasında ortaya çıkar: aynı eğitimi 12 farklı ayarla denerseniz hem süre hem fatura 12 ile çarpılır. Erken durdurma burada doğrudan tasarruftur, çünkü doğrulama kaybı 8. epoch'ta dibe vurduysa kalan 12 epoch yalnızca elektrik harcar.

Pratik bir yöntem: ilk denemeyi verinin yüzde onluk bir örneğiyle ve az epoch'la yapın. Adım süresini ölçün, tam veriye ölçekleyin, ancak ondan sonra uzun eğitimi başlatın. Aynı ölçüm, yığın boyutunu artırmanın ya da karışık hassasiyete (bf16, fp16) geçmenin adım süresini ne kadar düşürdüğünü de gösterir; çoğu zaman epoch sayısını kısmaktan daha çok kazandırır.

Sıkça Sorulan Sorular

  • check_circle Epoch nedir? Epoch, makine öğrenmesi modelinin eğitim verisinin tamamını bir kez işlediği eğitim döngüsüdür. Eğitim genellikle birden fazla epoch ile yapılır; her epoch'ta model parametreleri güncellenir ve doğrulama performansı ölçülür.
  • check_circle Epoch ile iteration arasındaki fark nedir? Epoch: tüm eğitim verisinin bir kez işlenmesi. Iteration: tek bir batch'in işlenmesi ve parametre güncellemesi. Eğer veri seti 1000 örnek ve batch boyutu 50 ise: 1 epoch = 20 iteration (1000/50 = 20). 10 epoch eğitim = 200 toplam iteration.
  • check_circle Kaç epoch eğitim yapmak gerekir? Görev ve model büyüklüğüne bağlıdır. LLM ince ayarı: genellikle 1-5 epoch. Sıfırdan görüntü sınıflandırma: 50-200 epoch. En iyi pratik: early stopping — doğrulama performansı iyileşmediğinde otomatik durdurma kullan. Bu hem overfitting'i önler hem de gereksiz hesaplamayı engeller.
  • check_circle LLM ince ayarında kaç epoch kullanılmalı? Çoğu durumda 1 ile 3 arasında. Birkaç bin örneklik talimat setlerinde 2-3 epoch iyi sonuç verir, on binlerce örnekte 1 epoch genellikle yeterlidir. Model eğitim örneklerini birebir tekrarlamaya başladıysa ya da doğrulama kaybı yükseliyorsa epoch sayısını düşürün ve bunun yerine veri çeşitliliğini artırın.
  • check_circle Epoch mu step mi ayarlamalıyım? İkisi aynı şeyi farklı birimle söyler: adım sayısı, epoch sayısı çarpı (örnek sayısı bölü efektif yığın boyutu). Veri seti sabitken epoch daha okunaklıdır. Akan veri, çok büyük veri setleri ya da farklı boyuttaki veri setlerini karşılaştıran deneylerde max_steps kullanmak daha kontrollü olur, çünkü öğrenme oranı planlayıcısı da adım üzerinden çalışır.
  • check_circle Eğitim kaybı düşerken doğrulama kaybı artıyor, ne yapmalıyım? Bu aşırı öğrenmenin klasik işaretidir. Doğrulama kaybının dibe vurduğu epoch'a dönün ve o noktayı erken durdurma ile otomatik yakalayın. Sorun sürüyorsa dropout ve weight decay ekleyin, veri artırımı uygulayın, model boyutunu küçültün veya daha fazla etiketli veri toplayın.
  • check_circle Bir epoch ne kadar sürer? Veri büyüklüğüne, yığın boyutuna ve donanıma göre saniyelerden saatlere kadar değişir. Tahmin için adım sayısını hesaplayın (örnek sayısı bölü efektif yığın boyutu) ve birkaç adımın süresini ölçüp çarpın. Elli bin örnek, 32'lik yığın ve adım başına 0,4 saniye yaklaşık 10 dakikalık bir epoch demektir.