Pazar , 20 Eylül 2020
Home » Yapay Zeka » Yapay Sinir Ağları
Yapay Sinir Ağları 1 – blog 75416254311768

Yapay Sinir Ağları

Motivasyon yazımda “Suni zeka nedir ve nereye doğru ilerlemektedir?” sorusuna cevap bulabilmek için geniş ve genel bir tanıtım yapmıştım. Bu yazımda ise -konunun derinliklerine dalmaya hazır hissedenler için- temel bir suni sinir ağı (YSA) modeli ve geriye yayılım algoritmasını (backpropagation algorithm) detaylı bir halde anlatacağım.

 “Worrying about AI evil superintelligence today is like worrying about overpopulation on the planet Mars. We haven’t even landed on the planet yet!” Andrew Ng, Prof.

“Bugün Suni Zekanın fena bir süperzeka olmasından endişelenmek, Mars’taki aşırı nüfus artışından endişelenmek gibidir. Biz hemen hemen bu gezegene iniş yapmadık!” Andrew Ng, Prof.

Canlıların davranışlarını inceleyip, matematiksel olarak modelleyip, benzer suni modellerin üretilmesine sibernetik denir. Eğitilebilir, adaptif ve kendi kendine organize olup öğrenebilen ve değerlendirme yapabilen suni sinir ağları ile insan beyninin öğrenme yapısı modellenmeye çalışılmaktadır. Aynı insanda olduğu şeklinde suni sinir ağları vasıtasıyla makinelerin eğitilmesi, öğrenmesi ve karar vermesi amaçlanmaktadır.

İnsandaki bir sinir hücresinin (nöron) yapısı şu şekildedir:

Yapay Sinir Ağları 2 – mJp1L8

Akson (Axon): Çıkış darbelerinin üretildiği elektriksel etken gövdedir ve beden üstünde iletim tek yönlüdür. Sistem çıkışıdır.

Dentritler (Dendrites): Öteki hücrelerden gelen işaretleri toplayan elektriksel anlamda eylemsiz kollardır. Sistem girişidir.

Sinaps (Synapse): Hücrelerin aksonlarının öteki dentritlerle olan bağlantısını sağlar.

Miyelin Katman (Myelin Sheath): Yayılma hızına tesir eden yalıtım malzemesidir.

Çekirdek (Nucleus): Akson süresince işaretlerin periyodik olarak tekrardan üretilmesini sağlar.

Aksonda taşınan işaret sinapslara kimyasal taşıyıcılar yardımıyla iletilmektedir. Stoplazma -85mV ile polarizedir. -40mV (Na+ içeri): uyarma (+) akıma neden olur. -90mV (K+ dışarı): bastırma (-) akıma neden olur. Şu demek oluyor ki belirli bir eşik gerilim değerinin üstünde iken hücre uyarılırken, öteki durumlarda hücre bastırılır. Σ Bu duruma gore çıkış işareti üretilmesine sinirsel hesaplama denir.

İnsandaki bir sinir hücresinin matematiksel modeli ise şu şekilde gösterilebilir:

Yapay Sinir Ağları 3 – Dym433

Perseptron (Perceptron): Suni sinir ağının en minik parçası olarak malum perceptron, aşağıdaki şeklinde lineer bir fonksiyonla ifade edilmektedir ve ilk kere 1957 senesinde Frank Rosenblatt tarafınca tanımlanmıştır.

Yapay Sinir Ağları 4 – JONn35

y: x’in değerine bağlı olduğundan bağımlı değişkendir. Girdiye ilişkin skoru verir.

x: bağımsız değişken, girdi.

W: ağırlık parametresi

b: bias kıymeti

Oldukça katmanlı bir YSA ya da Derin Öğrenme modelinde meydana getirilen temel işlem; modelin en iyi skoru vereceği W ve b parametrelerinin hesabını yapmaktır.

Yapay Sinir Ağları 5 – vJVnXr

Tek katmanlı ve fazlaca katmanlı YSA modelleri incelendiğinde mühim bir mevzunun ayrımına varmak gerekiyor. 1960 senesinde Widrow ve Hoff fazlaca katmanlı yapıya geçen ilk emek vermeyi yapmışlardır.

Bir katman içindeki nöronların birbirleriyle ilişkileri yoktur ve sistemde akılda kalan bilgiyi sonraki katmana ya da çıkışa aktarma işini gerçekleştirirler. Arka arkaya iki katmandaki nöronlar birbirlerini çeşitli aktivasyon değerleriyle etkilemekte ve modelin öğrenme seviyesini belirleyen bir aktarım gerçekleştirmektedir.

O halde modelin bir katmanındaki nöron sayısı sistemin performansını dolaylı olarak etkilemektedir. ‘Katman sayısı arttıkça öğrenme performansı artar’, denebilir şeklinde görünse de bu doğru değildir. Şu sebeple model performansı, yalnız girdiler ve katman sayısıyla belirlenmez. Model Girişin (x) ‘0’ olduğu durumlarda W-x=0 ve +b kıymeti skor fonksiyonunun çıktısını öteler. Böylece modelin bir sonraki iterasyonda öğrenme işlemine devam etmesini sağlar. W ağırlık vektörü düğüm/nöron sayısı (hücre), bias (b) değerleri de gelecek katmandaki düğüm sayısı kadar olmalıdır.

Başlangıçta rastgele atanabileceği şeklinde geçmişte eğitilmiş bir modelin parametresi giriş parametresi olarak tanımlanabilir. Sadece bu değerler atanırken (+) ya da (-) değerlerden rastgele dağılımlı olarak belirlenmelidir. Şu sebeple ‘0’ kıymeti verildiği durumlarda hesap katmanlarda devamlı aynı çıkacağından öğrenme gerçekleşmemiş olacaktır. Bu istenmeyen bir durumdur.

XOR problemi şeklinde tek katmanlı modelle çözülemeyen problemlerde bazı optimizasyon fonksiyonları tasarlanarak çözümü kolaylaştırmak mümkündür.

Başarıya ulaşmış şekilde tasarlanmış bir ağ modelinin başarımını belirleyen Yitik/Yitim fonksiyonu (Loss function) kıymeti çeşitli optimizasyon teknikleriyle ‘0’a yaklaşması istenen bir fonksiyondur. Burada eğitim ve kontrol gruplarının karşılaştırılmasıyla hesaplanan bir değerden söz ediyoruz. Sadece bu iki değişik kısıtla karşılaşmamıza sebep olmaktadır:

Bu iki durumun verimli bir ağ modelinde olmaması gerekir. Rahat bir çözümle üstesinden gelinebilir. Kontrol verileri eğitim verilerinden oluşan bir temsil grubuyla karşılaştırılır. Böylece işlem yükünün azalması sistemin hız bakımından performans kazanmasını sağlamaktadır. Burada mühim olan temsil verisinin iyi mi seçildiğidir.

Yapay Sinir Ağları 6 – 8N5DMW

Eğitim verisinin içeriğindeki tüm detayları temsil eden bir veri elde etmek gerekmektedir. Bunun için öğrenme işleminden sonrasında ilgili verinin ağırlık matrisi (averajı) temsil verisi olarak alınmaktadır.

Yapay Sinir Ağları 7 – vJVnbr

Loss değerine eklenen Regularizasyon (R) değerinden dolayı Loss hiçbir vakit sıfır olmayacaktır. W ağırlık vektörünün sıfır olduğu durumlar haricinde geçerlidir. Regularizasyon sayısı kullanılması mecburi olmayan bir hiperparametredir. Kullanılması tavsiye edilir bu sebeple derin öğrenme başarımına pozitif yönde katkı sağlamaktadır.  Loss hesabı yapılırken çeşitli optimizasyon teknikleri kullanılabilir. İki sınıflı kolay bir sorun için ‘Sigmoid’, daha karmaşık sınıflandırma problemlerinde SVM’de s(f(W,x)) skor fonksiyonu ve model tarafınca üretilen skor değerlini baz alarak olasılıksal olarak loss hesabı yapar. Loglike kıymetini maksimize ve negatif olabilirlik kıymetini minimize etmek esastır. Bu işlemleri yaparken olasılık değerlerini en büyük olabilirlik yöntemiyle (maximum likelihood method) dönüştürme işlemi yapmaktadır. Loss fonksiyonunun parçalı-doğrusal bir matematiksel yapıda olduğu anlaşılmaktadır.

Yapay Sinir Ağları 8 – g9pZWN

SVM, benzerlik skoru üretirken Softmax benzerlikle ilgili olasılık değerleri üretir ve netice üstünde normalizasyon yaparak olasılıksal hale dönüştürür. Bu sayede sınıflar arasındaki fark daha kolay yorumlanabilir bir hal alır. Sınıflandırma problemlerinde tercih edilmesi tavsiye edilir. Sistemin performansı açısından karşılaştırıldığında fark azdır. Aşağıda SVM ve Softmax için loss hesabı gösterilmektedir.

Yapay Sinir Ağları 9 – Ma2Lak

Daha detaylı informasyon için. http://cs231n.github.io/linear-classify/

Aşağıdaki demoyu kullanarak doğrusal sınıflama için parametreleri değiştirerek hesaplama sonucunda sınıflandırma performansını inceleyebilirsiniz. (Demo için aşağıdaki görüntüye tıklayınız)

Yapay Sinir Ağları 10 – bLpJBG

Loss fonksiyonunda minimumu bulmak için 3 değişik strateji geliştirebiliriz.

Bunların içinden Stokastik Gradyan İniş (Stochastic Gradient Descent-SGD) optimizasyonda en fazlaca kullanılan yöntemlerin başlangıcında gelmektedir. İki şekilde gradyan hesabı yapılabilir.

Pratikte, analitik gradyan ile işe başlanır ve uygulama numerik gradyanla denetim edilir.

Yapay Sinir Ağları 11 – opt1Yapay Sinir Ağları 12 – opt2

1986 senesinde Rumelhart ve arkadaşları tarafınca kullandığında popülerlik kazanmıştır. Gizli saklı katman ve çıkış katmanlardaki tüm ağırlıklar hesaba katılır. Hata miktarı gizli saklı katmanlarda bulunan nöronlara geri dönerek modelin başarımı artırılmaktadır. Aslına bakarsak Gradyan İniş algoritmasının YSA’daki adıdır. Giriş değerleri ağırlık katsayılarıyla çarpılarak gizli saklı katman çıkışından modelin çıkışına aktarılır. Bu esasen ileri yayılımdır. Geri yayılım yardımıyla modelin ağırlık katsayıları güncellenir ve model optimize edilmiş olur.

Aşağıdaki 2 girişli (x0, x1) nöron modeli aktivasyon olarak sigmoid fonksiyonu kullanmaktadır. Öğrenme için ağırlık katsayıları (w0, w1, w2) olarak gösterilmektedir.

Ağ modeli bu denklemden hareketle oluşturulmuştur. İleri yayılımda girişteki 2.00, -1.00, -3.00, -2.00,-3.00 değerleri ilgili işlemleri ileri yönde yaparak çıkışta 0.73 kıymeti adım adım elde edilmektedir.

Yapay Sinir Ağları 13 – Dym4Gy

Geriye yayılımı gerçekleştirirken model içinde yer edinen fonksiyonların gradyanlarını hesaplamak gerekir. Birinci adım için ilgili gradyan fonksiyonu aşağıda işaretlenen gibidir. 0.73 çıktısından geriye doğru işlemlerin iyi mi gerçekleştiğine bakarsak:

Yapay Sinir Ağları 14 – 5GXMqA

Yapay Sinir Ağları 15 – vJVnNO

Bir sonraki adımda gene ilgili gradyan işlemine gore işlem yapıldığında (1)(-0.53)=0.53 olarak yeni adım hesaplanmış olur.

Bir sonraki adımda yukarıda belirtilen ilgili türev sonucuna gore geriye doğru ağırlık güncellemesi aşağıdaki işlemle yapılır.

Yapay Sinir Ağları 16 – Dym4W1

Bir adım daha işlem yapılırsa;

Yapay Sinir Ağları 17 – 0GgmgD

Yeni adımda artık toplama düğümden iki kola ayrılmak gerekmektedir. Her iki çıkış ağırlıkları hesaplanırken mahalli gradyan ile ileri yöndeki gradyan kıymeti kullanılır. Netice aşağıdaki şeklinde bulunur.

Yapay Sinir Ağları 18 – jQpVpG

Çarpım düğümündeki işleme göz atarsak; x0 ve w0 değerlerini çarpma düğümüne gelen yeni ağırlıkla çarpmak gerekir.

Yapay Sinir Ağları 19 – JONnMB

Böylece tüm ağ modelinde geriye doğru ağırlıklar güncellendiğinde elde edilmiş yeni ağırlıklar aşağıdaki şeklinde hesaplanmaktadır.

Yapay Sinir Ağları 20 – 9DA273

Modelin iki girişli kısımlarında yeni hesaplanan kıymet iki çıkışa da aktarılarak işlemler sürdürülür. Ek olarak bazı noktaların birleşimi bir başka modeli simgeleyebilmektedir. Mesela aşağıdaki modelin bir kısmı sigmoid fonksiyonunu ifade etmektedir. Böylece modelin sonundan ilk dallanma düğümüne kadar olan kısmı tek adımda da hesaplayabiliriz.

Yapay Sinir Ağları 21 – 7ydMJW

Tüm adımların geriye doğru hesaplanması modelin optimizasyonu ve öğrenme işlemini gerçekleştirilmesi için fazlaca önemlidir. Bilinmelidir ki YSA bir kapalı kutu değildir.

Bu şekilde iki katmanlı bir ağ modelinin eğitilmesi için 11 satırlık Python kodu yeterlidir.

Yapay Sinir Ağları 22 – zJLrZ6

Kaynak: http://iamtrask.github.io/2015/07/12/basic-python-network/

Yapay Sinir Ağları 23 – ZOp7Ba

2 boyutlu bir sınıflandırma problemini 2 katmanlı bir sinir ağı modeliyle ve değişik aktivasyon fonksiyonlarıyla iyi mi çözüme gidildiğini görsel olarak ta anlayabilmek için aşağıdaki linkteki demoyu çalıştırınız. Ağ modelini arzu ettiğiniz şeklinde değiştirerek birazcık oyun oynamanın tadını çıkarın!  (Demo için görüntüye tıklayınız)

Yapay Sinir Ağları 24 – 6yb5WP

İnsan beyin ve sinir yapısı şeklinde biyolojik bir esin kaynağıyla yola çıkılarak öğrenme, karar verme şeklinde problemlere YSA ile çözümler getirilmiştir. Kapalı kutu karmaşasını ortadan kaldırmak ağ modellerinin iç yapısı ve hesaplamaları incelemek mevzuyu anlamaya ve yeni çözümler üretmeye olanak sağlamaktadır.

1950’li yıllardan başlamış olan suni sinir ağı emekleri, web çağıyla beraber biriken verilerin üstel olarak artması, mobil uygulamaların akıllı hale getirilmesi, tıbbi alandaki gelişmeler şeklinde ve bunlara bağlı olarak sistemlerin öğrenme, karar verme, akıl yürütme şeklinde işlevleri gerçekleştirmesi için standart YSA modellerinin yetersiz kalması değişik bakış açılarını bununla beraber getirmiştir.

1998’de Yann LeCun ve arkadaşları tarafınca LeNet mimarisi ile Evrişimsel Sinir Ağları (Convolutional Neural Networks-CNN) kullanarak, 2006 senesinde Hinton ve Salakhutdinov “Reinvigorated research in Deep Learning” emekleri ile Sınırı olan Boltzman Makinesi (Restricted Boltzman Machine-RBM) kullanarak, Derin Öğrenme konusunu popüler hale getirmişlerdir.

Bugün derin öğrenme her yerde! Gelecek yazım Evrişimsel Sinir Ağlarına (Convolutional Neural Networks: CNN) detaylı bir bakış olacak!

Değişik Demolar için Kaynak: http://cs.stanford.edu/people/karpathy/convnetjs

Temel Kaynak: http://cs231n.stanford.edu/ 

Yazar Merve Ayyüce Kızrak‘a teşekkürler

One comment

  1. Pingback: Yapay Zeka ile Gerçek Eserlerin Taklitlerinden Ayırt Edilmesi - Teknoloji Uzayı

Bir cevap yazın

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