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

Derin öğrenme konusu son 5 yılda hızla gelişen bir makine öğrenmesi yöntemidir. Derin öğrenme aslında bir yapay sinir ağıdır. Klasik yapay sinir ağlarında orta katman sayısı bir ya da iki olur iken derin öğrenme alanlarında bu sayı minimum üç ve bu sayı sistemi tasarlayan kişiye ve probleme göre arttırılabilmektedir.  Büyük veri laboratuvarı olarak  eğitimlere “temel neural network” dersi ile başlanılmıştır. 

YSA’lar ile ilgili bölüme geçmeden önce insan makine arasındaki etkileşimin nasıl geliştiğine değinmek istiyorum. Bunun için insan beyninin çalışma şeklini düşünelim. İnsan beyni dünyayı anlamaya çalışırken sorunlar ve var olan sorunlara cevap aramaktadır. Makinelerde bu şekilde çalışmaktadır. Makineye bir problem veriyoruz ve makinenin bu problemi çözmesini bekliyoruz. Örneğin bir tahmin makinesini düşünelim. Bu makineden, sisteme girilen soruların cevabını tahmin etmesi beklenmektedir.

Örnek bir tahmin makine modeli

Aynı şekilde bilgisayarlarında belli problemlere çözüm getimesi beklenmektedir. 

Örnek bir bilgisayar modeli

Örneğin bilgisayarda bir çarpma işlemi yaptırıldığında aşağıda görseldeki gibi bir yapı oluşur. Giriş değerlerimiz “3, 4, x” verildiğinde işlemci üzerinde hesaplama yapılarak sistem çıktısı olarak 12 vermesi sağlanır. 

Artık bu işlemleri makinelerin insan gibi otomatik veya sistemi öğrenerek yapması beklenmektedir. Bunun için hem donanımsal gelişmeler hem de yazılımsal gelişmeler ile bu yapının oluşması sağlanmıştır. Donanımsal gelişme olarak GPU’ları gösterebilir iken yazılımsal gelişme olarakda Derin Öğrenme modeli gösterilebilinir. 

Derin öğrenme yöntemi temeli Neural Network (NN — Yapay Sinir Ağları (YSA))’lere olduğundan ilk dersimiz “Temel Neural Network” tür. YSA modelleri ile yapılmak istenen, makinelerin bir insan beyni gibi problemlere çözüm getirmesidir. Bunun için YSA modellerin bir küçük çocuk gibi bulunduğu problem dünyasını tanıyacak eğitimler verilmektedir. Yani bir YSA modelinden verilen giriş ve çıkış değerlerine göre sistemi öğrenmesi beklenmektedir. Örneğin, km’yi mil’e dönüştürebilen bir YSA modelinde adım adım sistem nasıl eğitildiğini gösterelim. Örnek YSA modelimiz aşağıda verilmiştir. Aşağıda verilen görsel ile sistem km’yi mil’e dönüştüren formülü “mil=km*c” öğrenecektir. Verilen formüldeki tek sabitimiz c ve biz YSA modelinden en uygun c değerinin ne olması gerektiğini öğrenmesini istiyoruz. Çünkü sistemin giriş ve çıkış değerleri değiştirilemediğinden tek ayarlanacak parametre c’dir. 

Sistemin örnek tablosu aşağıda verilmiştir.

c sabiti başlangıç olarak 0.5 olarak seçilmiş ve bu değere göre sistemin çıkışı ayarlanacaktır. c=0.5 değerine göre sistem çıkışı 50 mil olarak hesaplanmıştır fakat bu sistemin beklediği bir çıktı değildir. 

Bu değeri ayarlamak için c sabit değerini yeniden belirlemek gerekmektedir. Bunun için beklenen çıkış değerinden, sistemden elde edilen değer çıkartılarak hata oranı hesaplanmaktadır. Yapılan işlemlerin görseli aşağıda verilmiştir.

  • Hata= Gerçek değer- Hesaplanan değer
  • Hata=62.137-50
  • Hata=12.137

Hata oranımız çok yüksek olduğundan c için 0.5 küçük bir değer olduğu gözlemlenmiştir. Yeni c değerini 0.6 olarak güncelleyip tekrar hesaplama yapıldığında sistem çıktısı 60 olur. Elde edilen çıktıya göre hata oranımız yeniden hesaplandığında;

  • Hata= Gerçek değer- Hesaplanan değer
  • Hata=62.137-60
  • Hata=2.137

Yeni hata oranımız 2.137 olarak hesaplanmış olunur. Hata değerimiz hala yüksek, bu nedenle c değeri 0.7 olarak yeniden güncellendiğinde yeni sistem çıkışımız 70 olur. Yapılan işlemin görseli aşağıda verilmiştir.

  • Hata= Gerçek değer- Hesaplanan değer
  • Hata=62.13770
  • Hata=-7.863

Elde edilen hata oranı incelendiğinde bu kezde istenilenden daha yüksek bir değer elde edildiği gözlemlenmiştir. Bu nedenle yeni c değerlerimiz elde edilen bilgilere göre 0.6 ile 0.7 aralığında olmalı ve bu kez gerçek değerden çok fazla uzaklaşmamak için c’yi büyütme adımlarını küçültüyoruz. Yeni c adımımız 0.61 olarak güncellenir ve buna göre sistem çıktısı 61 olur.

Hata oranı 1.137 olur. c, 6.2 seçildiğinde sistem çıktısı 62 elde edilir. Buna göre yeni hata oranımız 0.137 olur. Bu işlem sistem istenilen değere göre en uygun c değeri bulunana kadar devam eder. 

Yukarda yapılan işleri özetlersek;

  1. Hata kullanılarak c liner katsayısı düzenlendi.
  2. Hata oranı düştükçe c sabit değerinin büyüme adımları düştü.
  3. Hata kullanılarak parametre değerleri düzenlendi.
  4. Makine daha iyi sonuçlar üretecek şekilde eğitildi.

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

KAYNAKLAR:

[1] A Gentle Introduction to Neural Networks with Python

 

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