Makine öğrenmesi veya yapay sinir ağı modellerinden her seferinde istediğimiz performansı tek denemede elde edemeyebiliriz. Çoğu zaman eğitimden sonra sonuçları analiz edip sorunlara göre iyileştirme yapmak gerekir. Modelimiz beklenen başarıyı göstermiyorsa, genellikle karşılaştığımız durum ya aşırı öğrenme (overfitting) ya da az öğrenme (underfitting) olur. Bu yazıda bu iki sorunun ne olduğunu ve nasıl çözülebileceğini ele alacağız.
Aşırı Öğrenme ve Az Öğrenme Nedir?
Öncelikle bu iki sorunun kısa tanımını yapalım. Modelleri eğitirken veriyi eğitim ve test kümelerine ayırırız. Aşırı öğrenmede model, eğitim kümesinde çok iyi performans gösterirken test kümesinde belirgin biçimde düşer; yani öğrendiğini genelleyemez. Az öğrenmede ise model hem eğitim hem test kümesinde zayıf performans verir. Bunu, sınava ezberle hazırlanıp farklı soru tipinde zorlanmak (overfitting) ve hiç çalışmadan sınava girmek (underfitting) örnekleriyle düşünebiliriz.
Bu iki sorunu görsel olarak kafamızda daha iyi oturtabilmek için bir örnek inceleyelim. Aşağıdaki resimde gördüğümüz gibi iki adet sınıfımız olsun ve bu iki adet sınıfın iki tane bağımsız değişkeni olsun. İki boyutta sınıflarımız için örnekler şekildeki gibi dağılsın.

İşin yapay sinir ağları kısmına geçmeden önce klasik bir makine öğrenmesi algoritması olan lojistik regresyon ile sınıflandırma yapıp farklı durumlarda nasıl bir model elde edeceğimizi görselleştirelim. Eğer az öğrenme durumu ile karşı karşıya isek aşağıdaki gibi bir model elde edebiliriz.

Modelimiz, görüldüğü gibi eğitim kümesinde sınıflandırmada yeterince başarılı değildir. Özellikle sınıf 1’e ait örnekleri ayırmakta zorlanır. Örnek olarak eğitim ve test doğruluk (accuracy) değerleri sırasıyla %61.5 ve %59.8 olabilir.
Eğer karşılaştığımız sorun aşırı öğrenme ise aşağıdaki gibi bir model elde etme şansımız çok yüksek. Burada modelimiz çok keskin dönüşler yaparak eğitim kümesini çok iyi bir şekilde öğreniyor fakat test verilerine geçtiğimizde düzgün bir şekilde sınıflandırma yapamayacaktır. Doğruluk değerlerine örnek olarak resimde yazan değerler verilebilir.

Elde etmek istediğimiz ideal model aşağıdaki gibidir. Bu modelimiz eğitim kümesinden öğrendiği bilgileri iyi bir şekilde genelleyebilecektir ve sonuç olarak hem eğitim hem de test kümesinde başarılı bir performans ortaya koyacaktır.

Çözüm Yolları
İki sorunun ne olduğuna değindikten sonra işin yapay sinir ağları kısmında çözüm yollarına geçebiliriz. Her ne kadar yapay sinir ağları için konuşuyor olsak da değineceğimiz çoğu konu klasik makine öğrenme algoritmaları için de geçerlidir.
Az Öğrenme İçin Çözüm Yolları
Az öğrenme, aşırı öğrenmeye göre önüne geçilmesi daha kolay bir sorundur. Bu sorunu gidermek için modelimizin kapasitesini artırmamız gerekir. Modelimizin kapasitesini modelin yapısında değişikliklere giderek artırabiliriz. Örnek olarak katmanlardaki nöron sayılarını artırabiliriz veya katman sayısını artırabiliriz. Bu sayede modelimiz eğitim kümesindeki verileri daha iyi bir şekilde öğrenecektir, fakat abarttığımız takdirde aşırı öğrenme ile karşı karşıya kalabiliriz.
Aşırı Öğrenme İçin Çözüm Yolları
Bu probleme iki şekilde yaklaşabiliriz:
- Modeli daha fazla veri üzerinde eğitmek
- Modelin karmaşıklığını azaltmak
Modelimizin aşırı öğrenme sorunuyla karşılaşmasının sebebi veri seti üzerinde böyle bir kapasitesinin olmasından dolayıdır. Bu durumda ya veri setimizin kompleksliğini artırmalıyız ki bunu daha fazla veri toplayarak veya veri çoğaltma(data augmentation) ile başarabiliriz ya da modelimizin kompleksliğini azaltmalıyız. Genel olarak bu yöntemlerin hepsine regülarizasyon(regularization) teknikleri denir. Bu tekniklere bir göz atalım.
Veri Çoğaltma(Data Augmentation)
Daha fazla veri toplama işlemi her zaman yapılması kolay bir işlem değildir, fakat resim sınıflandırma veya nesne tespiti gibi bilgisayarla görme(computer vision) problemleri için oluşturulmuş veri setlerinde belirli yöntemler ile veri setlerimizi genişletebiliriz. Örnek olarak resimlerimizi yatay çevirme, tepe taklak çevirme, parlaklık azaltma veya artırma, resmi rastgele kesme, resimleri farklı açlarda döndürme, gürültü ekleme gibi işlemler üzerinden geçirerek yeni hallerini veri setimize ekleyerek daha geniş bir veri setine sahip olabiliriz.



L2 Regülarizasyonu
Bu regülarizasyonun amacı, yapay sinir ağı parametrelerinin (ağırlıkların) değerini kontrol altında tutmaktır. Çok yüksek ağırlıklar dengesiz bir modelin işareti olabilir. Bu durum, girdideki küçük değişimlerin çıktıda aşırı etkiler üretmesine yol açar. Ağırlıkları dengelemek için yitim fonksiyonuna ceza terimi ekleyebiliriz. Örneğin ortalama kare hata fonksiyonunda aşağıdaki gibi bir değişiklik yapılır.

Burada yitim fonksiyonumuza eklediğimiz terimde bütün ağırlıklarımızın karesini toplayıp λ/2m değerine bölüyoruz. Bu sayede eğer ağırlıklarımızın değerleri çok büyük olursa yitim değerimiz de artacaktır. O zaman modelin optimizasyonu sırasında devamlı ağırlık değerlerimiz düşecektir çünkü yüksek ağırlık değerleri yitim fonksiyonumuzun artmasına sebep olacaktır.
L1 Regülarizasyonu
L2 regülarizasyonundan tek farkı ağırlıkların karesi yerine ağırlıkların mutlak değerleri toplanır. Bu regülarizasyonda ağırlık değerleri 0.0 değerini almaya daha yatkındır. Genel olarak L2 regülarizasyonu daha çok tercih edilir.

Bırakma(Dropout)
Bu teknikte modelimizin eğitimi sırasında her bir yinelemede(iterasyon) verilen olasılık değerine göre her bir katmandaki nöronlar rastgele bir şekilde görmezden gelinir. Bu sayede bazı nöronları elimine ederek nöron sayımızı azaltırız ve daha basit bir model elde ederiz. Başka bir açıdan bakacak olursak da her bir yinelemede farklı farklı nöronlar elendiği için bütün nöronların ağırlık değerleri birbirine yakın bir şekilde dağılıp ağırlık değerleri arasında dengesizlikler oluşmayacaktır. Aşağıdaki örnekte farklı yinelemelerde bırakma işleminin farklı bir sonuçlar vereceğini inceleyebilirsiniz.

Erken Durdurma(Early Stopping)
Modelimizi eğitirken eğitim ve test kümesindeki yitim değerlerinin grafiğini çizip anlık olarak her bir yineleme için gözlemlemek bizim için önemlidir. Bu durumda test kümesinin yitim değerinin artmaya başladığı nokta bizim aşırı öğrenme ile karşı karşıya kaldığımız durumdur. Bu noktada eğitimi sonlandırarak aşırı öğrenmenin önüne geçebiliriz. Aşağıdaki grafiği incelediğimizde 50. yinelemede eğitimi durdurup olası bir aşırı öğrenme sorununu önleyebiliriz.

Pratik Tanı Akışı
Eğitim sırasında sorunun overfitting mi underfitting mi olduğunu hızlıca anlamak için aşağıdaki basit akış kullanılabilir:
- Eğitim skoru yüksek, doğrulama skoru düşükse: overfitting olasılığı yüksektir.
- Eğitim ve doğrulama skoru birlikte düşükse: underfitting olasılığı yüksektir.
- İki skor da yüksek ve birbirine yakınsa: model genellemesi genellikle sağlıklıdır.
Bu değerlendirmeyi tek metrikle değil; mümkünse accuracy yanında F1, precision ve recall gibi metriklerle birlikte yapmak daha güvenilir sonuç verir. Daha detaylı bir kaynağa göz atmak isterseniz bu bağlantıyı ziyaret edebilirsiniz.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.

