tag Eğitim Teknikleri
Batch Normalization (Toplu Normalleştirme)
Bu sayfada Eğitim Teknikleri (Batch Normalization (Toplu Normalleştirme)) etiketi ile işaretlenmiş 2 yapay zeka kavramını bulabilirsiniz.
Batch Normalization (Toplu Normallesme), derin sinir aglarinin egitimi sirasinda her katmanin aktivasyonlarini mini-batch istatistiklerini kullanarak normalize eden ve bu sayede egitimi hizlandirip kararlilastiran bir tekniktir. 2015 yilinda Ioffe ve Szegedy tarafindan yayimlanan makale, BN'yi derin ogrenme camiasinin standart yontemlerinden biri haline getirdi. BN algoritmasini adim adim inceleyelim. Her mini-batch icin, hedef katmanda gelen aktivasyonlarin batch ortalamasisi ve varyansi hesaplanir. Bu istatistiklerle aktivasyonlar normalize edilir, yani ortalama 0, varyans 1 olur. Ardindan iki ogrenilir parametreyle (gama, beta) yeniden olcelkendirme yapilir: gama aktivasyonlarin olcegini, beta ise kaydirmasini belirler. Bu yeniden olceklendirme adimi, normalizasyonun modelin ifade gucunu kisitlamamasini saglar; model gerekirse orijinal dagilima benzer bir ciktiya geri donebilir. BN'nin en onemli pratik faydasi egitimin hizlanmasidir. Normallesme, gradyanlarin katmanlar arasinda daha tutarli bir buyuklukle akmasini saglar; bu cok daha yuksek learning rate kullanimi ve daha az epoch ile yakinsama anlamina gelir. Bazi deneyler BN'nin egitimi 5-10 kat hizlandirabildigini gostermistir. Mekanizma tartismali olsa da BN, "internal covariate shift" sorununu azalttigini iddia eden yaklasimla tanitilmistir. Derin ag egitiminde alt katmanlardaki agirlik guncellemeler, ust katmanlarin girdi dagilimini surdurur degistirir; bu degisim ogrenmeyi yavaslattir. BN her katmanin girdi dagilimini dengeleyerek bu sorunu azaltir. Transformer mimarisinin yayginlasmisiyla Layer Normalization (LayerNorm) on plana cikmiştir. LayerNorm batch boyutu yerine ozellik boyutu uzerinden normalizasyon yapar; tek ornekle de calistigindan RNN ve Transformer'larda tercih edilir. **Sik Sorulan Sorular** **Batch Normalization hangi konuma yerlestirilir?** Geleneksel olarak lineer katman veya evrisme katmani ile aktivasyon fonksiyonu arasina yerlestirilir. Ancak "pre-activation" yaklasiminda aktivasyondan once konumlandirma da kullanilir; performans farkli mimarilerde degisebilir. **Kucuk batch size'larda BN calisir mi?** Kucuk batch'lerde BN'nin istatistiksel tahminleri guvenilmez hale gelebilir. Bu durumda Group Normalization veya Layer Normalization daha kararlı alternatiflerdir. **BN neden inference'ta farkli davranir?** Egitimde mini-batch istatistikleri kullanilirken inference'ta egitim boyunca biriktirilen hareketli ortalama (running mean/variance) kullanilir. Bu model eval() ve train() modlari arasindaki farkliliktan kaynaklanir. **Transformer'lar neden LayerNorm kullanir?** Transformer'larin sekanslar ve self-attention yapilariyla calismasi, batch boyutuna bagli bir normalizasyonu pratik kilmaz. LayerNorm her ornegi bagimsiz normalize ettiginden bu mimariyle dogal bir uyum icindedir.
Batch Normalization (Toplu Normalleştirme)
Batch Normalization (Toplu Normallesme), derin sinir aglarinin egitimi sirasinda her katmanin aktivasyonlarini mini-batch istatistiklerini kullanarak normalize eden ve bu sayede egitimi hizlandirip kararlilastiran bir tekniktir. 2015 yilinda Ioffe ve Szegedy tarafindan yayimlanan makale, BN'yi derin ogrenme camiasinin standart yontemlerinden biri haline getirdi. BN algoritmasini adim adim inceleyelim. Her mini-batch icin, hedef katmanda gelen aktivasyonlarin batch ortalamasisi ve varyansi hesaplanir. Bu istatistiklerle aktivasyonlar normalize edilir, yani ortalama 0, varyans 1 olur. Ardindan iki ogrenilir parametreyle (gama, beta) yeniden olcelkendirme yapilir: gama aktivasyonlarin olcegini, beta ise kaydirmasini belirler. Bu yeniden olceklendirme adimi, normalizasyonun modelin ifade gucunu kisitlamamasini saglar; model gerekirse orijinal dagilima benzer bir ciktiya geri donebilir. BN'nin en onemli pratik faydasi egitimin hizlanmasidir. Normallesme, gradyanlarin katmanlar arasinda daha tutarli bir buyuklukle akmasini saglar; bu cok daha yuksek learning rate kullanimi ve daha az epoch ile yakinsama anlamina gelir. Bazi deneyler BN'nin egitimi 5-10 kat hizlandirabildigini gostermistir. Mekanizma tartismali olsa da BN, "internal covariate shift" sorununu azalttigini iddia eden yaklasimla tanitilmistir. Derin ag egitiminde alt katmanlardaki agirlik guncellemeler, ust katmanlarin girdi dagilimini surdurur degistirir; bu degisim ogrenmeyi yavaslattir. BN her katmanin girdi dagilimini dengeleyerek bu sorunu azaltir. Transformer mimarisinin yayginlasmisiyla Layer Normalization (LayerNorm) on plana cikmiştir. LayerNorm batch boyutu yerine ozellik boyutu uzerinden normalizasyon yapar; tek ornekle de calistigindan RNN ve Transformer'larda tercih edilir. **Sik Sorulan Sorular** **Batch Normalization hangi konuma yerlestirilir?** Geleneksel olarak lineer katman veya evrisme katmani ile aktivasyon fonksiyonu arasina yerlestirilir. Ancak "pre-activation" yaklasiminda aktivasyondan once konumlandirma da kullanilir; performans farkli mimarilerde degisebilir. **Kucuk batch size'larda BN calisir mi?** Kucuk batch'lerde BN'nin istatistiksel tahminleri guvenilmez hale gelebilir. Bu durumda Group Normalization veya Layer Normalization daha kararlı alternatiflerdir. **BN neden inference'ta farkli davranir?** Egitimde mini-batch istatistikleri kullanilirken inference'ta egitim boyunca biriktirilen hareketli ortalama (running mean/variance) kullanilir. Bu model eval() ve train() modlari arasindaki farkliliktan kaynaklanir. **Transformer'lar neden LayerNorm kullanir?** Transformer'larin sekanslar ve self-attention yapilariyla calismasi, batch boyutuna bagli bir normalizasyonu pratik kilmaz. LayerNorm her ornegi bagimsiz normalize ettiginden bu mimariyle dogal bir uyum icindedir.
Gradient Checkpointing (Gradyan Kontrol Noktası)
Gradient checkpointing (Türkçe: gradyan kontrol noktası, aynı zamanda activation checkpointing olarak da bilinir), derin öğrenme modellerini sınırlı GPU belleğiyle eğitmeyi mümkün kılan kritik bir bellek optimizasyon tekniğidir. Geleneksel geri yayılım (backpropagation) algoritmasında, sinir ağının ileri geçişi (forward pass) sırasında her katmanda üretilen ara aktivasyonların tamamı bellekte saklanır. Bunun nedeni, geri yayılım aşamasında gradyanları hesaplamak için bu değerlere ihtiyaç duyulmasıdır. Ne var ki GPU belleği (VRAM) sınırlıdır; büyük ve derin modellerde bu durum bellek yetersizliğine (out-of-memory hatası) yol açar. Gradient checkpointing bu sorunu şu şekilde çözer: İleri geçiş sırasında yalnızca belirli katmanlar kontrol noktası olarak işaretlenir ve yalnızca bu katmanların aktivasyonları saklanır. İki kontrol noktası arasındaki aktivasyonlar bellekte tutulmaz. Geri yayılım sırasında, gerektiğinde bu ara değerler kontrol noktasından başlayarak yeniden hesaplanır. Bellek karmaşıklığı açısından bakıldığında, n katmanlı bir ağda geleneksel yaklaşım O(n) bellek kullanırken gradient checkpointing bunu O(√n)'ye indirebilir; ağın karekökü kadar katmanı kontrol noktası olarak seçmek bu bellek-hesaplama dengesini sağlar. Bedeli ise hesaplama süresinin yaklaşık yüzde yirmi ile otuz üç arasında artmasıdır, çünkü bazı aktivasyonlar iki kez hesaplanır. PyTorch'ta torch.utils.checkpoint.checkpoint() fonksiyonu ve Hugging Face Transformers kütüphanesindeki model.gradient_checkpointing_enable() yöntemi bu tekniği kolayca etkinleştirmeye olanak tanır. LoRA ve QLoRA gibi parametre-verimli ince ayar yöntemleriyle birlikte kullanıldığında, büyük dil modellerini tüketici sınıfı GPU'larda eğitmek ve ince ayar yapmak mümkün hale gelir. Bu kombinasyon, 2023 sonrası açık kaynak LLM ince ayar çalışmalarının neredeyse standart altyapısını oluşturmaktadır.