Dropout (Dropout (Düzenlileştirme Tekniği))

Dropout, derin sinir ağı eğitiminde nöronları rastgele devre dışı bırakarak overfitting'i önleyen temel düzenlileştirme tekniğidir.

Dropout, derin sinir ağı eğitimi sırasında her güncelleme adımında belirli bir olasılıkla (dropout oranı, p) gizli katman nöronlarının çıkışlarını sıfırlayan ve bu sayede modelin belirli nöronlara aşırı bağımlı kalmasını engelleyen bir düzenlileştirme (regularization) yöntemidir. Srivastava, Hinton, Krizhevsky ve arkadaşları tarafından 2014 yılında yayımlanan "Dropout: A Simple Way to Prevent Neural Networks from Overfitting" başlıklı çalışmayla tanıtılan bu teknik, derin öğrenmenin standart araç kutusuna girmiştir. Tekniğin temel mantığı şöyledir: Eğitim sırasında her mini-batch için rastgele seçilen nöronlar ve onlara bağlı ağırlık bağlantıları geçici olarak kaldırılır. Geriye kalan ağ, seyrek bir alt ağ (sub-network) olarak eğitilir. Böylece her iterasyonda farklı bir mimari öğrenmeye zorlanır. Bu süreç, binlerce farklı ağı aynı anda eğitip tahminlerin ortalamasını almak gibi bir topluluk (ensemble) etkisi yaratır. Test ve çıkarım (inference) aşamasında dropout devre dışı bırakılır; tüm nöronlar aktif kalır. Ancak beklenti tutarlılığını korumak için her nöronun çıkışı (1 − p) faktörüyle çarpılır ya da eğitimde nöron çıkışları 1/(1−p) ile ölçeklenerek test aşamasında herhangi bir ölçeklendirme yapılmaz (inverted dropout). Dropout oranı, uygulamaya göre değişmekle birlikte gizli tam bağlı (fully-connected) katmanlar için 0,2–0,5 aralığı yaygın olarak kullanılır. Evrişimsel katmanlarda oranın daha düşük tutulması ya da Spatial Dropout gibi özel varyantların tercih edilmesi önerilir; tam bağlı olmayan katmanlarda standart dropout dikkat gerektiren yanlı gradyan davranışlarına yol açabilir. Dropout'un derin öğrenme pratiğindeki yeri son derece önemlidir: AlexNet, VGG, ResNet ve transformer temelli modellerin pek çok varyantında kullanılmaktadır. Bununla birlikte Batch Normalization gibi modern düzenlileştirme yöntemlerinin yaygınlaşmasıyla bazı mimarilerde rolü azalmış; hibrit kullanım ön plana çıkmıştır.

shuffle Dropout Nasıl Çalışır?

Her eğitim adımında p olasılığıyla rastgele seçilen nöronlar sıfırlanır ve o adım boyunca hesaplamaya dahil edilmez. Geriye kalan nöronlar, kayıp hesaplanır, gradyanlar geri yayılır ve ağırlıklar güncellenir. Bir sonraki adımda farklı bir nöron kümesi seçilir. Bu sayede ağ, herhangi bir nöronun yokluğunda bile doğru tahmini üretmeyi öğrenir; nöronlar arasındaki ko-adaptasyon (co-adaptation) kırılır. Test aşamasında hiç dropout uygulanmaz; tüm nöronlar aktiftir. Ağırlıklar eğitimde seyrelmeden kaynaklanacak büyüklük farkını telafi etmek için (1−p) çarpanıyla ölçeklenir. Modern derin öğrenme çerçevelerinin büyük çoğunluğu "inverted dropout" uygular: eğitim sırasında hayatta kalan nöronların çıkışları 1/(1−p) ile çarpılır; test aşamasında ekstra işleme gerek kalmaz.

Dropout Varyantları

shuffle Standart Dropout

Tam bağlı katmanlarda nöronları bağımsız olarak rastgele sıfırlar. En yaygın kullanılan formdur.

grid_on Spatial Dropout

CNN'lerde özellik haritalarının tüm kanalını sıfırlar. Uzamsal bağıntıyı bozarak evrişimsel katmanlarda daha etkilidir.

assessment MC Dropout

Test aşamasında da dropout açık tutularak birden fazla tahmin alınır; Bayesian belirsizlik tahmini için kullanılır.

auto_fix_high AlphaDropout

SELU aktivasyon fonksiyonuyla uyumlu; sıfırlama yerine negatif doygunluk değeri atar, self-normalizing özelliğini korur.

balance Avantajlar ve Kısıtlamalar

  • check_circle Overfitting azaltımı: Modelin eğitim verisini ezberlemesini engeller; test ve gerçek dünya performansı arasındaki uçurumu kapatır.
  • check_circle Ensemble etkisi: Binlerce farklı alt ağı dolaylı olarak eğitip birleştirmek yerine tek bir model eğitmek, hesaplama verimliliğini korur.
  • check_circle Kolay uygulama: PyTorch'ta torch.nn.Dropout(p=0.5), TensorFlow/Keras'ta layers.Dropout(0.5) ile tek satırda eklenir.
  • check_circle Daha yavaş yakınsama: Her adımda rastgele farklı bir ağ eğitildiğinden gradient güncellemeleri daha gürültülüdür; daha fazla epoch gerekebilir.
  • check_circle CNN'lerde sınırlı etki: Evrişimsel katmanlardaki uzamsal bağıntılar nedeniyle standart dropout yetersiz kalabilir; Spatial Dropout tercih edilmelidir.

quiz Sıkça Sorulan Sorular

  • check_circle Dropout oranını nasıl seçmeli?: Tam bağlı katmanlar için 0,3–0,5 iyi bir başlangıç noktasıdır. Küçük veri setlerinde 0,5'e yakın, büyük veri setlerinde 0,2'ye yakın değerler daha işlevseldir. Doğrulama seti kaybı izlenerek hiperparametre araması yapılması önerilir.
  • check_circle Batch Normalization varken Dropout kullanmalı mıyım?: Batch Normalization ve Dropout birlikte kullanıldığında bazen birbirini olumsuz etkileyebilir. Araştırmalar, BN sonrasında Dropout uygulamanın dikkat gerektirdiğini gösterir. Transformerlar gibi modern mimarilerde genellikle yalnızca BN veya Layer Normalization tercih edilir.
  • check_circle Dropout neden sadece eğitimde aktif?: Test aşamasında deterministik ve tutarlı tahminler gerekir. Dropout'u test sırasında da açık bırakmak (MC Dropout) yalnızca Bayesian belirsizlik kestirimi gibi özel amaçlarla yapılır.
  • check_circle Recurrent ağlarda (LSTM/RNN) Dropout nasıl uygulanır?: Standart dropout recurrent bağlantılara uygulandığında bilgi kaybı yaşanır. Variational Dropout (Gal & Ghahramani, 2016), her zaman adımında aynı maske kullanarak bu sorunu çözer ve LSTM'lerde yaygın olarak tercih edilir.