Derin Öğrenmeye Giriş

Derin Öğrenmeye Neden İhtiyaç Duyuldu?

Çiğdem Kılıç
7 min readMar 1, 2023

Yapay Zeka, akademik bir disiplin olarak 1956'da kuruldu. Amacı bilgisayarların sadece insanın yapabileceği görevler olarak kabul edilen işleri yerine getirmesini sağlamaktı. Zamanla bazı problemleri yapay zeka için çok zor olarak nitelendirmeye başladılar. 1980'lerde daha teknik bir terim ortaya çıktı ve daha yaygın kullanılmaya başlandı: Makine Öğrenmesi. İlk araştırmacıların bazı problemleri çok daha zor bulmasının nedeni, bu problemlerin o dönemdeki yapay zeka için kullanılan tekniklere uygun olmamasıdır.

Sabit kodlanmış algoritmalar veya sabit, kural tabanlı sistemler, görüntü tanıma veya metinden anlam çıkarma gibi şeyler için pek iyi çalışmadı. Çözümün sadece insan davranışlarını taklit etmek değil, aynı zamanda insanların nasıl öğrendiğini de taklit etmek olduğu ortaya çıktı.

Yapay zekâ ile görüntü işlemeye yeni bir boyut getirilmiştir. Bu boyutlardan biri de derin öğrenmedir. Derin öğrenme, geleneksel makine öğrenmesi yöntemlerinden (danışmanlı, danışmansız, pekiştirmeliden) farklı olarak kodlanmış kurallar ile öğrenmek yerine; resim, video, ses ve metinlere ait verilerin simgelerinden otomatik olarak öğrenebilmektedir. Derin öğrenme ile objenin tüm ayrıntıları tüm varyasyonları ile işlenip bir model oluşturulmaktadır. Model seçimi, problemin çözümünde etkindir. Probleme uygun olarak belirlenecek model, problemin çözümüne daha fazla katkıda bulunacaktır. Bu model sayesinde görüntü farklı özellikler kazansa da artık tahmin edilebilir ve tespit edilebilir hale gelmektedir.

Derin Öğrenmeyi Makine Öğrenmesinden Ayıran Nedir?

Makine öğrenmesi, belirli bir veri seti üzerinde öğrenme yaparken, öğrenme algoritması tarafından verilen özelliklere (features) dayanır. Bu özellikler veri seti içinde bulunan her bir örnek için manuel olarak tanımlanabilir ve çıkarılabilir. Bu işlem genellikle özellik mühendisliği olarak adlandırılır ve veri seti, özellikler ve çıktılar üzerinden bir makine öğrenme modeli oluşturulur.

Derin öğrenme ise, otomatik özellik çıkarma (feature extraction) ve veri analizi yoluyla karmaşık yapılar oluşturabilen, çok katmanlı yapay sinir ağları kullanır. Derin öğrenme, girdilerin (inputs) yüksek boyutlu olabileceği durumlarda, el ile özelliklerin çıkarılması zor veya imkansız olduğu durumlarda ve özellik çıkarmanın aynı zamanda modelleme sürecinde gerçekleştirilmesi gerektiği durumlarda, özellikle etkilidir.

Derin öğrenme, kendisi verilerin özelliklerini çıkarırken, makine öğrenmesi özellik çıkarmanın insan müdahalesini gerektirdiği bir süreçtir. Bu nedenle, derin öğrenme, makine öğrenmesine göre daha fazla veriye ihtiyaç duyar ve daha uzun süren eğitim süreçleri gerektirir.

Derin Öğrenme Kavramları

Derin öğrenme; nesne tanıma, konuşma tanıma, sketch tanıma, doğal dil işleme gibi alanlarda çok katmanlı yapay sinir ağlarını kullanan bir yapay zeka yöntemidir. “Derin” terimi ise genellikle sinir ağındaki gizli katmanların sayısını ifade eder. Geleneksel sinir ağları sadece 2–3 gizli katman içerirken derin ağlar 150 katmana dahi sahip olabilir.

Nöron:

Sinir ağının temel yapısını oluştur. Katmanlar nöronlardan oluşur. Yeni bir bilgi alındığında bu bilgi işlenir ve çıktıya dönüştürülür.

Ağırlıklar:

Girdi, nörona geldiğinde bir ağırlık ile çarpılır. Rastgele başlatılan bu ağırlıklar, modelin eğitimi süresince güncellenmektedir. Sinir ağı tarafından eğitim sonrasında daha önemli olduğu düşünülen girdilere daha yüksek ağırlık değeri verilmektedir. Bununla birlikte sinir ağı tarafından sıfır ağırlık değeri verilen bir girdinin ya da özelliğinin önemsiz olduğu kanaati oluşabilir. Bir x1 girdisinin w1 ağırlığı ile ilişkilendirildiği varsayıldığında, düğümden geçtikten sonra giriş x1*w1 olarak ifade edilir.

BIAS (Sapma):

Bias değeri, aktivasyon fonksiyonunu sağa veya sola ötelenmesini (shift) sağlar. Giriş sinyallerinin toplamı 0 olduğunda öğrenme gerçekleşmez, Çıkış değerleri hep 1 olan bias nöronları, nöronların giriş sinyallerinin sürekli sıfırdan farklı olmasını sağlar. x1*w1 + bias bu girdi dönüşümünün son doğrusal bileşenidir.

Varyans:

Model eğitim veri setinde iyi performans gösterdiğinde, ancak bir test veri kümesi veya doğrulama veri kümesi gibi, eğitilmemiş bir veri kümesinde iyi performans göstermediğinde ortaya çıkar. Varyans, gerçek değerden tahmin edilen değerin ne kadar dağınık olduğunu söyler.

Aktivasyon Fonksiyonu:

Aktivasyon fonksiyonu, ağırlıklı toplamı hesaplayarak ve buna daha fazla bias ekleyerek bir nöronun aktive edilip edilmeyeceğine karar verir. Aktivasyon fonksiyonunun amacı , bir nöronun çıktısını doğrusallıktan arındırmaktır. Yaygın aktivasyon fonksiyonları; sigmoid,ReLU,Softmax.

Katman(Layer):

Sinir ağları, bir giriş, bir çıktı katmanlarından ve bu iki katmanın arasında olan gizli (hidden) katmanlardan oluşur. Her katman belirli sayıda düğüme (node) sahiptir. Bu düğümler sahip olduğu ağırlıkla modeli oluşturur.

İleri Yayılım(Forward-Propagation):

Girdi verilerin giriş katmanından gizli katmana ordan da çıkış katmanına aktarılması hareketidir. Sadece tek yönlü ve ileri doğru yol almaktadır.

Geri Yayılım (Backpropagation):

Tek bir iterasyon ile elde edilen çıktı için ağın hatası hesaplanabilmektedir. Elde edilen hata değeri, maliyet fonksiyonunun eğimi ile birlikte ağın ağırlıklarının, güncellenebilmesi için ağa geri beslemedir. Sonraki iterasyonlarda hatanın minimize edilmesi için bu ağırlıklar güncellenir. Maliyet fonk. eğimi kullanılarak ağırlıkların güncellenmesi geri yayılım olarak ifade edilir.

Maliyet Fonksiyonu:

Oluşturulan ağdaki amaç, gerçek değerlere en yakın çıktıları tahmin etmeye çalışmasıdır. Ağın doğruluk değeri, maliyet ya da kayıp(loss) fonksiyonu kullanılarak hesaplamaktadır. Ağın çalıştırılmasındaki amaç tahmin doğruluğunun arttırılarak hatanın azaltılması ve maliyet fonksiyonunun minimize edilemsidir.

Kayıp (Loss) Fonksiyonu:

Loss function, belirli bir algoritmanın sağlanan verileri ne kadar iyi modellediğini hesaplar.

Dataset:

Kullandığımız veriler genellikle eğitim verileri ve test verileri olarak ikiye ayrılır. Eğitim seti bilinen bir çıktı içerir ve model daha sonra diğer verilere genelleştirilmek üzere bu veriler üzerinde öğrenir. Modelimizin bu alt küme üzerindeki tahminini test etmek için test veri kümesine (veya alt kümesine) sahibiz.

Validation Dataset:

Validation dataset (doğrulama kümesi), bir makine öğrenimi modelinin eğitiminden önce ve/veya eğitim sırasında kullanılan, modelin performansını değerlendirmek için ayrılmış bir veri kümesidir. Bir makine öğrenimi modeli, eğitim veri kümesindeki örnekler üzerinde eğitilir ve bu veri kümesindeki örnekleri tam olarak hatırlayabilir. Ancak, amacımız modelin yeni verilerde iyi performans göstermesidir. Bu nedenle, eğitim veri kümesinin bir bölümü (validation set), eğitim sırasında modelin performansını ölçmek için ayrılır.

Validation set, modelin aşırı uyuma (overfitting) yapmadığını kontrol etmek için kullanılır. Aşırı uyum, bir modelin eğitim veri kümesinde iyi performans göstermesine rağmen, yeni verilerde kötü performans göstermesidir. Bu nedenle, validation set, modelin gerçek dünya performansını değerlendirmek için çok önemlidir.

Validation set ayrıca, hiperparametre optimizasyonu için kullanılır. Hiperparametreler, modelin performansını etkileyen özelliklerdir ve model eğitiminden önce ayarlanmalıdır. Validation set, hiperparametreleri ayarlamak için kullanılabilir. Örneğin, farklı hiperparametre değerlerinin kullanıldığı bir dizi model eğitildikten sonra, validation set üzerinde performansları karşılaştırılabilir ve en iyi performans gösteren hiperparametreler seçilebilir.

Sonuç olarak, validation set, bir makine öğrenimi modelinin performansını ölçmek, aşırı uyumu kontrol etmek ve hiperparametreleri ayarlamak için kullanılır.

K-Fold Cross Validation:

K-Fold, veri setlerinin eğitim ve test amaçlı olarak bölünmesine yönelik bir yöntemdir. Bu yöntem, veri setini k eşit bölüme ayırarak, her bir bölümü bir kez test verisi olarak kullanır ve diğer bölümleri eğitim verisi olarak kullanır. Bu sayede, veri setini daha iyi anlamaya yardımcı olur ve modelin performansını değerlendirmeyi kolaylaştırır.

Örneğin, bir veri kümesi %80 eğitim ve %20 test verisi olarak bölünebilir. Model, %80'lik eğitim verisi kullanılarak eğitilir ve ardından %20'lik test verisi kullanılarak performansı ölçülür. Ancak, bu tek bir performans ölçümüne dayalı olarak, modelin gerçek dünya performansını yeterince ölçemez. Bu nedenle, cross validation yöntemi, veri kümesinin birden fazla bölüme ayrılması ve modelin her bir bölüm için eğitilmesi ve performansının ölçülmesi işlemini tekrarlayarak daha doğru sonuçlar elde eder.

K-fold cross validation, veri setinin daha az sayıda veriyle eğitim yapmak zorunda kalmadan daha doğru sonuçlar elde etmek için kullanılır. Ayrıca, modelin aşırı uyuma yapması riskini de azaltır.

K-fold cross validation, şu adımları izler:

  1. Veri kümesi K parçaya bölünür.
  2. Her bir parça, sırayla diğer parçalar kullanılarak eğitim verisi olarak kullanılır.
  3. Eğitim verisi kullanılarak, modelin test verisi üzerindeki performansı ölçülür.
  4. Adımlar 2 ve 3, her bir parça için tekrar edilir.
  5. K adet performans ölçümleri ortalamaya alınır ve sonuç olarak modelin performansı elde edilir.

Model:

Makine öğrenmesinde model, belirli bir görevi verilerle kendini eğiterek yapan bir algoritmadır. Tur tur ileri ve geri yayılım yaparak ağırlıklarını ve biasını öğrenme, kendini eğitme amacıyla değiştirir.

Modelimizi eğitim verilerinden elde edilen örüntülere göre oluşturuyoruz. Bu işlem sonucunda iki şeyden biri olabilir; modelimiz aşırı öğrenebilir veya eksik öğrenebilir. Bu durumda modelimiz yeterli öngörüde bulunamayacak ve tahminlerimizde hata oranı yüksek olacaktır.

Overfitting:

Eğitim verisi kullanılarak oluşturulan bir modelin accuary si ile validation verisi kullanılarak oluşturulan modelin doğruluğu arasında çok fark varsa bu durum overfitting olarak adlandırılır. Eğer modelimiz, eğitim için kullandığımız veri setimiz üzerinde gereğinden fazla çalışıp ezber yapmaya başlamışsa ya da eğitim setimiz tek düze ise overfitting olma riski büyük demektir. Eğitim setinde yüksek bir skor aldığımız bu modele, test verimizi gösterdiğimizde muhtemelen çok düşük bir skor elde edeceğiz. Çünkü model eğitim setindeki durumları ezberlemiştir ve test veri setinde bu durumları aramaktadır. En ufak bir değişiklikte ezberlenen durumlar bulunamayacağı için test veri setinde çok kötü tahmin skorları elde edebilirsiniz. Overfitting problemi olan modellerde yüksek varyans, düşük bias durumu görülmektedir.

Underfitting:

Aşırı öğrenmenin aksine, bir model yetersiz öğrenmeye sahipse, modelin eğitim verilerine uymadığı ve bu nedenle verilerdeki trendleri kaçırdığı anlamına gelir. Ayrıca modelin yeni veriler için genelleştirilemediği anlamına da gelir. Underfitting sorunu olan modellerde hem eğitim hem de test veri setinde hata oranı yüksektir. Düşük varyans ve yüksek bias’a sahiptir. Bu modeller eğitim verilerini çok yakından takip etmek yerine, eğitim verilerinden alınan dersleri yok sayar ve girdiler ile çıktılar arasındaki temel ilişkiyi öğrenemez.

EarlyStopping:

Öğrenme sırasında validation loss ile test loss arasındaki fark açılmaya başladığı durumda model ezberliyor (overfitting) ya da gürültüyü öğreniyor (noisy) demektir. Bu durumda validation error artmaya başladığında eğitim durdurulur ve bir önceki adıma geri dönülür. Bir önceki adıma geri dönebilmek için eğitim esnasında her bir öğrenme adımında (epoch) bir önceki adımın verileri saklanmış olmalıdır.

--

--