Epoch, batch size ve iterasyon: derin öğrenme eğitimi nasıl parçalanır
Epoch, verinin tamamının bir kez görülmesidir; batch size, ağırlıkların güncellenmeden önce işlenen örnek sayısıdır; iterasyon ise her güncelleme adımıdır. Üçü eğitimin hızını ve kararlılığını belirler.
Bir bakışta
- Epoch tüm veri üzerinden tam bir geçiştir. Eğitim birçok epoch sürer; her epoch'ta model aynı veriyi yeniden görür.
- Batch size, güncelleme başına örnek sayısıdır. Küçük yığınlar gürültülü ama sık güncelleme, büyük yığınlar sakin ama seyrek güncelleme verir.
- İterasyon bir güncelleme adımıdır. Bir epoch'taki iterasyon sayısı, veri büyüklüğünün yığın boyutuna bölünmesine eşittir.
- Epoch sayısı doğrulama hatasına bakılarak seçilir. Doğrulama hatası artmaya başladığında eğitim durdurulur.
Üç kavram: epoch, batch ve iterasyon
Derin öğrenme modelleri tüm veriyi tek seferde işleyip ağırlıklarını güncellemez; veri küçük gruplara bölünür. Bu gruplara batch (yığın) denir ve her yığının işlenmesinden sonra ağırlıklar bir kez güncellenir. Batch size, bir yığındaki örnek sayısıdır. Bir yığının işlenip ağırlıkların güncellenmesine iterasyon, eğitim verisinin tamamının sırayla tüketilmesine ise epoch denir.
Gündelik bir benzetmeyle: bir sınav kitabındaki tüm soruları çözmek bir epoch'tur; sorular küçük bölümlere ayrılır ve her bölümden sonra yanlışlar gözden geçirilirse, bölümlerin her biri bir iterasyondur. Bölümün büyüklüğü ise batch size'tır.
Yığınlar iterasyonları, iterasyonlar epoch'u oluşturur
- Batch (yığın)Birlikte işlenen örnek grubu.
- İterasyonBir yığın işlenir, ağırlıklar güncellenir.
- EpochTüm yığınlar bitince veri bir kez tüketilmiş olur.
Aralarındaki ilişki küçük bir hesapla görünür
Eğitim verisinin örnek sayısı yığın boyutuna bölündüğünde, bir epoch'taki iterasyon sayısı bulunur. Yığın boyutu yarıya indiğinde aynı epoch için iterasyon sayısı katlanır; model aynı veriyi görür ama daha sık güncellenir. Veri örnek sayısı yığın boyutuna tam bölünmüyorsa son yığın daha küçük kalır.
Epoch sayısı, bu geçişin kaç kez tekrarlanacağını söyler. Epoch sayısı arttıkça aynı veri model tarafından daha çok kez görülür. Toplam güncelleme sayısı, epoch sayısı ile epoch başına iterasyon sayısının çarpımıdır.
Batch size modelin davranışını nasıl değiştirir?
Küçük yığınlarda her güncelleme az örneğe dayandığı için gradyan tahmini gürültülüdür. Bu gürültü, bazı durumlarda modelin kötü yerel çözümlerden çıkmasına yardım eder ve hafif bir düzenlileştirme etkisi yaratabilir; öte yandan eğitim eğrisi daha dalgalı olur ve donanım verimli kullanılmayabilir.
Büyük yığınlarda gradyan tahmini daha kararlıdır ve GPU gibi donanımlar paralelliği daha iyi kullanır. Buna karşılık bellek tüketimi artar, güncelleme sayısı azalır ve çok büyük yığınlar bazen genellemeyi kötüleştirir. Yığın boyutunu değiştirdiğinizde öğrenme oranını da yeniden gözden geçirmek gerekir: büyük yığınlarda genellikle daha yüksek öğrenme oranı denenir.
Yığın boyutu hız, kararlılık ve bellek arasında seçim yaptırır
| Küçük yığın | Büyük yığın | |
|---|---|---|
| Gradyan tahmini | Gürültülü | Kararlı |
| Güncelleme sıklığı | Sık | Seyrek |
| Bellek ihtiyacı | Düşük | Yüksek |
| Donanım kullanımı | Çoğu zaman verimsiz | Paralellikten yararlanır |
| Eğitim eğrisi | Dalgalı | Pürüzsüz |
Epoch sayısı nasıl seçilir?
Epoch sayısı sabit bir sihirli değer değildir. Çok az epoch modeli yetersiz bırakır; çok fazla epoch, eğitim hatası düşmeye devam ederken doğrulama hatasının yükselmesine, yani aşırı öğrenmeye yol açar. Pratikte epoch sayısı yüksek tutulur ve eğitim doğrulama hatasına bakılarak durdurulur.
Bu işe erken durdurma denir: doğrulama hatası belirli sayıda epoch boyunca iyileşmezse eğitim biter ve doğrulamada en düşük hatayı veren ağırlıklar geri yüklenir. Böylece epoch sayısı elle tahmin edilmez, veriden belirlenir. Çoğu derin öğrenme çerçevesi bu davranışı hazır bir geri çağrı (callback) olarak sunar.
Sık yapılan hatalar
Epoch sayısını eğitim hatasına bakarak seçmek en yaygın hatadır; eğitim hatası neredeyse her zaman düşmeye devam eder. Bir başka hata, yığın boyutunu yalnızca bellek sınırına göre seçip öğrenme oranını sabit bırakmaktır.
Yığın boyutu ile iterasyon kavramlarının karıştırılması da sık görülür: bir iterasyon tüm veriyi değil, yalnızca bir yığını işler. Son olarak, her epoch başında verinin karıştırılmaması, modelin örnek sırasını öğrenmesine ve eğitimin yanlı ilerlemesine yol açabilir.
Mindset programlarında epoch ve batch size
Veri Bilimci Programı'nın (Yapay Zeka Odaklı) derin öğrenmede pratik uygulamalar modülü, bu iki ayarı gerçek bir eğitim koşusunda gözleyip yorumlamak için uygundur. Veri Bilimi alanındaki başka programlarda da sinir ağı eğitiminin temel kontrol düğmeleri olarak ele alınır.
İlgili Mindset programı
Veri Bilimci Programı (Yapay Zeka Odaklı)
Sık sorulan sorular
Epoch sayısı ile iterasyon sayısı aynı şey mi?
Hayır. Epoch, verinin tamamının bir kez görülmesidir; iterasyon ise tek bir yığının işlenip ağırlıkların bir kez güncellenmesidir. Yığın boyutu veriye göre küçüldükçe bir epoch içindeki iterasyon sayısı artar. İkisinin ilişkisi veri büyüklüğü ve yığın boyutuyla kurulur.
Yığın boyutu için tek bir doğru değer var mı?
Yok. Genellikle bellek sınırına uyan, çoğunlukla ikinin kuvveti olan değerlerden küçük bir aralık denenir ve doğrulama sonucu karşılaştırılır. Yığın boyutunu değiştirirken öğrenme oranını da yeniden ayarlamak gerekir; ikisi birlikte davranışı belirler.
Her epoch'ta veriyi neden karıştırırız?
Karıştırma, yığınların her epoch'ta farklı örneklerden oluşmasını sağlar. Böylece model verinin sırasını ezberlemez ve gradyan tahminleri daha az yanlı olur. Zamana bağlı serilerde pencere yapısı korunarak yalnızca pencerelerin sırası karıştırılır.
Eğitim uzun sürüyorsa epoch'u mu azaltmalıyım?
Önce doğrulama eğrisine bakın. Erken durdurma zaten gereksiz epoch'ları keser. Hız için daha büyük yığınlar, daha küçük model ya da daha verimli veri yükleme gibi seçenekler de vardır. Epoch'u doğrulama hatasına bakmadan azaltmak yetersiz öğrenmeye yol açabilir.