Derin Öğrenme (Yapay Sinir Ağları-2)

Bu bölümde birinci bölümde anlatılan “Temel Neural Network” dersine devam edilmektedir. İkinci bölümde YSA’lar kullanılarak veri kümelerinin birbirinden nasıl ayrılacağı ile ilgili örnek adım adım yapılacaktır. Aşağıdaki şekilde bir veri kümesinin 2B’lu uzaya taşınmış hali gösterilmiştir. Burada yapılmak istenen bu iki farklı veri kümesinin birbirinden ayrılması işlemidir.

Bu basit olarak iki veri kümesine en uygun uzaklıkta bir doğru geçirilerek yapılabilinir. Önemli olan bu doğrunun hangi noktadan geçeceğini belirleyebilmektir. Örneğin aşağıdaki verilen şekildeki gibi doğruyu geçirirsek kırmızı veri kümesinde olması gerekecek veriler yeşil olarak tahmin edilecektir. 

Doğrunun pozisyonu aşağıdaki şekildeki gibi olduğunda ise yeşil olan veriler kırmızı olarak tahmin edilmiş olunacak. Buda istenilen bir durum değildir.

Aslında sistemden yapmasını istediğimiz durum aşağıdaki şekilde gösterildiği gibi bir doğru çizmesidir.

Yapılan tüm bu işlemler insan gözü ile çok kolay bir şekilde yapılabilinir iken bunu bilgisayara yaptırmak büyük bir problemdir. Bunun için çeşitli yöntemler geliştirilmiş ve en önemlilerinden biri SVM dir. Bir diğer yöntem ise yapay sinir ağlarıdır. Yukarıdaki tüm bu işlemleri yani en uygun doğru denklemini ayarlayan YSA modelinin nasıl çalıştığı adım adım anlatılacaktır. Yani YSA ile “y=A.x” denklemindeki uygun A değerini ayarlamak istiyoruz. Yapılmak istenilen örnekte böceklerin sınıflandırılması istenmektedir. Verilerde sınıfların özellikleri olarak böceklerin genişlik ve uzunluklarına bilgileri verilmiştir. Örnek veri kümesi aşağıdaki tabloda verilmiştir.

 Örnek Uzunluk Genişlik Böcek
1 1.0 3.0 uğurböceği
2 3.0 1.0 tırtıl

 

Verilen bu örnek 2B’lu örnek uzaya taşındığında aşağıdaki şekilde görünecektir.

Bu verileri uygun bir şekilde ayıracak olan doğrumuz (y=A.x –> y değeri uzunluk, x değeri genişlik) ayarlamak için en uygun A parametresi seçilmelidir. Uygun A değerini bulmak için YSA modeli, sistemi eğitir ve hatalar ile uygun A değerini öğrenmesi sağlanır. Sistem başlangıcında A’yı rastgele 0.25 değeri ile başlattığımızda yeni fonksiyonumuz y=0.25x olacaktır. Buna göre elde edilecek doğrunun konumu aşağıdaki şekildeki gibi olacaktır. 

  • 1. örnekte y=1.0 iken x=3.0 için sistem çıktısı y_new=0.25*3.0  yani y_new=0.75sistemden çıkmasını beklediğimiz değeri de 1.1 olarak kabul edelim. Buna göre sistemin hatası; (E– Hata değeri)
    • E=istenen_hedef ­ – sistem_çıktısı
    • E=1.1 – 0.75
    • E=0.35

 

Elde edilen bu değer sistem için yanlış bir çıktı alındığını gösterir. Buda bize seçilen ilk A değerin yanlış olduğunu göstermektedir. Doğru sonucu yakalayabilmek için yeni A değeri seçilmelidir. Bu işlemi rastgele değil belli bir artış ya da azalış değerine göre yapılmaktadır. 

t = (A + ΔA)x

  • t  → Hedef değer için doğru istenen değeri
  • A → Doğru sabiti (ayarlanmak istenen değer)
  • ΔA → A’nın değişim mikatarı
  • x → sistem girişi

Buna göre hata formülümüz;

  • E=istenen_hedef ­ – sistem_çıktısı
  • E =t –­ y = (A + ΔA)x ­ Ax 
  • E = t ­–­ y = Ax + (ΔA)x ­ Ax   
  • E = (ΔA)x 
  • ΔA = E / x 

Yukarda gösterilen formülde A değişkenini değiştireceğimiz değer eldedilen sistem çıkış hatasının giriş değerine bölünmesi ile elde edilir. Tüm bu işlemler sonucunda elde ettiğimiz E=0.35’lik hataya ve x=3.0 giriş değerine göre A=0.25 değer ΔA=0.35/3.0 → ΔA=0.1167  olarak hesaplanır. Bu değer kullanılarak A değeri güncellenir ve yeni A değeri;

  • A_new = A_old + ΔA
  • A_new = 0.25 + 0.1167
  • A_new = 0.3667
  • y = A_new*x  → y=0.3667*x (sistemin yeni formülü)

Bu işlem hedef değerine ulaşıncaya kadar devam eder.

Ayrıca A değerini ayarlar iken daha hassas bir ayarlama yapmak için “learning rate” olarak bilinen “öğrenme adımı” da eklenebilinir. Yeni eklene bu parametre ile yeni formül;

  • ΔA = L*(E / x)

Not: Yazıdaki tüm resim, tablo ve denklemler [1] kaynağından alınmıştır.

 

Derin Öğrenme (Yapay Sinir Ağları-1)                                                                                  Derin Öğrenme (Yapay Sinir Ağları-3)

KAYNAKLAR:

[1] A Gentle Introduction to Neural Networks with Python