YAPAY SİNİR AĞLARI
ÇALIŞMA YAPISI
YAPAY SİNİR AĞLARININ SINIFLANDIRILMASI Yapay sinir ağları işleyiş olarak benzer olmalarına rağmen herhangi bir tasarım ve işleyiş standardı bulunmamaktadır. Nöron dizilimlerine, nöronların ağırlıklarının düzenleme için yapılan hesaplamaların türüne ve zamanına göre yapay sinir ağlarını üç ayrı dalda inceleyebiliriz.
1.Yapılarına Göre Yapay Sinir Ağları İleri Beslemeli Ağlar İleri beslemeli ağlarda nöronlar girişten çıkışa doğru düzenli katmanlar şeklindedir. Bir katmandan sadece kendinden sonraki katmanlara bağ bulunmaktadır. Yapay sinir ağına gelen bilgiler giriş katmanına daha sonra sırasıyla ara katmanlardan ve çıkış katmanından işlenerek geçer ve daha sonra dış dünyaya çıkar.
İleri Beslemeli Ağ için Blok Diyagram YAPAY SİNİR AĞLARI
Geri Beslemeli Yapay Sinir Ağları Geri beslemeli yapay sinir ağlarında ileri beslemeli olanların aksine bir nöronun çıktısı sadece kendinden sonra gelen nöron katmanına girdi olarak verilmez. Kendinden önceki katmanda veya kendi katmanında bulunan herhangi bir nörona girdi olarak bağlanabilir. Bu yapısı ile geri beslemeli yapay sinir ağları doğrusal olmayan dinamik bir davranış göstermektedir. Geri besleme özelliğini kazandıran bağlantıların bağlanış şekline göre, aynı yapay sinir ağıyla farklı davranışta ve yapıda geri beslemeli yapay sinir ağları elde edilebilir.
Geri Beslemeli Ağ için Blok Diyagram YAPAY SİNİR AĞLARI
2.Öğrenme Stratejilerine Göre Yapay Sinir Ağları Yapay sinir ağlarının verilen girdilere göre çıktı üretebilmesinin yolu ağın öğrenebilmesidir. Bu öğrenme işleminin de birden fazla yöntemi vardır. Yapay sinir ağları öğrenme algoritmalarına göre danışmanlı, danışmansız ve destekleyici öğrenme olarak üçe ayrılır.
Danışmanlı Öğrenme (Supervised learning) Danışmanlı öğrenme sırasında ağa verilen giriş değerleri için çıktı değerleri de verilir. Ağ verilen girdiler için istenen çıkışları oluşturabilmek için kendi ağırlıklarını günceller. Ağın çıktıları ile beklenen çıktılar arasındaki hata hesaplanarak ağın yeni ağırlıkları bu hata payına göre düzenlenir. Hata payı hesaplanırken ağın bütün çıktıları ile beklenen çıktıları arasındaki fark hesaplanır ve bu farka göre her nörona düşen hata payı bulunur. Daha sonra her nöron kendine gelen ağırlıkları günceller. Çok Katmanlı perceptron(algılayıcı) ağı bu tür öğrenmeyi kullanan ağlara örnek olarak verilebilir.
Danışmanlı Öğrenme Yapısı YAPAY SİNİR AĞLARI
Örneklendirme Bir örneklendirme yapılmak istenirse; İnsanı tarif ederken şu özellikler dikkate alınsın: boy, kilo, saç rengi, ayakkabı numarası. Bu kriterlere göre bir öğrencinin futbol oynayabilir ya da oynayamaz şeklinde ayrımı yapılmak istensin. Bir Öğretmenin verdiği bilgiler ışığında her öğrenciye “oynayabilir” yada “oynayamaz” bilgisi atansın. Eğer yapay sinir ağı, 100 kişilik böyle bir grubu öğrenseydi ve ardından 100 kişinin içinden herhangi biri yapay sinir ağına boyu, kilosu, saç rengi, ayakkabı numarası verilerek sorulsaydı, yapay sinir ağı o öğrencinin oynayıp oynayamayacağının cevabını verecekti. Çünkü yapay sinir ağı her bir özellik için (boy kilo vs…) ağırlık güncellemesini yapacak ve öğretmenin gösterdiği her öğrenci ve ona iliştirilen kararı arasındaki korelasyonu “w” ağırlıkları üzerinde güncelleye güncelleye öğretecekti. Ağ burada öğrenmesini bir öğretmenle yapmıştır. YAPAY SİNİR AĞLAI
Danışmansız Öğrenme (Kendi kendine öğrenme) (Self, Unsupervised learning) Danışmansız öğrenmede ağa öğrenme sırasında sadece örnek girdiler verilmektedir. Herhangi bir beklenen çıktı bilgisi verilmez. Örneklerdeki parametreler arasındaki ilişkileri sistemin kendi kendine öğrenmesi beklenir. Bu, daha çok sınıflandırma problemleri için kullanılan bir öğrenme şeklidir. Girişte verilen bilgilere göre ağ her bir örneği kendi arasında sınıflandıracak şekilde kendi kurallarını oluşturur. Ağ bağlantı ağırlıklarını aynı özellikte olan dokuları ayırabilecek şekilde düzenleyerek öğrenme işlemini tamamlar.
Danışmansız öğrenme yapısı YAPAY SİNİR AĞLARI
Danışmansız Öğrenme (Unsupervised learning) Yalnız sistemin öğrenmesi bittikten sonra çıktıların ne anlama geldiğini gösteren etiketlendirmenin kullanıcı tarafından yapılması gerekir. Kohonen ağları ve Adaptive Resonance Theory (ART) ağları, bu stratejiyi kullanan sistemlere örnek olarak verilebilir. YAPAY SİNİR AĞLARI
Örneklendirme Örneğin, 100 kişilik bir sınıfın boy, kilo, saç rengi ve ayakkabı numarası yine girdi örüntülerinin değerlerini oluştursun. Yapay sinir ağı ilk gelen kişiyi bir sınıf olarak ilan edecek ve ardından sisteme beslenen tüm girdileri buna benziyor ya da benzemiyor diye ayırt edecektir. Bu ayrımı yapabilmesi için 100 kişilik grubun değerleri, sisteme tekrar tekrar beslendiği takdirde, YSA en sonunda öğrenmesini tamamlayacak ve 2 sınıf öğrenmiş olacaktır. 1.girdiye benzeyenler ve benzemeyenler. Adını koyamadığı bu sınıflar yardımıyla “hanımlar” ve “beyler” gibi olarak rahatlıkla sınıf ayrılmış daha doğrusu bu iki sınıf başarıyla öğrenilmiş olunacaktır. Böyle bir ağ modeline yabancı bir kişi değerleri verilirse, YSA bu kişiye doğru cinsiyetini söyleyecektir. YAPAY SİNİR AĞLARI
Destekleyici Öğrenme (Reinforcement learning) Bu öğrenme yaklaşımında sisteme bir öğretici yardımcı olur. Fakat öğretici her girdi seti için olması gereken çıktı setini sisteme göstermek yerine sistemin kendisine gösterilen girdilere karşılık çıktısını üretmesini bekler ve üretilen çıktının doğru veya yanlış olduğunu gösteren bir sinyal üretir. Sistem, öğreticiden gelen bu sinyali dikkate alarak öğrenme sürecini devam ettirir. LVQ (Linear Vektor Quantization) Ağı yani Doğrusal Vektör Parçalama ağı bu stratejiyi kullanan sistemlere örnek olarak verilebilir. Örneğin, satranç oynayan bir yapay sinir ağı yaptığı hamlenin iyi veya kötü olduğunu anlık olarak ayırt edememesine rağmen yine de hamleyi yapar. Eğer oyun sonuna geldiğinde program oyunu kazandıysa yaptığı hamlelerin iyi olduğunu varsayacaktır ve bundan sonraki oyunlarında benzer hamleleri iyi olarak değerlendirerek oynayacaktır.
Destekleyici öğrenme yapısı YAPAY SİNİR AĞLARI
3. Öğrenme Zamanına Göre Yapay Sinir Ağları Yapay sinir ağları öğrenme zamanına göre de statik ve dinamik öğrenme olarak ikiye ayrılır. Statik Öğrenme Statik öğrenme kuralıyla çalışan yapay sinir ağları kullanmadan önce eğitilmektedir. Eğitim tamamlandıktan sonra ağ istenilen şekilde kullanılabilir. Ancak bu kullanım sırasında ağın üzerindeki ağırlıklarda herhangi bir değişiklik olmaz.
Dinamik Öğrenme Dinamik öğrenme kuralı ise yapay sinir ağlarının çalıştığı süre boyunca öğrenmesini öngörerek tasarlanmıştır. Yapay sinir eğitim aşaması bittikten sonra daha sonraki kullanımlarında çıkışların onaylanmasına göre ağırlıklarını değiştirerek çalışmaya devam eder.
YSA Öğrenme Algoritmaları Yapay sinir ağının geliştirilmesinde kullanılacak çok sayıda öğrenme algoritması bulunmaktadır. Bunlar içinde bazı algoritmaların bazı tip uygulamalar için daha uygun olduğu bilinmektedir. YAPAY SİNİR AĞLARI
Temel Öğrenme Kuralları Literatürde kullanılan çok sayıda öğrenme algoritması bulunmaktadır. Bu algoritmaların çoğunluğu matematik tabanlı olup ağırlıkların güncelleştirilmesi için kullanılırlar. Yapay sinir ağının mimarisine, karşılaşılan sorunun niteliğine göre farklılık gösteren bu öğrenme algoritmalarının yüzden fazla çeşidi bulunmaktadır. Bu algoritmaların bir çoğu aşağıda sıralanan kurallardan esinlenerek geliştirilmiştir. Hebb Kuralı Delta Kuralı Kohonen Kuralı Hopfield Kuralı YAPAY SİNİR AĞLARI
Hebb Kuralı 1949 yılında Kanadalı psikolog Donald Hebb tarafından biyolojik temele dayalı olarak geliştirilmiş olan Hebb algoritması en eski ve en çok bilinen öğrenme algoritmasıdır. Diğer öğrenme kurallarının temelini oluşturmaktadır. Bu öğrenme algoritması basit bir mantığa dayanmaktadır: Eğer nöron (A) başka bir nöron' dan (B) girdi alıyorsa ve her ikisi de aktifse(matematik olarak aynı işareti taşıyorsa), her iki hücrenin arasındaki bağlantı kuvvetlendirilmelidir. (A) ve (B) arasındaki ağırlık artar. Bu düşüncenin en çok kullanılan şekli: YAPAY SİNİR AĞLARI
Hebb Kuralı Bu formülde wjk nöron uk' den nöron uj' ya olan ağırlık, yj,,uj nöronun çıktısı ve xk ise uk nöronun çıktısıdır. α "öğrenme oranı" veya " öğrenme katsayısı" olarak adlandırılmaktadır ve birçok öğrenme algoritması tarafından kullanılır. Öğrenme katsayısı "0" ile "1" arasında bir değer alır ve bu değer ağın öğrenme hızını belirler. α 'nın büyük değerleri için daha hızlı öğrenme, küçük değerleri için daha yavaş öğrenme gerçekleşmektedir. Ancak hızlı öğrenme ağın "genelleme" yeteneğini azaltır. Genelleme yeteneği ağın eksik ve gürültülü verilerle doğru sonuçlar üretebilmesi için oldukça önemlidir. Hebb algoritmasıyla ilgili bir diğer konuda ağın eğitimden önce ağırlıklarının 0 olması gerektiğidir. YAPAY SİNİR AĞLARI
Delta Kuralı Delta kuralı ilk olarak Widrow ve Hoff tarafından geliştirilmiş daha çok mühendislik kökenli bir algoritmadır. Bu kural, nöronun gerçek çıkışı ile istenilen çıkış değerleri arasındaki farkı azaltan, giriş bağlantılarını güçlendiren ve sürekli olarak değiştiren bir düşünceye dayanmaktadır. Delta kuralı, ortalama karesel hatayı, bağlantı ağırlık değerlerinin değiştirilmesi ile düşürme prensibine dayanır. Bu nedenle de bu algoritma en küçük kareler kuralı olarak da bilinmektedir (Least-Mean-Square Rule LMS). Hata aynı anda bir katmandan bir önceki katmanlara geri yayılarak azaltılır. Ağın hatalarının düşürülmesi işlemi, çıkış katmanından giriş katmanına ulaşıncaya kadar devam eder. YAPAY SİNİR AĞLARI
Delta Kuralı Bir nöronun çıktısının op,j, hedeflenen çıktı dp,j'den farkı,(hata), δj nöron j için şöyle hesaplanır: δj= dpj-op,j Bu algoritma, hata karelerinin ortalamasını alarak, bu değerin en küçük olduğu çözümü bulmaya amaçlar. Ağ için hata karelerinin ortalaması, aşağıdaki gibi hesaplanır: YAPAY SİNİR AĞLARI
Delta Kuralı MSE: Mean Squared Error Delta algoritması hataların karesinin en küçük olduğu noktayı bulurken dereceli azaltma yöntemini (gradient descent) kullanmaktadır. Bu yöntemde, hata kareleri, koordinatlarını ağırlıkların oluşturduğu uzayda bir çanak oluşturmaktadır (Şekil 1). Delta algoritması mevcut ağırlık vektörünü bulunduğu konumdan hatanın en küçük olduğu çanağın dibine doğru ilerletir. YAPAY SİNİR AĞLARI
Delta Kuralı Şekil 1.Delta algoritmasında ağırlık değişimi YAPAY SİNİR AĞLARI
Delta Kuralı İşlem elemanının doğrusal geçiş fonksiyonuna sahip olduğu kabul edildiğinde; Hata karelerinin ortalamasının en küçük olduğu noktayı bulmak için ağırlıklar t=zaman olmak üzere t=1,2,3,.., için aşağıdaki gibi değiştirilir: YAPAY SİNİR AĞLARI
Kohonen Kuralı Bu kural, biyolojik sistemlerdeki öğrenmeden esinlenerek Kohonen tarafından geliştirilmiştir. Bu kuralda nöronlar öğrenmek için yarışırlar. Kazanan nöronun ağırlıkları güncellenir. Bu kural “kazanan tamamını alır” olarak da bilinir. En büyük çıkışa sahip işlemci nöron kazanır. Bu nöron, komşularını uyarma ve yasaklama kapasitesine sahiptir. Kohonen kuralı, hedef çıkışa gereksinim duymaz. Bu nedenle danışmansız bir öğrenme metodudur. YAPAY SİNİR AĞLARI
Hopfield Kuralı Bu kural, zayıflatma ve kuvvetlendirme büyüklüğü dışında Hebb Kuralına benzerdir. Eğer istenilen çıkış ve girişin her ikisi aktif veya her ikisi de aktif değilse öğrenme oranı tarafından bağlantı ağırlığı arttırılır. Diğer durumlarda ise azaltılır. Birçok öğrenme algoritmasında öğrenme katsayısı oranı veya sabiti vardır. Genellikle bu terim 0 ile 1 arasında değerler almaktadır. YAPAY SİNİR AĞLARI
YSA da en çok kullanılan modeller Bir YSA da işlem elemanlarının bağlanması sonucu oluşan topoloji, işlem elemanlarının sahip oldukları toplama ve aktivasyon fonksiyonları, öğrenme stratejisi ve kullanılan öğrenme kuralı ağın modelini belirlemektedir. Günümüzde çok sayıda model geliştirilmiştir. Bunların en yaygın olarak kullanılanları ve pratik hayatta uygulananları şunlardır; YAPAY SİNİR AĞLARI
Algılayıcılar(Perceptron) Çok katmanlı algılayıcılar(Hatayı geriye yayma modelleri) Doğrusal Vektör Kuantizasyon modelleri (LVQ) (Linear Vektor Quantization) Adaptif Rezonans Teorisi modelleri(ART) Kendi kendini organize eden model(SOM) Hopfield ağları Probabilistic ağlar(PNN) Boltzman makinesi Counter-Propagation ağı Elman ağı Radyal temelli ağlar(RBN) Neocognitron ağı YAPAY SİNİR AĞLARI
Geri yayılım algoritması (Back-Propagation Algorithm) Geri yayılım algoritması için en önemli kavram nöron hatasıdır. Nöron hatası, nöronun ideal olan istenen çıktısından farkı demektedir. aij nöron aktivasyonun ideal istenen çıktılardan farkı = (j,i) nöronun hatasıdır Bu hataları kullanarak J’nin türevleri verimli şekilde hesaplanabilir, ama ... Arasındaki nöronların ideal olan çıktısı genellikle bilinmez, sadece en son nöron için çıktılar bilinebilir.
Geri yayılım algoritması Ana problem: hatalar sadece son (çıkış) nöron için bilinebilir (çıkış nöronlardan ne istediğimiz bilinir) Sadece bu nöronlar için hatalar açıkca belirtilebilir (yani modellenecek verinin örnekleri kullanarak çıkış nöronların hataları tahmin edilebilir).
Geri yayılım algoritması YSA’ları, karmaşık lineer olmayan fonksiyonlar temsil eder ve birçok esnek parametre içerir. Bu nedenle, YSA direkt olarak lineer olmayan aynı zamanda esnek ve bu nedenle güçlü genel modelleme yaklaşımıdır. x1 x2 x3 a12 a22 a32 a13
Geri yayılım algoritması Geri yayılım algoritmasının ana fikri: Son nöron için (a(3)), hataları bilinir (örnekler kullanın) Bu nöron için hataları bu şekilde hesaplıyoruz: Örneklerdeki YSA hataları:
Geri yayılım algoritması Geri yayılım algoritmasının ana fikri: Son nöron için (a(3)), hataları bilinir (örnekler kullanın) Bu nöron için hataları bu şekilde hesaplıyoruz: Gereken çıktı
Geri yayılım algoritması Geri yayılım algoritmasının ana fikri: Son nöron için (a(3)), hataları bilinir (örnekler kullanın) Bu nöron için hataları bu şekilde hesaplıyoruz: YSA’ndan alınmış çıktı
Geri yayılım algoritması Geri yayılım algoritmasının ana fikri: Son nöron için (a(3)), hataları bilinir (örnekler kullanın) Bu nöron için hataları bu şekilde hesaplıyoruz: YSA’nın hatası
Geri yayılım algoritması Gizli elemanlar için hataları bilmiyoruz... ? x1 x2 x3 a12 a22 a32 a13 OK
Geri yayılım algoritması ”Sonraki katmanda hataları kaldırmak için, önceki katmandaki nöron aktivasyonu ne şekilde değiştirilmeli ?” x1 x2 x3 a12 a22 a32 a13
Geri yayılım algoritması Son elemanın 13 hatasını kaldırmak için, (önceki) a12-a32 elemanlarının değerleri ne şekilde değiştirilmeli ? x1 x2 x3 a12 a22 a32 a13 ?
Geri yayılım algoritması Bu sorun matematiksel şekilde çözülebilir, önceki nöronların -hataları için bu “geri yayılım” formülü alınabilir: x1 x2 x3 a12 a22 a32 a13 OK
Geri yayılım algoritması Daha genel anlamda bu sorunun örnekleri de ilginçtir; genel anlamda bu bir “suçlama atama sorunu”dur (blame assignment problem) x1 x2 x3 a12 a22 a32 a13
Geri yayılım algoritması Genel olarak suçlama atama demek ki, “kötü bir şey ama birçok kişi katkıda bulunduğu için kimin yaptığını bilemiyoruz ” x1 x2 x3 a12 a22 a32 a13
Geri yayılım algoritması Büyük organizasyonda önemli bir sorundur x1 x2 x3 a12 a22 a32 a13
Geri yayılım algoritması Örnek: bir şirkette ürün çok kötü kalitede bulunmakta, ama ...
Geri yayılım algoritması ... Ürün üretiminde birçok kişi katkıda bulunduğu için buna kimin sorun olduğunu bilmiyoruz. Ürün kötü ! x1 x2 x3 a12 a22 a32 a13 Birçok kişi katkıdadır ... Kimin sorun ???
Geri yayılım algoritması ... Ürün üretiminde birçok kişi katkıda bulunduğu için buna kimin sorun olduğunu bilmiyoruz Ürün kötü ! x1 x2 x3 a12 a22 a32 a13 Suçlama atama sorunu Birçok kişi katkıdadır ... Kimin sorun ???
Geri yayılım algoritması Geri yayılım algoritması bu soruya bir cevaptır Ürün kötü ! x1 x2 x3 a12 a22 a32 a13 Birçok kişi katkıdadır ... Kimin sorun ???
Geri yayılım algoritması YSA’da, benzer şekilde sadece son nöronun hatası biliniyor ama daha önce katkısı olan nöronların hatalarını da bulmak gerekiyor x1 x2 x3 a12 a22 a32 a13
Geri yayılım algoritması Geri yayılım algoritmasında bu sorun şu şekilde çözülüyor: x1 x2 x3 a12 a22 a32 a13
Geri yayılım algoritması Önemli nokta: burada hatalar geri yayılım şeklinde hesaplanır–ilk önce son hata bulunur, sonra önceki hatalar bulunur, sonra daha önceki hatalar bulunur, vb x1 x2 x3 a12 a22 a32 a13
Geri yayılım algoritması Uygulamalarda YSA’nın yapısını belirtmek lazım: Kaç nöron Kaç katman Katmanlarda kaç nöron Böyle sorulara “YSA mimarisi” denir s1 x1 s2 x2
Geri yayılım algoritması YSA mimarisi seçmeyle ilgili, bazı genel kurallar var: Daha çok nöron varsa, sonuç daha iyi olur Daha çok gizli katman varsa, sonuç daha iyi olur s1 x1 x2 s2
Geri yayılım algoritması YSA simetri sorunu: gizli elemanların numaralandırması herhangi bir şekilde olabilir Farklı numaralandırma sonuca hiç bir şekilde etki etmez. x1 x2 x3 a12 a22 a32 a13 x1 x2 x3 a12 a22 a32 a13
Geri yayılım algoritması Farklı şekilde numaralandırılmış gizli nöronlar, ve dolasıyla w-matrisleri, eş YSA’yı belirtirler. x1 x2 x3 a12 a22 a32 a13 x1 x2 x3 a12 a22 a32 a13
YAPAY SİNİR AĞLARI
YAPAY SİNİR AĞLARI
YAPAY SİNİR AĞLARI
YAPAY SİNİR AĞLARI
YAPAY SİNİR AĞLARI
YAPAY SİNİR AĞLARI
YAPAY SİNİR AĞLARI
Referanslar 1. Neural Networks, A Comprehensive Foundation, S. Haykin, Prentice Hall (1999) 2. Elements of Articial Neural Networks K Mehrotra C K Mohan, S.Ranka, MIT, 2000. 3.Öztemel E., Yapay Sinir Ağları, Papatya Yayıncılık, İstanbul, 2003. 4.http://www.neuron.yale.edu/ YAPAY SİNİR AĞLARI