11 Temmuz 2017 Salı

Sinir Ağları

Merhabalar arkadaşlarım bu yazımda sizlere sinir ağlarından ve yapay sinir ağlarından bahsedeceğim.

Sinir Ağları
Sinir sistemi kısaca, çevreden alınan bilgiye karşılık bir tepki oluşturulmasını sağlayan sistemdir.
Yukarıda bir sinir hücresini(nöron) görmekteyiz.

Örneğin masada duran kalemi elimizle tutup kaldırmak istediğimizde ona dokunuruz ve yeteri kadar sıkarız. Eğer çok fazla sıkarsak kalem zarar görebilir ya da yeteri kadar sıkmazsak da bu sefer kalemi kaldıramayız, elimizden kayar. İşte tam burada sinir ağlarımız görev alır.
Önce kalemi ne kadar sıktığımız bilgisi sinir ağlarımıza gider ve belli bir değere(kalemin elimize uyguladığı basınç) gelene kadarda kaleme uyguladığımız kuvveti arttırırız.
Başka bir örnek verecek olursak odamızda otururken ellerimizde havayı hissetmeyiz ama hareket halindeki bir arabanın camından elimizi çıkardığımızda havayı(rüzgarı) hissedebiliriz. Bu örnekte havanın elimize uyguladığı basıncı hissederiz çünkü basınç istenilen değere ya da fazlasına ulaşmıştır.
Not: Bu örnekteki hissetmemiz için gereken minimum basınç değeri kişiden kişiye göre değişiklik göstermektedir.
Başka bir örnekte de sinir sistemimiz görmemizi sağlamaktadır.

Yapay Sinir Ağları (Artificial Neural Network)
Yapay sinir ağları(ysa) bir makine öğrenmesi yöntemidir. Ysa'da amaç insan sinir sistemini taklit ederek karar verebilen ve yorum yapabilen makineler oluşturmaktır.
Aşağıdaki grafikte bir yapay sinir ağı gösterilmektedir:


Gördüğünüz gibi yapay sinir ağı sistemi üç katmandan oluşmaktadır.
Not: Giriş katmanında herhangi bir hesaplama gerçekleşmez. Bu katmanda sinir ağlarına verilerin girişi sağlanır.
Göreceğiniz üzere hücreler birbirlerine bağlıdır, bu bağlantılar bizim sinir sistemimizdeki sinapsları temsil etmektedir. Bu bağlantılara konunun devamında weight(ağırlık) diyeceğiz.
Şimdi gelin sinir ağlarında nasıl bir hesaplama gerçekleşiyor tüm ayrıntılarıyla inceleyelim.

Aşağıdaki grafikte bir yapay sinir hücresi gösterilmektedir:


Gördüğünüz gibi hücremize n adet veri(girdiler X ile gösterilir) giriyor. Sonra giren veriler ağırlıklarla(weights) çarpılıyor. Daha sonra tüm veriler toplanıyor ve Bias değeri ekleniyor, bu sayede net girdi elde ediyoruz. Net girdi aktivasyon fonksiyonumuzdan geçiyor ve bir çıktı(çıktılar Y ile gösterilir) elde etmiş oluyoruz.

Aktivasyon fonksiyonları
İnternette birçok aktivasyon fonksiyonu görebilirsiniz. Bunlardan en popüleri ReLu fonksiyonudur.
ReLu (Pozitif doğrusal): Girdi 0 ya da 0'dan küçük ise 0 dönen değilse giren veriyi dönen fonksiyonlardır.
Aşağıdaki grafikte popüler aktivasyon fonksiyonlarını görebilirsiniz:


Sinir Ağlarında Eğitim
Sinir ağlarında eğitim yukarıda bahsettiğimiz ağırlıkların ve bias değerlerinin güncellenmesiyle sağlanır.
Amaç en iyi ağırlıkları ve bias değerlerini elde etmektir.
En iyi ağırlık değerlerini bulmak için, çıkması gereken sonuç ve sinir ağlarının verdiği sonuç karşılaştırılarak hata oranı bulunur ve bu orana göre optimizasyon yani en iyi ağırlıkları bulma işlemi yapılır.

Eğitimde önemli noktalar:
- Eğitim en iyi sonuca(istenilen sonuca, test doğruluk oranının en yüksek olduğu sonuca) ulaşana kadar devam etmektedir. İstenilen sonuca bazen hiç ulaşılamayabilir bu düşünülerek eğitim için bir sınır koyulması önemlidir.
- Veri setinin de yeterli olması performans için oldukça önemlidir.

Epoch:
Tüm veri setinin sinir ağları boyunca bir kere gidip gelmesine(ağırlıkların güncellenmesi) epoch denir.
Epoch'un arttırılması daha iyi verim sağlamayabilir tam tersine eğitim verisini ezberlemeye başlamasına neden olabilir ve yeni bir veride(eğitim verisinde olmayan) sonuçları istenilen performansta olmayabilir. Epoch'un az olması da istenilen performansa ulaştırmayabilir.

Batch:
Bir epoch içerisinde,  veri seti içerisindeki bir veri dizisi sinir ağlarında sona kadar gider daha sonra orada bekler batch boyutu kadar veri sona ulaştıktan sonra hata oranı hesaplanır ve optimizasyon işlemi yapılır(ağırlıklar güncellenir).

Aşağıdaki animasyonda örnek bir sinir ağı eğitimi gösterilmiştir:

Umarım yararlı olmuştur.
Sorularınızı, isteklerinizi ve önerilerinizi bekliyorum.
İyi çalışmalar dilerim.

Share this

0 Comment to "Sinir Ağları"

Yorum Gönder