Dropout: sinir ağı eğitiminde rastgele birimleri kapatmak neden işe yarar?
Dropout'un eğitim ve test sırasında nasıl davrandığını, neden aşırı öğrenmeyi azalttığını ve dropout oranını seçerken neye bakacağınızı öğrenirsiniz.
Bir bakışta
- Dropout, eğitim sırasında birimleri rastgele devre dışı bırakır. Her adımda ağın farklı bir seyreltilmiş hali eğitilir.
- Birimlerin birbirine aşırı yaslanması önlenir. Orijinal makalenin ifadesiyle birimlerin birlikte uyum sağlaması (co-adaptation) engellenir.
- Test sırasında ağın tamamı kullanılır. Ağırlıklar, bırakma oranına göre ölçeklenir.
- Oran sabit bir değer değildir. Model boyutuna, veri miktarına ve doğrulama sonucuna göre denenir.
Dropout nedir?
Dropout, sinir ağlarında aşırı öğrenmeyi (overfitting) azaltmak için kullanılan bir düzenlileştirme tekniğidir. Eğitim sırasında her adımda ağdaki birimlerin (nöronların) bir kısmı rastgele devre dışı bırakılır; bu birimler ve bağlantıları o adımda hesaba katılmaz. Teknik, Srivastava ve arkadaşlarının JMLR'de yayımlanan makalesinde ayrıntılı anlatılmıştır.
Makaleye göre çok parametreli büyük ağlar güçlüdür ama aşırı öğrenmeye yatkındır; dropout bu sorunu hafifletmek için önerilmiştir.
Nasıl çalışır?
Her eğitim adımında rastgele seçilmiş birimler kapatılır, yani ağın seyreltilmiş bir hali eğitilir. Bir sonraki adımda başka birimler kapanır. Böylece ağ, tek bir birime ya da birim grubuna güvenemez; her birim, farklı arkadaş kümeleriyle çalışmak zorunda kalır.
Makale bunu "birimlerin birlikte aşırı uyum sağlamasını önleme" olarak anlatır. Sonuçta ağ daha sağlam, daha genel özellikler öğrenir.
Rastgele kapanma, ağı tek bir birime bağımlı olmaktan kurtarır
Dropout'un eğitime etkisi
- Her adımda rastgele birimler kapanırAğın seyreltilmiş bir hali eğitilir.
- Birimler birbirine yaslanamazHer birim farklı bir bağlamda çalışmak zorunda kalır.
- Daha genel öğrenmeAşırı öğrenme eğilimi azalır.
Eğitim ve test arasındaki fark
Dropout yalnız eğitim sırasında çalışır. Test ya da kullanım aşamasında ağın tamamı açıktır. Ancak eğitimde birimlerin bir kısmı kapalı olduğundan, çıktıların ölçeği tutarlı kalmalıdır. Makaleye göre test zamanında, seyreltilmiş ağların tahminlerini tek tek ortalamak yavaş olduğu için tek bir tam ağ kullanılır ve ağırlıklar ölçeklenir.
Uygulamada çoğu çerçeve bu ölçeklemeyi kendisi yapar. Dikkat edilecek nokta, değerlendirme moduna geçmeyi unutmamaktır; aksi halde test sırasında da birimler rastgele kapanır ve sonuçlar tutarsız çıkar.
Dropout oranı nasıl seçilir?
Dropout oranı, her adımda kapatılan birim payını belirler. Sabit bir doğru değer yoktur; oran modele ve veriye göre doğrulama verisi üzerinde denenir. Oran çok düşükse aşırı öğrenme sürer; çok yüksekse ağ yeterince öğrenemez ve eğitim performansı da düşer.
Yol haritası şöyledir: önce dropout'suz bir temel model eğitilir ve eğitim ile doğrulama kaybının ayrışıp ayrışmadığına bakılır. Ayrışma varsa küçük bir oranla başlanır, sonuç izlenir, sonra artırılır. Büyük ve geniş katmanlarda yüksek oran daha tolere edilirken, küçük ağlarda düşük oran gerekir.
Oran, eğitim ve doğrulama arasındaki açığa göre ayarlanır
Dropout oranı kararı
- Eğitim çok iyi, doğrulama kötüDropout oranını artırAşırı öğrenme belirtisidir.
- İkisi de kötüOranı düşür ya da kaldırModel yetersiz kalıyor olabilir.
- İkisi birbirine yakın ve iyiOranı koruGereksiz değişiklik yapma.
Kodda nasıl görünür?
Çerçevelerde dropout genellikle bir katman olarak eklenir:
model.add(Dense(birim_sayisi, activation="relu")) model.add(Dropout(oran))
Burada oran, kapatılacak birim payını verir. Katman yalnız eğitimde etkin olur; tahmin sırasında otomatik devre dışı kalır. Katmanın nereye konulacağı da denenir: genellikle büyük, yoğun (dense) katmanlardan sonra kullanılır.
Düzenlileştirmenin diğer biçimlerinden farkı
Lasso ve Ridge gibi ceza tabanlı yöntemler ağırlıkların büyümesini sınırlar. Dropout ise ağın yapısını eğitim sırasında rastgele değiştirir. İkisi aynı amaca, aşırı öğrenmeyi azaltmaya hizmet eder ama farklı yollarla; bu yüzden birlikte de kullanılabilir.
Dropout her sorunun çözümü değildir. Yeterli veri, daha basit bir model ya da erken durdurma gibi yöntemler bazı durumlarda daha etkilidir.
Veri bilimi programlarında yeri
Dropout, derin öğrenme modeli eğitirken karşılaşılan temel araçlardandır. Veri Bilimci Programı (Yapay Zeka Odaklı) derin öğrenmede pratik uygulamaları ele alır. Data Science Uzmanlığı Sertifika Programı derin öğrenme ve NLP temellerini içerir.
İlgili Mindset programı
Veri Bilimci Programı (Yapay Zeka Odaklı)
Sık sorulan sorular
Dropout test sırasında da çalışır mı?
Hayır. Dropout yalnız eğitimde birimleri rastgele kapatır. Test ve kullanım aşamasında ağın tamamı kullanılır; çıktı ölçeği ise ağırlıkların ölçeklenmesiyle ya da çerçevenin otomatik ayarıyla dengelenir. Modeli değerlendirme moduna almayı unutmamak gerekir.
Dropout oranı ne olmalı?
Sabit bir değer yoktur. Model boyutuna, veri miktarına ve doğrulama sonucuna göre denenir. Küçük bir oranla başlayıp doğrulama kaybına bakarak artırmak güvenli yaklaşımdır. Çok yüksek oran ağın öğrenmesini de bozabilir.
Dropout her ağ türünde işe yarar mı?
Her zaman değil. Makale büyük, çok parametreli ağlarda aşırı öğrenmeyi azalttığını gösterir. Ancak model küçükse ya da zaten yetersiz öğreniyorsa dropout durumu kötüleştirebilir. Her zaman doğrulama verisiyle etkisi sınanmalıdır. Karar, her zaman ayrı bir doğrulama verisinde yapılan denemeye dayanmalıdır.
Dropout ile ceza tabanlı düzenlileştirme birlikte kullanılabilir mi?
Evet. İkisi farklı mekanizmalarla çalışır: biri ağırlıkları cezalandırır, diğeri eğitimde birimleri rastgele kapatır. Birlikte denendiğinde etkisi doğrulama verisinde izlenmeli; her ikisini de eklemek otomatik olarak daha iyi sonuç vermez. Eklenen her teknik, sonuç aynı doğrulama verisinde ölçülerek tutulur ya da bırakılır.