ann

Yapay Sinir Ağları – Artificial Neural Network (ANN)

Yapay Sinir Ağı (ANN),  biyolojik sinir ağlarından esinlenilen bir hesaplama modelidir. Yapay sinir ağı, konuşma tanıma, bilgisayarlı görü ve metin işleme alanlarındaki birçok atılım sonucu  endüstride heyecan yaratmıştır.

Nöron:

Nöronlar, çeşitli şekilleri olmasına rağmen, bir uçtan diğerine, dendrit’ ten akson’a doğru  elektrik sinyali iletirler. Bir elektrik sinyali alır ve başka bir elektrik sinyali çıkarır. Bu sinyaller daha sonra diğer bir nörona iletilir. Vücudumuz ışığı, sesi vb. durumları bu şekilde algılar.

 

sinir-hucresi-noron

Şekil1 : Nöron

Gözlemler, nöronların çabucak tepki göstermediğini, bunun yerine girdiyi belirli bir eşik değerini aşana kadar bastırdığını ve bunun bir çıkışı tetiklediğini vurgulamaktadır. Yani, herhangi bir çıktı üretilmeden önce erişilmesi gereken bir eşik değeri (threshold) vardır. Eşik değerini dikkate alarak çıktı üreten fonksiyonlara “Activation Function” denir. Aktivasyon fonksiyonunun amacı, bir nöronun çıkışına non-linearity getirmektir.Çünkü gerçek verilerin çoğu doğrusal değildir. Nöronların bu doğrusal olmayan ilişkiyi öğrenmesini isteriz. Bu fonksiyonların en basiti  ise Step Function‘ dır.

Activation Fonksiyonları

1 – Step Function

step

Yandaki Step Function’ a göre:

  • Eğer girdi 0’dan küçükse çıkış değeri hep 0′ dır.
  • Eğer girdi 0’dan büyük eşitse, çıktı hep 1’dir.

 

 

 

2 – Sigmoid


Step fonksiyonun biraz daha gelişmiş hali olan sigmoid fonksiyonu, genellikle binary tahminler yapılırken çıkış node’ da activation function olarak kullanılır.

 

 

 

 

3 – Relu

relu

Negatif değerleri sıfır ile değiştirir ve en çok kullanılan activation fonksiyonudur.

  • f(x) = max(0, x)

 

 

 

 

4 – Tanh

Gerçek değerli bir girdi alır ve onu [-1, 1] aralığına çıkarır.

  •    tanh(x) = 2σ(2x) − 1

 

 

 

Yapay sinir ağlarında bir Node ,birden fazla girdi alabilir. Bütün bu girdiler toplanıp,  activation function uygulandıktan sonra diğer Node’ a girdi olarak verilir. Aşağıdaki şekilde, girdileri toplama ve daha sonra activation function uygulanmasını göstermektedir. Sinyallerin toplam değeri yeterince büyük değilse, eşik değer aşılmadığı için çıktı oluşmaz. Eğer toplam değer yeterince büyükse, nöron ateşlenmektedir. 

 

Şekil 2 : Tekli Yapay Nöron

 

Sinir Ağlarını Besleme (Feedforward Neural Network)

İleri beslemeli sinir ağı, geliştirilen yapay sinir ağının ilk ve en basit türüdür . Katmanlar halinde düzenlenmiş çoklu nöronlar (node,düğüm) içerir. Bu düğümlerin arasında bağlantı (connection) bulunur. Her düğüm, diğer düğüm için nispi önemi  olan  bir ağırlığa (weight) sahiptir.

 

nn

Şekil 3: İleri Beslemeli Sinir Ağı

İleri beslemeli sinir ağı üç düğümden oluşur:

  • Input Nodes (X) :  Ağa bilgi sağlar ve  “Input Layer” olarak adlandırılır. Hiçbir hesaplama bu düğümlerde gerçekleştirilmez. Hidden Node’ a bilgi aktarırlar.
  • Hidden Nodes : Gizli düğümlerin dış dünyayla doğrudan bağlantıları yoktur. Hesaplamaları yapar ve giriş düğümlerinden çıkış düğümlerine bilgi aktarırlar. Gizli düğümlerin bulunduğu katmana “Hidden Layer” denir. İleri beslemeli sinir ağında yalnızca tek bir giriş katmanı (input layer) ve tek bir çıktı katmanı (output layer) bulunurken, sıfır ya da daha fazla sayıda Hidden Layerbulunabilir.
  • Output Nodes (Y) : Çıktı düğümleri topluca “Output Layer” olarak adlandırılır ve hesaplamalardan sorumludur. Bilgiyi ağdan dışarıya aktarır.

İleri beslemeli ağlarda, bilgi giriş düğümleri ile çıkış düğümleri arasında sadece ileri yönde, gizli düğümler aracılığı ile taşınır. Ağda hiçbir döngü yoktur.

1 – Single Layer Perceptron (Tek Katmanlı Algılayıcı) : En basit ileri beslemeli sinir ağıdır  ve herhangi bir gizli katman içermez.

2 – Multi Layer Perceptron (Çok Katmanlı Algılayıcı) : Bir veya daha fazla gizli katmana sahiptir. Pratik uygulamalarda Tek katmanlı algılayıcılardan daha kullanışlıdır.

Sinyallerin Katmanlarda Hesaplanarak Çıktılar Haline Getirilmesi

snn

Inputs Weights Outputs
Label Value Label Value Label Value
1 1 1,1 0.9 1
2 0.5 1,2 0.2 2
2,1 0.3
2,2 0.8

 

 

Layer 1 giriş katmanıdır. Input sinyallerinin temsil edilmesinden başka bir şey yapmaz. Layer 2 hesaplamaların yapıldığı katmandır.  Layer 1’den gelen girdilerin ağırlık oranlarına göre Layer 2′ de ki düğümlere nasıl dağıtılacağına bakalım.

 

Layer 2′ nin 1 .node ‘ u için :

1 .Adım Girdilerin Toplamı : 

  • Sum = X1*W11 + X2* W21 
  • Sum = 1 * 0.9 + 0.5 * 0.3 
  • Sum = 1.05

2. Adım Sigmoid Fonksiyonunun Uygulanması (Activation)

  •   Layer 2 (Node1) =   1 / (1+ e^(-x))  =  1 / (1+ e^(-1.05)) =  0. 74

 

 

Layer 2′ nin 2 .node ‘ u için :

1 .Adım Girdilerin Toplamı : 

  • Sum = X1*W12 + X2* W22 
  • Sum = 1 * 0.2 + 0.5 * 0.8 
  • Sum = 0.6

2. Adım Sigmoid Fonksiyonunun Uygulanması (Activation)

  •   Layer 2(Node2) =   1 / (1+ e^(-x)) = 1 / (1+ e^(-0.6)) = 0. 64

Aşağıdaki şekil, az önce hesapladığımız ağ çıktılarını göstermektedir:

Matrisler, yapmamız gereken işi kısaca ve kolayca ifade etmemizi sağlar.Ayrıca bilgisayarlar, hesaplamaları hızlı ve verimli bir şekilde yapabilir. Bu yüzden yukarıdaki işlemleri  Matris formunda gösterecek olursak :

Böylece:

  • Layer 2 (Node 1) = Input 1 * W1,1 + Input 2 * W2,1
  • Layer 2 (Node 2) = Input 1 * W1,2 + Input 2 * W 2,2

Geriye Yayılım Algoritması (Back Propagation Algorithm):

BackProp olarak kısaltılan Hataların Geriye Yayılması, yapay sinir ağının eğitilmesinin çeşitli yollarından biridir. Basit terimlerle ifade etmek gerekirse, hatalardan öğrenir ve Node’ lar arasındaki ağırlıkları optimize eder.

– Nasıl Çalışır ?

Başlangıçta tüm kenar ağırlıkları rasgele atanır. Eğitim veri setindeki her girdi için ANN etkinleştirilir ve çıktı gözlemlenir. Bu çıktı bildiğimiz çıktı ile karşılaştırılır ve hata önceki katmana geri “yayılır”. Bu hata kaydedilir ve ağırlıklar buna göre “düzeltilir”. Bu işlem çıktı hatası önceden belirlenmiş bir eşiğin altına düşene kadar devam eder.

 

 

Hata oranı, girdi düğümlerinin katsayılarıyla doğru orantılıdır.  Yandaki şekilde 1.düğüm hataya 3/4 oranında katkı sağlarken, 2.düğüm 1/4 oranında katkı sağlamıştır.

1. node için hata oranı  : W1,1 / W1,1 + W2,1

2.node için hata oranı : W2,1 / W1,1 + W2,1

 

Ağırlıkları Aslında Nasıl Güncelleştiriyoruz?

Gradient Descent:

Amaç fonksiyondaki minimum noktayı bulmaktır. Başlangıç noktasından Eğim * Öğrenme Oranı çıkarıla çıkarıla minimum nokta bulunur. Eğim ise fonksiyonun türevi alınarak hesaplanır.  Örneğin;

Sol alt kısımdaki  grafik minimum noktaya nasıl ulaşıldığını gösterirken, sağdaki grafik ise regression line’ ın nasıl optimize edildiğini göstermektedir.  Gradient Descent’ te güncelleme işlemi bütün veri seti gezildikten sonra yapılır.

 

 

Stochastic Gradient Descent Algorithm ile ANN’ i Eğitme

Her bir adımda veri setindeki her bir örnek gezidik­ten sonra gün­celle­me işlemi yapılır.( Bütün verisi setini gezmeden)

  • 1.Adım : Ağırlıklara 0′ a yakın, rastgele olacak şekilde sayılar atanır.
  • 2.Adım: Soldan Sağa doğru ileri beleme yapılır.
  • 3.Adım: İleri besleme sonucunda tahmin edilen değer ile gerçek değer karşılaştırılır.
  • 4.Adım: Back Propagation ile sağdan sola doğru ağırlıklar, hata oranları ile doğru orantılı olarak güncellenir.
  • 5.Adım: Her bir gözlem için; 1.Adımdan 4.Adıma kadar olan aşamalar tekrar edilir ve ağırlıklar gücellenir.
  • 6.Adım: Bütün veri seti ANN’den geçtiğinde 1 Epoch yapar. Epoch sayısı kadar bu işlemler tekrar eder.
    • Epoch: Veri setinin tamamının ANN’den geçmesi. Epoch sayısını çok artırmak Overfitting’e sebep olur.
    • Batch:  Örneeğin 1 veri setinde 1000 tane örneğimiz olsun. Batch_size = 100 ise; ilk 100 örnek alınır ve ağdan geçirilir. Daha sonra ikinci 100 örnek alınır ve ağdan geçirilir. Bu işlem veri setindeki bütün örnekler bitene kadar devam eder. Daha az memory kullanır ve daha hızlıdır. Eğer bacth_size çok küçük tutulursa doğruluk oranı düşük bir tahmin yapılır.

 

 

 

Kaynaklar: 

1- Make Your Own neural Network, Tariq Rashid

2- Hands-On Machine Learning with Scikit-Learn and TensorFlow, Aurélien Géron

3 – How to choose the number of hidden layers and nodes in a feedforward neural network?

4- Neural Networks and Deep Learning

23 Paylaşımlar
Yapay Sinir Ağları - Artificial Neural Network (ANN)
Yapay Sinir Ağları - Artificial Neural Network (ANN)
Yapay Sinir Ağı (ANN),  biyolojik sinir ağlarından esinlenilen bir hesaplama modelidir. Yapay Sinir Ağı, konuşma tanıma, bilgisayarlı görü ve metin işleme alanlarındaki birçok atılım sonucu  endüstride heyecan yaratmıştır.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir