Blog
Veri analizi, veri işleme, büyük veri, yapay zeka ve benzeri konular için kaynak niteliğinde olan yazılar

Yapay Sinir Ağı nedir?

Yapay Sinir Ağı (YSA), yapay beyinler oluşturmak için birbirine bağlı yapay nöronlar üzerine kurulmuş, biyolojik sinir ağlarından esinlenen bir bilgisayar sistemidir. Bilgiyi insan gibi analiz etmek ve işlemek için tasarlanmıştır. Yapay Sinir Ağı, daha fazla veri mevcut oldukça daha iyi sonuçlar üretmek için kendi kendine öğrenme yeteneklerine sahiptir.

Yapay Sinir Ağı
Image by pexels

Yapay Sinir Ağı (YSA) dört temel bölümden oluşur:

  • Katmanlar: Tüm öğrenme süreci katmanlarda gerçekleşir. 3 katman vardır 1) Girdi Katmanı 2) Gizli Katmanlar ve 3) Çıktı Katmanı
  • Özellik ve etiket: Ağa veri girişi (özellikler) ve ağdan çıkış (etiketler)
  • Hata Hesaplama Fonksiyonu (loss function): Öğrenme aşamasının performansını tahmin etmek için kullanılan metrik
  • Optimize edici: Ağdaki bilgileri güncelleyerek öğrenmeyi geliştiren kısım

Bir sinir ağı, girdi verilerini alır ve katmanlar topluluğuna iletir. Bir sinir ağının, kendi performansını bir Hata Hesaplama Fonksiyonu (loss function) ile değerlendirmesi gerekir. Hata Hesaplama Fonksiyonu, sinir ağına bilgiye hakim olmadan önce izlemesi gereken yol hakkında bir fikir verir. Ağın bir optimize edicinin yardımıyla bilgisini geliştirmesi gerekir.

Yapay Sinir Ağı Mimarisi

Program girdi değerlerini alır ve bunları birbiri ile bağlantılı iki katmana iletir. Bir matematik probleminiz olduğunu hayal edin, yaptığınız ilk şey problemi çözmek için ilgili bölümü okumaktır. Problemi çözmek için bildiklerinizi uygularsınız. İlk aşamada başarı elde etme olasılığınız oldukça düşüktür, aynısı sinir ağı için de geçerlidir. Verileri ilk gördüğündeki tahmini, beklenen sonuçlarla mükemmel bir şekilde eşleşmeyebilir. Ağ, bilgisini geliştirmek için bir optimize edici kullanır. Basit bir benzetme ile optimize edicinin sorumluluğunu ilgili bölümü yeniden okumak olduğunu düşünülebilirsiniz. Tekrar okuyarak yeni içgörüler ve kazanımlar elde edersiniz. Benzer şekilde, sinir ağı optimize ediciyi kullanarak, bilgilerini günceller ve ne kadar öğrenmesi gerektiğini kontrol etmek için yeni bilgilerini test eder. Program, mümkün olan en düşük hatayı yapana kadar bu adımları tekrarlar. Matematik problemi benzetmemize dönersek eğer bu durum ders içeriğini iyice anlayana kadar ders kitabı bölümünü birçok kez okuduğunuz anlamına gelir. Defalarca okuduktan sonra bile hata yapmaya devam ediyorsanız mevcut malzeme ile olabilecek bilgi kapasitesine ulaşmışsınız demektir. Puanınızı artırmak için farklı bir ders kitabı kullanmanız veya farklı bir yöntem ile test etmeniz gerekir. Bir sinir ağı için de durum aynıdır. Hata oranında azalma gerçekleşmiyorsa, sinir ağı bu mimari ile başka bir şey öğrenemez anlamına gelir. Bilgiyi geliştirmek için ağın daha iyi optimize edilmesi gerekir.

Yapay Sinir Ağı Mimarisi

Katmanlar

Öğrenmenin gerçekleştiği yer katmanlardır. Katmanların içinde sonsuz sayıda ağırlık (nöron) vardır. Tipik bir sinir ağı genellikle yoğun şekilde bağlı katmanlar (tam bağlı katmanlar olarak da adlandırılır) tarafından işlenir. Bu, tüm girişlerin çıkışa bağlı olduğu anlamına gelir.

Ağ bir girdi alır, bunu bağlı tüm düğümlere gönderir ve bir aktivasyon fonksiyonu ile sinyali hesaplar.

Yapay Sinir Ağı Mimarisi
Figür: Yapay Sinir Ağı Mimarisi

Yukarıdaki şekilde bu fikir gösterilmektedir. İlk katman, gizli katman olarak adlandırılan ikinci katman için girdi değerleridir, önceki katmandan ağırlıklı girdiyi alır.

  • İlk düğüm girdi değerleridir
  • Nöron, girdi kısmına ve aktivasyon fonksiyonuna ayrıştırılır. Sol kısım, önceki katmandan tüm girdileri alır. Sağ kısım, aktivasyon fonksiyonuna geçen girdilerin toplamıdır.
  • Gizli katmanlardan hesaplanan ve bir tahmin yapmak için kullanılan çıktı değeri.

Aktivasyon fonksiyonu

Bir düğüm için aktivasyon fonksiyonu, verilen girdilere göre oluşan çıktıyı tanımlar. Ağın doğrusal olmayan modeli öğrenmesini sağlamak için bir aktivasyon fonksiyonuna ihtiyaç vardır. Yaygın kullanılan aktivasyon fonksiyonu: Relu, Rectified linear unit. Fonksiyon, tüm negatif değerler için sıfır verir.

Diğer aktivasyon fonksiyonları şunlardır:

  • Piecewise Linear
  • Sigmoid
  • Tanh
  • Leaky Relu

Bir sinir ağı oluştururken verilecek kritik karar şudur:

  • Sinir ağında kaç katman var?
  • Her katman için kaç gizli birim var?

Çok sayıda katman ve gizli birim içeren bir sinir ağı, verilerin karmaşık yapısını öğrenebilir, ancak ağın hesaplamasını masraflı hale getirebilir.

Hata Hesaplama Fonksiyonu (Loss Function)

Gizli katmanları ve aktivasyon fonksiyonunu tanımladıktan sonra, hata hesaplama fonksiyonunu ve optimize ediciyi belirtmeniz gerekir.

İkili değer (Binary) sınıflandırması için İkili Değer Çapraz Entropi Hata Hesaplama Fonksiyonu (Binary Cross Entropy Loss Function) yaygın olarak kullanılmaktadır. Doğrusal regresyonda, Ortalama Kare Hatası (Mean Squared Error) kullanılır.

Hata Hesaplama Fonksiyonu, optimize edicinin performansını tahmin etmek için önemli bir metriktir. Öğrenme sırasında bu metrik minimize edilir. Karşılaştığınız sorunun türüne bağlı olarak bu miktarı dikkatli bir şekilde seçmeniz gerekir.

Optimize Edici

Hata Hesaplama Fonksiyonu (Loss Function), modelin performansının bir ölçüsüdür. Optimize edici, kaybı azaltmak için ağın ağırlıklarını (Nöronlarını) iyileştirmeye yardımcı olur. Kullanılabilir farklı optimize ediciler vardır, ancak en yaygın olanı Stokastik Gradyan Azalım’dır (Stochastic Gradient Descent).

Yaygın olarak kullanılan diğer optimize ediciler şunlardır:

  • Momentum optimization,
  • Nesterov Accelerated Gradient,
  • AdaGrad,
  • Adam optimization