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 şekilde modelin belirli nöronlara bağımlılığını kıran bir düzenlileştirme tekniğidir. 2014 yılında Srivastava ve arkadaşları tarafından önerilen bu yöntem, derin öğrenme tarihinin en etkili yeniliklerinden biri olarak kabul görmektedir. Temel fikir, eğitim sırasında ağı sürekli değişen rastgele alt ağlar üzerinde çalıştırarak her nöronun diğer nöronların varlığına ya da yokluğuna göre hareket etmeyi öğrenmesini önlemektir. Bu mekanizma, ko-adaptasyonu (co-adaptation) kırar ve her nöronu bağımsız olarak yararlı özellikler çıkarmaya zorlar. Ağ böylece tek bir nörona veya nöron grubuna aşırı güvenmek yerine dağıtık temsiller öğrenir. Pratikte dropout oranı p=0.5, tam bağlı katmanlar için standart başlangıç noktası olarak yaygın biçimde kullanılmaktadır. Ancak giriş katmanlarında p=0.1-0.2, konvolüsyonel katmanlarda daha düşük değerler tercih edilir; bu katmanlarda zaten az parametre bulunduğundan çok yüksek dropout aşırı bilgi kaybına yol açabilir. Batch normalization ile birlikte kullanıldığında dikkatli olmak gerekir; ikisi arasındaki etkileşim bazen istenmeyen davranışlara neden olabilmektedir. Test aşamasında dropout tamamen devre dışı bırakılır; tüm nöronlar aktif kalır. Ağırlıklar eğitim sırasında kullanılan seyrelmeyi telafi etmek için (1−p) çarpanıyla ölçeklenir. Modern çerçeveler "inverted dropout" uygular: eğitim sırasında kalan nöronların çıkışları 1/(1−p) ile çarpılır, böylece test aşamasında ekstra işlem gerekmez. PyTorch'ta torch.nn.Dropout(p=0.5) ve Keras'ta layers.Dropout(0.5) ile tek satırda eklenir. Dropout ayrıca Bayesian derin öğrenmeyle de ilişkilendirilmektedir. Test zamanında da dropout açık tutularak birden fazla tahmin yapılırsa (MC Dropout), bu tahminlerin dağılımı modelin belirsizliğine dair istatistiksel bilgi üretir. Özellikle tıbbi teşhis ve otonom araç gibi güvenlik açısından kritik uygulamalarda bu özellik son derece değerlidir. Spatial Dropout ise konvolüsyonel ağlarda tüm özellik haritası kanallarını sıfırlayarak uzamsal bağıntıları daha etkili biçimde kırmaktadı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.

Dropout ve Modern Transformer Mimarileri

  • check_circle Attention Dropout: Softmax çıktısındaki dikkat ağırlıklarına dropout uygulanır; Transformer'da hem dikkat hem ileri besleme katmanlarında ayrı dropout oranları kullanılabilir.
  • check_circle Residual Dropout: Artık bağlantı (residual connection) eklenmeden önce alt katman çıktısına dropout uygulanır; GPT-2 ve BERT bu yaklaşımı kullanır.
  • check_circle LLM'lerde Azalan Kullanım: Çok büyük dil modelleri (GPT-3, LLaMA, Gemma) eğitimde ya çok düşük dropout oranı (0.0-0.1) ya da hiç dropout kullanmaz; geniş veri ve model boyutu düzenleme etkisini üstlenir.
  • check_circle Dropout ile Layer Normalization Etkileşimi: Pre-LN mimarilerinde (çoğu modern Transformer) Layer Norm katmandan önce uygulanır; bu konumda dropout daha kararlı eğitim sağlar. Post-LN'de dikkatli hiperparametre ayarı gerekir.

Dropout'a Alternatif Düzenleme Yöntemleri

  • check_circle L1/L2 Düzenleme: Kayıp fonksiyonuna ağırlıkların norm cezası eklenir; L1 seyrek ağırlıklar üretirken L2 küçük ağırlıklara yönlendirir. Daha yorumlanabilir ancak dropout kadar esnek değil.
  • check_circle Batch/Layer Normalization: Aktivasyonları normalize ederek iç kovaryat kaymasını azaltır; modern ağlarda dropout'un yerini büyük ölçüde almıştır.
  • check_circle Erken Durdurma (Early Stopping): Doğrulama kaybı iyileşmeyi durdurduğunda eğitim kesilir; aşırı öğrenmenin basit ve etkili çözümüdür.
  • check_circle Veri Artırma (Data Augmentation): Görüntü döndürme/kırpma, metin parafrazı gibi dönüşümlerle eğitim veri çeşitliliği artırılır; modelin gerçek dünya değişkenliğine maruz kalmasını sağlar ve overfittingi sınırlar.

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.
  • check_circle Transformer modellerinde dropout hâlâ kullanılıyor mu? Küçük ve orta boyutlu Transformerlarda evet. Ancak GPT-3, LLaMA ve Gemma gibi büyük modellerde çok düşük oran (0.0) veya hiç dropout kullanılmaz; veri büyüklüğü ve model kapasitesi düzenleme rolünü üstlenir.