LinkedIn FriendFeed Twitter

Hopfield ağı kullanarak çağrışımlı bellek tasarımı

by Ordinaryus 7. February 2010 01:03

HOPFIELD AĞI

Hopfield ağları birim gecikmeli ve nöron sayısı kadar bulunmakta olan geri besleme yolları üzerinden aktarılan bir ağ türüdür. Hebb öğrenme kuralına uygun olarak çalışmaktadır. Bu ağın temsili aşağıdaki şekilde gösterilebilmektedir.

clip_image002

Hopfield ağı temsili

 

Hopfield ağının yapısından ziyade kullanım alanları ile önümüze çıkmaktadır. Genellikle çağrışımlı bellek tasarımı ve optimizasyon uygulamalarında örnekleriyle karşılaşabiliyoruz. Bunun nedenlerini inceleyecek olursan öncelikle ağ üzerindeki değerlerin neler temsil ettiğini ve bunlar üzerinden ulaşmaya çalıştığımız değerlerin neler olduğunu anlamaya çalışalım.

Bunu açıklamaya çalışırken yapılacak uygulamanın da bir parçası olduğundan ötürü pattern recognition konusu ile alakalı örnekler daha fazlalıkla verilecektir. Öncelikle hopfield ağında depolanması istenen desenler kullanılarak yaratılan bellekte sistemin bulunabileceği lokal minimum değerler, eğer noktaları ve limit çevrimler bulunmaktadır.

Burada sistemimiz için oluşturulmakta olan desendeki veriler doğrudan arama uzayımızda temsil edilmektedir. Bunun için örnek olarak yapılacak uygulamada 5x5 boyutlarından desenler kullanılmaktadır. Bunların temsil edilmesi 25 boyutlu bir uzay üzerinden mümkün olmaktadır. Sistemin aldıkları değerler doğrultusunda bu sistemde ulaşabileceği noktalar yukarıda bahsettiğim limit çevrimler veya denge noktalarından birisi olabilmektedir. Lineer sistemlerde bu denge noktaları sayısı tek olduğundan eninde sonunda buraya ulaşılabilmektedir.

Ancak tek bir noktaya yakınsamak bizim sistemimiz için yeterli olmamaktadır. Burada hedeflenen birden çok denge noktasından birine ulaşılması ve bununda bizim başlangıç değerimize bağlı olarak varmak istediğimiz nokta olmasıdır.

Dinamik sistemlerde elde edilecek bu denge noktalarını belirlememiz mümkündür. Konuyu kontrol problemi olarak inceleyecek olursak sistemin eninde sonunda bir kararlılığa ulaşmasını istemekteyiz. Denge noktalarının sayısının arttırılmasında ise sistemin derecesini büyütmek bir yöntem olabilmektedir. Aslında bir bakıma sistemimizin kararlılığa ulaşabileceği ve bizim için amaç ölçütü olabilecek noktaların sayısı arttırmış olmaktayızdır.

Hopfield çevrimi içerisinde başlangıç değerlerinden itibaren adım adım bu denge noktalarına yaklaşılmaktadır ve sistem üzerinden belirlenen bir denge noktasında son bulunmaktadır. Bu noktalar eğer tanınmak istenen desenler olursa bunlara benzeyen desenler başarılı bir ağ üzerinde bu noktaların çekim alanlarına girmektedirler.

Hopfield modellerinin birde optimizasyon alanında nasıl kullanıldığını inceleyecek olursak amaçlarımız bir miktar değişmektedir. Burada bizim sistemimiz için birden fazla denge noktası bulunmaktadır ancak bunlardan en iyisini seçebilmek bizim hedefimiz olmaktadır.  Kontrol sistemlerinden genellikle bir denge noktasına doğru yaklaşılır ve bunun hedef fonksiyonlarımıza uyup uymadığına bakılmaktadır. Eğer enerji fonksiyonlarımızdan elde edilen değerler optimizasyon şartlarımıza uygun değilse arama uzayından rastgele bir nokta seçilerek arama yeniden gerçekleştirilmektedir. Ancak bizim optimum çözümümüzün çekim alanı diğer denge noktalarınınki kadar geniş değilse optimizasyon kısıtları altından sıkışmaktayızdır. Bu nedenle rastgele değerler olmayan arama uzayını daha başarılı şekilde arayacak ve lokal minimumlara düşüldüğünde sistemi buradan kurtaracak çözümler aranması gerekmektedir.

Hopfield bunun için kuantum mekaniğindeki spin camları ve yapay sinir ağları arasında benzerlik kurmuştur. Kısaca Spin camlarındna bahsedecek olursak kuantum mekanik bir sistemde bulunulabilecek belli kuantum seviyeleri bulunmaktadır. Manyetik bir sistemdeki dipol momentlerinin yönelimi için bu yukarı ve aşağı olmak üzere 2 olmaktadır. Bizim desenimizde de binary olarak bakarsak 0 ve 1 ağ üzerindeki temsilleri için bakacak olursak -1 ve 1 olmaktadır. Manyetik sistem içerisinde her bir yönelim belirli bir enerji gerektirmektedir ve bu enerjiler pozitif olup JijSiSj şeklinde bulunmaktadır. Enerjinin her zaman için pozitif olduğunu söylemiştik o zaman momentlerin yönlerinin aynı veya ters olmasına göre J değerleri negatif veya pozitif olmaktadır. Bunların bizim sistemimizdeki karşılıklarının ağırlıklarımız olduğu düşünülmektedir. Bu sayede bir sistem için enerjini maksimumda tutacak denge noktaları elde edilebilmektedir.

 

Hopfield Ağı Kullanarak Çağrışımlı Bellek Tasarımı

 

 

 

Uygulamamızda çeşitli desenleri hatırlayacak ve bu desenler haricinde verilen değerler için sistemin denge noktalarına yakınsayacak bir sistem elde edilmek istenmektedir. Ağımızın alacağı parametreler sistem üzerinde tanıtılması istenen desen sayısına bağlı olarak seçilmektedir. Küçük networkler üzerinde fazla sayıda desen tanıtmak mümkün olmamaktadır bunun yanında büyük bir ağ üzerinde ise istenenden fazla denge noktası elde edileceğinden her zaman için bizim hedeflediğimiz denge noktasına gitmeyebilir farklı denge noktalarında sonlanması mümkün olur.

Bu nedenle örneğimizdeki pattern büyüklüğü ve buradan elde edilebilecek belleğin öğrenme kapasitesi arasındaki ilişkiyi incelemekte fayda olmaktadır.

 

clip_image004

Network büyüklüğü ile kapasitenin ilişkisi

 

Hopfield ağı ile saklama kapasitesi arasında lineer bir ilişki olduğu söylenmektedir. Ancak bunların içerisinden fazlalıklı bellek olmasızın ne kadar desen saklanabileceğine aşağıdaki ifade ile ulaşabilmekteyiz.

clip_image006

 

Bizim örneğimiz için inceleyecek olursak.

Mmax = 3.88 olmaktadır yani yaklaşık olarak 4 deseni hatasız olarak tanıtmamız mümkündür. Ancak bu ilişki için verilen diğer bir ifade göre ise p > 0.38*n koşuluna uyması gerekmektedir aksi takdirde bellek anlamsızlaşmaktadır. Burada n bizim bir deseni temsil ederken kullandığımız piksel sayısı, p ise mümkün olan maksimum desen sayısını vermektedir.

 

 

 

Örüntülerin Belirlenmesi

 

 

 

Örüntülerin seçilmesi esnasında belirlenen net bir strateji olmamakla beraber birbirlerine benzerlikleri en az olan patterlar seçilmeye özen gösterildi. Burada bir patternda kenarlar seçilmişse diğerlerinde orta bölgeden desenler alınmaya çalışıldı ve sonuç olarak aşağıdaki gibi 5 farklı desen oluşturuldu.

clip_image008

 

 

 

               

Ağın Tasarımı

 

 

 

Ağın tasarımı sırasında belirli kriterler etkili olmaktadır bunların arasında kullanılan hücre modeli ve belleğin oluşturulması sırasında kullanılan ağırlıkların hesaplanma yöntemidir.

Uygulamada kullanılan desenler için 5x5 boyutlarda görüntüleri işleyebilmek için 25 adet nöron kullanılmaktadır ve bu nöronların modeli McCulloch-Pitts modeline uygun olarak seçilmiştir.

Ağırlıkların Hesaplanması

 

 

 

Ağırlıkların hesaplanmasında öncelikli olarak performansı etkileyeceği düşünülerek ağırlık matrisinin simetrik olduğu bilgisini ve diyagonal hatta tüm değerlerin sıfır olduğu göz önüne alınarak katsayılar hesaplandı. 

Uygulama içerisinde ağırlıklar her iki şekilde de hesaplandı ve önemli performans farkları gözlendi. Ağırlıkların iteratif olarak belirlendiği yöntem en iyi sonuçları vermektedir. Bunun nedenleri üzerine yorumlar yapılacaktır. Bu yöntemlerden daha az başarılı olan yöntem farklı örüntülerin iç çarpımlarının kullanıldığı yoldur. Bunun hesaplanmasında aşağıdaki ifade kullanılmaktadır.

clip_image010

 

Burada i ve j birbirine eşit olmamak üzere hesaplama yapılmaktadır. P değeri öğretilmek istenen desen sayısına xi  değerleri ise kullanılan desendeki değerlere karşılık düşmektedir.

 

Bu yöntemde görülen problem oluşturulan ağırlık matrislerinin belleklilik işlevini çok iyi yerine getirmediğidir. Buradan elde edilen ağırlıklar daha sonra uygulamada kullanıldığında artık belleklere veya farklı girişler için aynı çıkışlar sonlanmaktadır.

 

clip_image012

Ağırlıkların iç çarpımlar yoluyla hesaplandığında elde edilen sonuç

 

 

 

 

Yukarıda görüldüğü üzere sisteme verilen patternlar için başarılı sonuçlar alınamamıştır. Bunların nedenleri arasında bu şekilde elde edilen ağırlık matrisinde her deseni tanıtmanın mümkün olmaması olabilir. Belirli desen takımları için başarılı olabilmektedir. Bu da iç çarpımların toplamları sonucu elde edilen w değerlerinde desenler arasındaki korelasyonun sonuçlarındandır.

clip_image014

Ağırlık matrisi

 

Bu yöntem sonucu hesaplanan ağırlık matrisini görselleştirecek olursak aşağıdaki gibi bir sonuç elde edilmektedir. Burada matrisin simetrik yapısını görmek mümkündür.

Sisteme hatırlatılmaya çalışılan desenlerin haricinde bir desen verildiğinde ise bunu benzer şekilde verilen desenlerden birine benzetmektedir. Burada yatay çizgilerden oluşan desenin çekim alanının büyük olması sonucu verilen desenlerin buna benzetildiğini düşünmekteyim.

clip_image016

 

 

 

Diğer bir yöntem ise sonuçların oldukça başarılı olarak gözlenmiş olduğu iteratif bir denklem ile yakınsayarak bulunduğu yöntemdir. Ağırlıkların aşağıdaki denkleme uygun olarak hesaplanması saplanmaktadır.

clip_image018

 

Yukarıdaki ifade de α değeri 0< α<1 arasında seçilmekte olan bir değer olmaktadır. Bu sistemin yakınsama hızını etkileyen bir kriter olmaktadır.

 

Bu ifade sonucu belirlenen ağırlıkların görsel hali aşağıdaki şekildedir.

 

clip_image020

Denklem ile hesaplanmış ağırlıklar

 

Burada öğretilmek istenen desenler için w değerleri bulunmaktadır. Bu ifadede w değerleri başlangıçta [-1, 1] aralığından seçilmektedir. Daha sonra yakınsama sonucu kullanılacak değerler elde edilmektedir. Bu yöntemle verilen sistemlere ilişkin çıkışlar başarılı şekilde hatırlanmıştır.

 

clip_image022

Ayrıca bozularak verilen desenler için de sonuçlar aynı başarıda olmaktadır. Burada 1. Desenin bozulması sonucu elde edilen aşağıdaki görüntü ve karşılığında elde edilen sonuç aşağıda yer almaktadır.

clip_image024

Aynı zamanda farklı değerler için test edildiğinde farklı durumlarda oluştuğu gözlenmiştir. Burada görülen ilk desen için sistemin limit çevrime girmiş olduğudur. Aşağıdaki şekilde görüldüğü üzere sistemin 2 farklı denge noktası etrafında değişmektedir. 

clip_image026

Limit Çevrim

 

Ayrıca verilmiş olan her desen bizin bellekte anımsamamızı istediğimiz desenlerden olmayabilmektedir. Bunlara artık bellek denmektedir. Tasarladığımız sistemde öğretmekte olduğumuz desen sayısı haricinde hala bellek bulunmaktadır. Bu belleklerde belirli desenler için oluşmuştur. Aşağıda bunlardan birinin örneğini görmek mümkünüdür.

clip_image028

Artık bellek

 

Ayrıca oluşabilecek bir diğer durum ise öğretilen desenlerin simetriklerinin de denge noktası oluşturmuş olmasıdır. Bununda bir örneği aşağıda yer almaktadır. Burada elde edilen kareli desenin tersi bizim anımsatmak istediğimiz desenlerden birisidir.

clip_image030 

Tags: ,

Neural Networks | Yapay Zeka

Çok Katmanlı Yapay Sinir Ağları ile Sistem Tanıma

by Ordinaryus 5. February 2010 21:08

Perceptron ile alakalı yazımda belirli dönüşümler kullanarak sorunun çözülmesi gerekmekteydi ve sistem lineer olarak ayrıştırılamayan bir sistem olduğundan Rossenblat katmanı kullanarak sistemin ayrıştırılabilir bir hale getirilmesini sağlayacak uygun bir dönüşüm bulunması gerekmekteydi.

Biz bu sistemde öncelikli olarak böyle bir ekstra katman yaratmak ve bunların aktivasyon fonksiyonlarını belirlemek zorunda değiliz. Bunun çok katmanlı algılayıcımız zaten bizim için yapmaktadır. Bizim burada sistemin performansını etkileyecek doğru sayıda giriş çıkış, öğrenme katsayısı belirlemek gibi görevlerimiz bulunmaktadır. Bunun dışında sistem zaten eğitim sonrasında bu verileri ayırabilir duruma gelmektedir. Burada önemli kriterlerden biri sistemin sorudaki 25 noktaya özel olarak eğitildikten sonra ezberleme ile mi yoksa genelleme ile mi sonuca ulaştığını tespit etmektir.

Buradaki sistem içinde birçok katmanlı algılayıcı tasarlanmıştır. Sistemin 2 adet girişi noktaların koordinatlarını temsilen, 2 adet çıkış ise hangi sınıfa mensup olduklarını temsil etmek amacıyla konulmaktadır. Burada elemanların belirtilen eğitim kümesi için eğitilmesinden sonra giriş değerleri olarak da [-2 2] Aralığından rastgele noktalar seçilerek test yapılmıştır. Burada sistemlerin çıkışlarından her 2 değer içinde verdikleri tepkilerin büyük olarak görülmektedir. Burada en büyük olan değer seçilmeye çalışıldığından sistemden uygun çıkışlar alınmaktadır.

Aşağıda sıralı olarak verilmiş olan benzer bir dikdörtgene ait verilerden elde edilmiş olan bir test sınıfı için çıkışlar eğitim kümesindekine uygun olarak verilmektedir. Burada verilerin sıralı dolması giriş değerleri içinde benzer bir sırada verilmesinden kaynaklanmaktadır.

clip_image002    

Şekil 5: Sistemleri ayart etme başarısı

 

 

Çok Katmanlı Ağ ile Tanıma  

Çok katmanlı ağımızı ilk soruda da olduğu genellikle sınıflandırma problemleri üzerine kullandık ancak yapay sinir ağlarının pek çok işlevi ve farklı uygulama alanları da bulunmaktadır. Bunların başlıcalar tanıma,  sınıflandırma, eğri uydurma vb.

Yapay sinir ağları kullanılarak yapılan sistemlerin birine örnek verecek olursak. Genellikle görüntü işleme uygulamaları beraber kullanılmaktadırlar. Bunlar içerisinde face recognition uygulamaları fazlasıyla bulunmaktadır.

Burada sisteme eğitim amaçlı olarak belirli kişi veri tabanlarından örnek görüntüler yüklenmektedir. Bunların mümkün olduğunca farklı ortam şartlarında ve kişiyi en iyi temsil edecek şekilde seçilmesi önemli olmaktadır. Bu sistemin fazla sayıda fotoğraf ile eğitilmesi sonucunda yüz görüntülerine özel bir ortalama yüz elde edilebilmektedir. Yöntemlerden en bilineni ve uygulaması en basit olanı ortalama bir yüz (eigenface) elde etmek ve bunun üzerinden diğer kişilerin bu ortalamaya olan uzaklıklarından yerlerinin belirlenmesidir. Sistem bu şekilde eğitildikten sonra yeni bir görüntü geldiğinde ortam şartları (aydınlanma, face pose, gestures) değişmesine rağmen yüz için belirlenen featurlar eşleştirilerek eldeki veri tabanında en yakın sonucu geri getirmektedir. Burada sistemin tanıma kriterleri biraz daha sıkı tutularak yanlış sonuçlar alınması da engellenebilmektedir.

Bizim sistemimizde de farklı karakterler için eğitildikten sonra aslında sistemin girişlerine karşı verilen çıkışlara bakıldığından tasarlanan sistemde o karakteri temsil eden çıkışın değerinin en yüksek olması beklenmektedir. Bu şekilde sistem girilen veriye en yakın çıkışı veren sistemi bir bakıma bize geri vermiş olmaktadır.

Sistem tanıma problemi üzerine ilgilenirken yapmış olduğumuz ve başarıma etkiyen parametreleri tekrar inceleyelim. Burada ağın nasıl tasarlandığı, eğitim ve test kümelerimiz bizim için önemli olmaktadır.

Eğitim kümesinin seçiminde belirli bir başlangıç koşulu için takip eden işaretler ve bunların sistem üzerindeki hatanın minimumlanması ile ağ katsayılarını güncellemesi ile gerçeklenmektedir. Daha sonra bu verilerin devamlılığı sağlanır ancak bu kez aradaki geri besleme hattı ortadan kaldırılmaktadır. Ancak bu zamana kadar sistem öğrenildikten sonra başarılı bir şekilde veriler birbiri ile uyuşmaktadır.

clip_image004

Şekil 6: Sistemin Eğitim ve test düzenekleri

 

 

 

 

Eğitimde sistemin takip etmeye başlamasına kadar geçen süre içerisinde ağırlıklar sürekli güncellenerek sistem öğrenilmektedir. Daha sonra bu sistemin verileri ile uygun sonuçlar elde edilmeye başlanmıştır.

Test aşamasına gelindiğinde ise takip eden veri dizgisi kullanılmıştır ve bunlar üzerinden kıyaslama yapılıp geri besleme yolu ortadan kaldırılmıştır.

Sistemin tanınmasının başarımı belirlemede bir diğer kullanılan yöntem ise durum portresinin oluşturulmasıdır. Bu sistem için biz eğitim ve test süreçlerinde durum portrelerine bakacak olursak (şekil 7).

clip_image006

Şekil 7: Billings sistemi durum portresi

 

Billing Sistemi

Billing sistemleri dinamik bir sistem üzerinde katsayıların güncellenmesine dayalı olarak çalışan bir sistemdir ve sistemin taklit edilmesi için kullanılmaktadır.

Borsada özellikle zaman serileri analizi önemli bir rol oynamaktadır. Geçmiş verilerden gelecekteki değerleri tahmin edebilecek bir sistem yapılması üzerinde özellikle önemli çalışmalar sürmektedir. Bunların başında Monte-Carlo modeli, Markov serileri yer almaktadır. Yapay sinir ağları ile de sistemlerin eğer bir modele uydurabiliyorsak (Borsa örneğinde böyle bir model kurmak mümkün değildir.) bunun için gelecek dataların tahmin edilmesi üzerine bir sistem kurulabilmektedir.

Buradaki örneğimizde verilen sistem modeli için gelecek değerlerin tanımlanması sağlanabilmektedir. Öncelikle seçilen whitenoise genliği bizim için önemli olmaktadır. Bunun dışında sistemin başlangıç değerlerinin belirlenmesi de önemli bir kriterdir.

Uygulama çalışırken başarılı değerler yakalanabilmiştir ancak burada sistemin başarımında etkili parametrelerin seçimi önemli olmaktadır.     

clip_image008

Şekil 8: Sistemin eğitim fazı

Tags: , ,

Neural Networks | Yapay Zeka

Rosenblatt’ın Genlikte Ayrıştırıcısı

by Ordinaryus 5. February 2010 21:05

Problemin Tanımı

Burada verilmiş olan verilerin lineer ayrıştırılıp ayrıştırılamadığı kontrol edilecektir. Bunun sonucunda ortaya çıkan sistemin lineer ayrıştırılamaz olduğu durumda bunun üstesinden nasıl gelinebileceği üzerine çalışılıp uygulamalı olarak bu ayrıştırma işlemi gerçekleştirilecektir.

 

 

 

Verilerin incelenmesi

Öncelikle verilen verilerin önceki soruda kullanmakta olduğumuz Perceptron içerisinde eğitime tabi tutulması yoluyla lineer ayrıştırılıp ayrıştırılamayacağı anlaşılabilmektedir. Ancak belirli bir iterasyon değeri sınır konmaktadır. Bu sınır için önceki sorudan elde ettiğimiz deneyimlerle 100 değerini belirledik.

Verilen noktalar için 100 iterasyon sonucunda sonuç alınamadı demek ki veriler lineer ayrıştırılabilir değildirler. Bunu aslında görmekte oldukça kolaydır. Aşağıdaki grafite noktaların dağılımları açık şekilde seçilmektedir.

clip_image002

Bu tarz bir sistem 2 boyut üzerinde alışılmış şekilde bir doğru denklemi bularak ayrılamamaktadır. Bu durumda daha farklı şekilde probleme bakarak çözme yoluna gitmemiz gerekmektedir.

Burada boyut dönüşümü yaparken göz önüne almamız gereken parametreleri belirtecek olursak

  • ·         Farklı gruplara ait noktaların kohezyonu
  • ·         Boyut sayısı

Burada ilk olarak bahsedilmek istenen farklı noktaların dönüşüm sonucu lineer ayrıştırılabilir hale getirilmesinin yanında bunların birbiri ile olan yakınlıklarıdır. Lineer ayrıştırılabilir olmanın yanında eğitim sonucunda elde edilecek sonucun ne kadar test kümesinde iyi sonuç verdiği de önemlidir. İlk soruda da incelediğimize göre farklı gruplara ait noktaların birbirinden ayrık olmaları sonuçlarımız açısından iyi olmaktadır.

Boyut sayısı da önemli bir parametredir çünkü işlem yükü bununla orantılı olarak artmaktadır. Eğer işlerimizi 2 boyutta çözebilirsek bunun avantajları ayrı olmaktadır. Eğer daha üst boyutlara düşürmek gerekirse bu durumda dezavantajlar görülmektedir. Özellikle İmge İşleme uygulamalarında boyut sayısı fazla olmaktadır. Bunun düşürmek önemli olduğundan bu alanda çalışmalar yapılmaktadır. Bu çalışmalar arasında özniteliklerin daha uygun seçilmesinden, bu özniteliklerin oluşturduğu uzaydaki manifoldların nasıl boyut düşürme ile basitleştirilebileceği üzerine çalışmalar yapılmaktadır.

Bizim uygulamamız içinde noktaların 2 boyutta ve 3 boyutta nasıl lineer ayrıştırılabilir hale getirileceklerini inceleyeceğiz.

 

3 Boyutta Lineer ayrıştırılabilir yapı

Burada kullanabilecek çok farklı miktarda yapı vardır bunların içinden belirlenecek dönüşümün kolaylığı ve işlem yükü göz önünde bulundurulabilir.

Benim bu soru içerisinde kullandığım dönüşümde X ve Y koordinatlarını kullanarak clip_image004 şeklinde bir dönüşüm ile 3. Boyuta ait Z koordinatı elde edilmeye çalışılacaktır. Burada 2 boyutta ayrılamayan sistemin 3 boyutta ayrılabilir olmasında Z ekseninde var olan bir değişimle sağlamak mümkündür.

 

Burada clip_image006şeklinde bir yapı kullanılabilir.

 

Bunun sonucunda noktalarımızın 3 boyuta transform edilmiş halleri ise

 

clip_image008

Bu 3 boyutta dönüşüm yapmak için kullanılabilecek yollardan sadece birisidir. Bunun gibi pek çok dönüşüm ile sistemin ayrılması mümkündür.

Bu uygulamada ek olarak eklenen katmandaki nöronların aktivasyon fonksiyonunda X ve Y parametrelerinin korunması uygun görülmüştür. Bunun dışında yeni eklenen fazladan boyut için olan parametrede ise X ve Y koordinatının kareleri toplamı olacak şekilde seçilmesi uygun görülmüştür.

clip_image010
clip_image012
clip_image014

 

 

 

 

2 Boyutta Lineer ayrıştırılabilir yapı

İki boyutta lineer ayrıştırılabilirlik önceki yapıdakinin aksine boyut dönüşümüne gerek kalmaksızın sistemin lineer ayrıştırılmasını sağlamaktadır. Burada sistemler arasında bir dönüşüm bulunması diğer sistemlere daha zor olmaktadır. Bu nedenle önceki yöntem kadar tercih edilmez ancak EXOR problemi ve bizim örneğimiz gibi meşhur örneklerde 2 boyutta dönüşüm kullanılması daha kolay olmaktadır.

Burada benim önerdiğim dönüşüm kutupsal koordinatlarda clip_image016 gibi bir yapı uygulamaktır.

 

 

clip_image018

 

clip_image020

 

Bu dönüşüm sistem üzerinde uygulandığında ise;

clip_image022

Burada görüldüğü gibi sistemi 2 boyut üzerinde de ayırmak mümkün olmuştur ancak her zaman bu tarz bir dönüşüm bulmak mümkün olmayabilir. Burada sistemin kutupsal koordinatlara geçirilmesi ve değişkenlerinin açı ve uzaklık cinsinden yazılması sağlanmıştır.

clip_image024
clip_image026

 

Bu ifadeler ile dönüşüme sokulan dataların lineer olarak ayrıştırılmış hali:

 

clip_image028

Tags: , ,

Neural Networks | Yapay Zeka

Yapay Sinir Ağları OCR (Optical Character Recognition) Uygulaması

by Ordinaryus 4. February 2010 20:32

OCR Uygulaması

Bu soruda ele aldığımız konu aslında bir OCR (Optical Character Recognition) konusunun çok dar bir alanıdır. Burada yapılmakta olan aslında bir yazının mekaniksel veya yazılımsal olarak tanınması uygulamasıdır.

Görüntü işleme kullanılarak tespit edilen karakterler daha sonra kullanılacak olan ağa uygun olarak ölçeklendirilerek yeterli satır ve sütun sayısının elde edilmesi sağlanmaktadır. Bizim burada ilk etapta yapmakta olduğumuz belli karakterler için ağın bunları tanımasını sağlamaktadır.

Eğitim Kümesi

Bu uygulamada ağın eğitim süreci ve eğitimler sonucunda  test edilmesi işlemleri önemli olmaktadır. Burada yapay sinir ağlarımız belleklilik özelliğini kullanarak girişleri ilişkin belirli çıkarsamaları ağ içerisinde tutmaktadır.

Eğitim kümesi içerisinde ne kadar fazla veri olursa yapay sinir ağımız o eğitimi yapılan değer için daha iyi sonuçlar vermeye başlanacaktır. Burada sistemin ezberlemeden öğrenebilir ve genelleme yapabilir hale getirilmesi istenmektedir.

Burada minimum rakam olarak 6 sayısı verilmiştir. Sistemimi kod üzerinde hazırlarken bu değişken değeri parametre olarak saklanmıştır böylece farklı sayıda eğitim değeri içinde sonuçlar incelenebiliyor.

Burada önemli olan eğitim ve test kümesindeki karakterlerin orijinallerinden azda olsa bir miktar farklı olması gerekmektedir.  Bunu sağlamak amacıyla da yazdığım program içerisinde parametrik olarak ne kadar bir değişim istendiğini öğrenmekteyim. Daha sonra bu değişim miktarı kadar değeri o karaktere ait veri dizisi üzerinde değiştirmekteyim. Burada elde edilen değerler rastgele olarak ağa aktarıldığından daha rastgelelik üzerine kurulu bir sonuç elde edilmektedir.

 Parametrelerin Seçimi

Yapay sinir ağları konusunda beklide en şüpheli noktalardan biride kullanılan ağ içerisinde performansı etkileyecek çok fazla değer olmasıdır ve bunların hiçbir zaman en iyisi budur gibi bir söylemle tanıtılması mümkün olmamaktadır.

Bu nedenle öncelikle bizim sistemimizin parametrelerine ve bunların sonuçları nasıl etkilediklerine açıklama getirmeye çalışalım.

Düğüm sayısının artması ağın hatırlama yeteneğini arttırmakla beraber öğrenme işlemi süresini uzatmaktadır. Ama burada yapılacak olan uygun düğüm sayısında yapılan değişikliklerin incelenmesi olacaktır.   

 

 

Öğrenme oranı

Öğrenme oranının ağ performansı üzerinden önemli bir etkiye sahiptir. Küçük öğrenme oranı değerleri için eğitme işlemi uzun zaman alırken bu değerin büyütülmesi ile bu süreç daha kısa sürede gözlemlenmektedir. ,

Farklı Öğrenme Oranlar için sonuçlar:

clip_image002 clip_image004

 

clip_image006 clip_image008

Şekil 1: Iterasyon sayısının katmanların dengeye gelmesi üzerine etkisi

 

Burada görüldüğü üzere iterasyon sayısında belirli bir artma gözlenmiştir. Sistemin yüksek öğrenme katsayısı değerleri için osilasyona girmesini de gözlemlemeye çalıştım ama sistemin local minimumlarında takılı kalmadığından dolayı bu durum gözlenemedi. Öğrenme katsayısının azalması ile sistemin hedefe ulaşma süresi uzatmıştır.  Bu da yukarıda bahsettiğimiz şekilde beklenen bir durumdur.

 

 

 

Gizli Katman Sayısı

Gizli katmandaki sinir sayılarının arttırılması hem hafızada hem de CPUda yük artmasına sonuç olmaktadır. Gizli katman sinir sayısının az miktarda alınması ağın hatırlama yeteneğini olumsuz yönde etkilemektedir.

Sistemlerin karmaşıklığı arttıkça katman sayısını ve nöron sayısının arttırılması uygulanan yöntemlerdendir ancak bundan daha mantıklı yöntemle sonuç elde edilebilmektedir. Bunlar arasında aktivasyon fonksiyonlarını değiştirilmesi veya öğrenme oranı momentum terimi gibi etkileri devreye sokmak yer alabilmektedir.

Minimum Hata değeri

Minimum hata değeri işlem yapılırken toplam karesel  hatanın belirli bir değeri durdurması amacıyla tanımlanmaktadır. Aslında durdurma koşulu olarak ta kullanılabilmektedir. Bu değerin seçilmesi gereksiz iterasyonlardan sakındırdığı için önemli olmaktadır.

Katmanlardaki Nöron Sayıları

Katmanlardaki nöron sayıları da bizim için önemli olan kriterlerden bir tanesidir. Sistemlerin minimum katman sayısını bulmaya yönelik bir teoremin hesapladığı üzere bir yapay sinir ağları sisteminin çalışmasında sınıflandırma problemi için sadece 1 gizli katman ve çıkış katmanı yeterli olmaktadır ancak biz her zaman bu şekilde çalışmıyoruz. Genellikle bir katmandaki nöron sayısının çok fazla olmaması için katmanlarda yatay bir büyüme sağlanarak katman sayısı arttırılmaktadır.

Katman sayısını arttırmak bir çözüm olabileceği gibi her zaman bir katmanda fazla sayıda nöron kullanmamamızda gerekmemektedir. Sistemin çalışmasına yönelik olarak optimum sayıda nöron belirlenebilmektedir. Bunun sistemin öğrenmesine etkisi olduğu gibi öğrenme süresi ve işlem maliyeti de bundan etkilenmektedir. 

Birinci katmandaki farklı nöron sayıları için iterasyon ve hata değerleri:

clip_image010clip_image012

clip_image014clip_image016

Şekil 2: İterasyon değerleri ve hatalardaki değişim

 

Yukarıdaki grafiklerden de görüleceği üzere sistemin katmandaki nöron sayısı azaldıkça hatanın azalarak sistemin dengeye gelmesi için gerekli olan iterasyon sayısında artma meydana gelmiştir.

İkinci katmandaki farklı nöron sayıları için iterasyon ve hata değerleri:

clip_image018 clip_image020

clip_image022 clip_image024

Şekil 3: İterasyon değerleri ve hatalardaki değişim

 

 

 

 

Aktivasyon Fonksiyonu

Aktivasyon fonksiyonları eğitim kurallarımızı nasıl seçtiğimizle de alakalı olarak önemle belirlenmesi gereken bir kıstastır. Yapay sinir ağı sistemlerde bir düzenek eğer iyi çalışmıyorsa ilk olarak denenmekte olan şeyler ağ yapısı üzerinde değişiklikler yapılarak nöron sayısı veya katman sayısı ile oynamak olmaktadır.

Aslında aktivasyon fonksiyonları da giriş ve çıkış arasında ilişkiyi doğrudan etkilemekte olduklarından en önemli parametrelerden birisi olmaktadır. Sigmoid çoğunlukla tercih ettiğimiz bir aktivasyon fonksiyonu olmasına rağmen zorunlu olarak kullanılması zorunlu değildir. Bunun dışında kullanılabilecek başka fonksiyonlarda olmaktadır. Biz sigmoid fonksiyonun kullanmayı uygun gördük.

Durdurma Koşulu

Yapay sinir ağlarında eğitim işleminin durdurulması koşulu da sistemin performansı ve işlem süresi açısından önemli olmaktadır. Burada kullanılacak olan koşullar sistemin eğitimi eğer çok uzun sürecekse bir sınır iterasyon koşulu konulması ve belirli bir hata koşulu konulması gereklidir. Burada hata koşullarında grup uyarlamalı veya veri uyarlamalı olarak kullanılabilmektedir.

 

 

 

Veri uyarlamalı ve grup uyarlamalı sistemlerde belli başlı farklılıklar yer almaktadır. Veri uyarlamalı sistemlerde bağlantılar için gereken bellek az olmaktadır ve problemler büyüdükçe daha iyi çözüm üretilmesi sağlanmaktadır.

 

 

 

Bizim kullanmakta olduğumuz sistemde 35 adet giriş 7x5 karakterleri temsil amacıyla oluşturulmuştur. Bunların ilk etapta girişlerde 10 nörondan oluşmuş bir katmana alınmıştır bu sayı daha arttırılarakta denenebilir nöron sayısının artması sistemin öğrenme kabiliyetini arttırmakta ancak işlem yükünü ve bellek gereksinimini de beraberinde yükseltmektedir. Gizli katman sayısı 2 olarak seçilmiştir. Bunun seçiminde tek katmanda yeterli olabilmektedir ancak giriş katmanındaki nöron sayısını fazla tutmaktansa yatay olarak ağı genişletmek uygun olmuştur. Çıkış katmanında ise 3 farklı karakter için çalışıyor olduğumuzdan 3 değer kullanılmıştır. Burada sistemin kurulumunda sigmoid fonksiyonu seçilmiştir ve hata değerlerinin normal çıkması içinde eğitim kümesinde çıkış değerleri clip_image026,clip_image028,clip_image030  seçilmiştir. Burada yapılabilecek diğer bir durum sigmoid fonksyonumuzu (-1,1) arasında çıkış verecek şekilde kullanarak çıkış değerlerini 0 ve 1lerden oluşan vektörler halinde değil -1,1 değerleri kullanarak oluşturabiliriz.

 

 

 

   clip_image032clip_image034

clip_image036

Şekil 4: Bozulan piksel karşısında sistem başarımı

 

Burada yapılması amaçlanan harflerin bozulma miktarı arttıkça sistemin tanıma kabiliyetinin ne kadar değiştiğidir. Tanıma kabiliyeti 0-1 arasında kuantalanmıştır. Burada 1e yakın değerler gözlendiğinden bozulan bit sayısı fazla olsa da sistem doğru şekilde tanınabilmektedir. Sistemin resimleri bozması rastgele pixel değerlerinin seçilerek yapılmasından ötürü sistemin tanıma yeteneği beklendiği gibi düzgün azalmamakta ancak gene de hata yapıldığında sistemin diğer karakterlere benzetilmesi daha fazla olmaktadır. Sistemde tanınacak eleman sayısı arttırılacak olursa bu durumda benzer karakterler arasında oluşan hatalar daha fazla olacaktır.

Tags: ,

Neural Networks | Yapay Zeka

Perceptron (Genlikte Ayrık Algılayıcı)

by Ordinaryus 1. February 2010 22:35

Problemin Tanımı

Yapay sinir ağları uygulamalarının içerisinde hiç kuşkusuz en çok kullanılan özelliklerden biri Yapay Sinir Ağlarının sınıflandırıcı olmasıdır. Burada farklı özelliklere sahip noktaların tanımlı oldukları uzayda bir birinden lineer bağımsız gruplara ayrılmaları mümkün ise Yapay sinir ağları ile bu ilişki gösterilebilmektedir.

Burada 2 boyutlu bir düzlem üzerinde verilen 2 farklı gruptan noktanın lineer ayrıştırılması gerçeklenecektir. Bunun için kullanılacak olan sistem Genlikte Ayrık Algılayıcı (Perceptron) olacaktır.

Burada Perceptron yapısının oluşturulmasında ağırlıkların güncellenmesi için eğitim işlemi gerçekleştirilecektir. Uygun bir eğitim sınıfının seçilmesi problemimizin ilk koşullarından birisidir. Burada eğitim kümesi ile ilişkili bir test kümesi üzerinden testlerimizi gerçekleştirecek olduğumuzdan eğitimi ne kadar başarılı verilerle uygularsak test üzerinden de o derece iyi sonuçlar alacağızdır.

Bu sistemde soruda istenildiği üzere 14 eğitim verisi ve 6 test verisi kullanılacaktır. Bu eğitim verileri doğrultusunda başlangıçta belirlenen ağırlıkların bu 2 sınıfı lineer olarak ayıracak olan doğrunun denklemine ait katsayıları elde edilene kadar kullanılmaktadır.

Sistemin lineer ayrılabilir olması bu noktada önemli olmaktadır. Aksi halde sistem belirli bir iterasyon kısıtı konulmamış ise uygun katsayıları bulmak için sonsuza kadar eğitimden çıkamayacaktır.

Performansı Etkileyecek Kriterler

Burada sistemin başarısını etkileyecek birden çok kriter yer almaktadır. Bu kriterler genel olarak sistemin eğitim süresine, sınıflandırma başarısına etki etmektedir. Genel olarak eğitimden kaynaklanan ve algoritma işleyişinden kaynaklanan kriterler olarak 2 grupta toplanabilirler.

Eğitimle ilişkili kriterler arasından seçilen noktaların uygunlu, birbirleri ile olan kohezyonları, sistemde kullanılan eğitim kümesinin test kümesini ne kadar iyi temsil edebildiği gibi kriterler yer almaktadır.

Algoritma işleyişinde ise eğitim kümesindeki verilerin hangi düzende tekrarlandığı, başlangıç koşulları, öğrenme hızı gibi kriterler yer almaktadır. Bunların sistem üzerindeki etkileri de incelenecektir.

Örnek olarak sisteme  vermiş olduğumuz eğitim kümesi ve test kümesinden bir tanesini inceleyecek olursak.

clip_image002

 

 

 

Burada sınıflandırılması oldukça kolay bir sistem seçtik öncelikle programı test etme amaçlı olarak belirlenen bu eğitim ve test kümelerinde analitik düzlemin 2. ve 4. bölümleri burada kullanılmıştır.

Yazmış olduğumuz kodda kullanıcıdan ağırlık vektöründe değerleri rastgele olarak belirlemek için bir aralık istemektedir. Bu aralık içerisinde rastgele belirlenen değerler yardımıyla eğitime başlanmakta ve belirli sayıda iterasyon sonucunda sonuca ulaşılmaktadır. Başlangıç için seçmiş olduğumuz noktalar ‘*’ ve test amacıyla kullanılmakta olan noktalar ‘+’ aradan geçmekte olan doğru ile başarılı bir şekilde ayrılmaktadır. Burada başlangıç koşullarına rağmen iterasyon sayısı çok az bir miktarda kalarak uygun ağırlıklara ulaşılmaktadır. Burada problemin bu kadar kolay çözülmesinden öncelikle eğitim kümesinin bariz bir şekilde birbirinden ayrı olması sorumludur.

Başlangıç değerleri

Daha yüksek kohezyonlu veriler kullanılırsa başarımın azalması ve uygun ağırlıkların bulunması için geçen işlem süresi artacaktır. Bu tarz bir örnek incelendiğinde uygun katsayıların belirlenmesi için gereken işlem süresi de değişmektedir. 

clip_image004

Burada dikkat edilirse başlangıçta alınan ağırlık değerleri sonucunda elde edilen doğruda test noktalarından birine fazlasıyla yakın olmuştur burada test noktasının doğrunun diğer tarafına düşmesi de mümkün olabilirdi. Burada elde edilen doğrular belli bir aralıkta değişmektedir ve başlangıç koşulları ile alakalı olarak bunlardan herhangi biri olabilmektedir.

Eğitim için verilen noktalarımızı doğru olarak ayıracak şekilde ağırlıklar verildiğinden bunları sağlayan değerlerde eğitim noktalarına göre belirlenen bir aralıkta olacaktır. Aşağıda gösterilen resimde de gözüktüğü gibi koyu renkle gösterilen bölge bizim sınıflandırma sonucu çıkabilecek doğrularımızın içinde bulunacağı aralıktadır. Eğer test kümemizden bir eleman bu alana düşer ise o zaman hatalı sonuç alma ihtimalimiz ortaya çıkmaktadır.

clip_image006

Burada görülen aslında başlangıç değerlerinin sonucu ne derece etkilediğini de göstermektedir. Sonuçta çözüm kümemiz bu aralıkta olmak zorundadır ve buradan geçen her bir doğru bizim ağırlıklar olarak kutlandığımız katsayılarla ifade edilen birer doğrudan ibarettir. Başlangıç değerimizin bu çözüm kümesi dışında kalan alanda çıkması durumunda ise eğitim sırasında bu değerlerin uygun noktalara getirilmesi sağlanmaktadır.

Farklı başlangıç değerleri için sonuçlar incelendiğinde ise çözüm aralığımızın geniş olmasından ötürü bu örnekte iterasyon miktarı çok olmamaktadır. Ancak daha dar bir aralıkta uygun aralıkta değerler alabilmek için bu ölçüde bir değişim olacaktır.

Eğitim Kümesinin İşleniş Sırası

Eğitim kümesindeki verilerin her ne kadar farklı sınıflar için eşit miktarda alınması çalışılsa da bunun mümkün olmadığı durumlar olmaktadır. Bu durumda iyi bir temsil yapılamamış olabilir. Eğitim esnasında ise önemli olan nokta katsayıları günceller iken aynı gruba ait verilerin ardı ardına gelmemesi burada da bir rastgelelik olması istenmektedir.   

Farklı kombinasyonlarla random bir diziliş yapılması sağlandığında genel olarak iterasyon sayılarının diğer ardı ardına olan düzene kıyasla daha az olduğunu gözlemledim.

Öğrenme Hızı

Öğrenme hızı sistemimizin eğitim esnasında ağırlıkları güncellerken kullanmakta olduğu bir değerdir. Bu değer [0,1] aralığından seçilmektedir. Bizde bunun sistem performansı üzerindeki etkilerini inceleyerek gözlemleyeceğiz.

Öğrenme hızının sistem üzerindeki performansını incelemek için en uç değerler üzerinde inceleme yapmakta fayda olacağı açıktır. Bu durumları inceleyecek olursak eğitim kümemize verilen değerler sonucu beklentimiz eğimi -1e yakın bir değerde elde etmektedir. Demek ki eğimi 1 olan bir doğruyu temsil edicek şekilde başlangıç koşulları belirlersek bu durumda iterasyon miktarının artacağı açıktır. Burada farklı öğrenme hızları için inceleme yapacak olursak.

 

 

 

Egitim Katsayısı

Iterasyon Sayısı

Ağırlıklar

0.05

10

-0.7000   -0.7500    0.0500

0.10

5

-0.8500   -0.6500   -0.0500

0.15

5

-1.1500   -0.9500    0.0750

0.20

3

-1.3000   -1.2000   -0.1000

0.25

4

-1.7500   -1.6250     0.0000

0.30

2

-1.9000   -1.5500   -0.3000

0.40

2

-1.8000   -1.4000     0.0000

0.50

2

-2 .0000  -2.0000     0.0000

0.60

2

-2.2000   -2.6000     0.0000

0.70

2

-2.4000   -3.2000     0.0000

0.80

5

-4.2000   -4.2000    1.2000

0.85

5

-4.4000   -4.5250    1.2750

0.90

5

-4.6000   -4.8500    1.3500

0.95

5

-4.8000   -5.1750    1.4250

1.00

5

-0.8500   -0.6500   -0.0500

 

 

Burada görülen sonuç beklenenin biraz dışında bir sonuç olmaktadır. Bunun nedenleri incelendiğinde ise sonuç kümesi için var olan aralığın büyük olması verilebilmektedir. Bunun dışında iterasyon sayısının 0.5 civarında en uygun değerler almakta olduğunu görüyoruz. Ağırlıklar beklendiği gibi eğimi -1 olan bir doğruyu temsil edecek şekildedir ve verilen aralık içerisinde yer almaktadır.

Benzer işlemi daha dar bir aralıkta sonuç verecek bir eğitim kümesi için tekrarlarsak iterasyon miktarlarının artmakta olduğunu gözlemlemekteyiz. Bu şekilde daha sağlıklı olarak gözlem yaparak eğitim katsayısı ile olan ilişkiyi gözlemleyelim.

clip_image008

Yukarıdaki şekilde görüldüğü gibi yeni eğitim kümemiz için olan değerler daha dar bir aralıkta çözüm sunmakta bu nedenle iterasyon miktarları bu aralıkta olabilmek için daha fazla olmaktadır.

İterasyon miktarı ile öğrenme hızları değişimi arasındaki ilişki aşağıdaki grafikteki gibidir. Burada sistemin diğer değişkenlerden olabildiğince soyutlanabilmesi için başlangıç değerleri sabit olarak tutulmuştur.

clip_image010

 

 

 

Burada görüldüğü gibi sistemimize etkiyen parametreler içerisinde öğrenme katsayısı ve başlangıç değerleri önemli yerler tutmaktadır. Öğrenme katsayısını küçük seçmek öğrenme işlemi tamamlanana kadar geçen süreci uzatmakta. Büyük seçilmesi durumda ise bizim örneğimizde gerçekleşmemiş olsa da hedef nokta etrafından salınım yapılmasına neden olmaktadır.

clip_image012

Başlangıç değerlerini seçimi ise çözüm kümemiz içerisinde yer alacak olan bölgeye girebilecek bir doğru denklemine ait katsayıları elde etmede önem taşımaktadır.

Tags: , ,

Neural Networks | Yapay Zeka

MATLAB FUZZY LOGIC (FL) TOOLBOX

by Ordinaryus 2. August 2009 19:56

Matlab geliştirme ortamı olarak kullananlara oldukça kolaylıklar sağlamaktadır. Burada özellikle tasarlanmış olan GUI yardımıyla sistemi kurmak veya matlab içerisinde M-Filelar ile sistemi yaratma seçenekleri vardır. Ayrıca giriş çıkış ilişkilerini ve kuralları da görselleştirmesi önemli bir avantajdır.

5

Burada görmekte olduğumuz FL Toolbox içerisinde bahsettiğimiz editörler yer almakta aynı zamanda görsel olarak sistem açıklanmaktadır.

Öncelikle FIS (Fuzzy Interference System) editöründen bahsedicek olursak. Sistemin temel olarak yönetildiği panel budur. Burada giriş çıkış değişkenleri eklenebilmekte,. Fuzzy Setin türü belirlenmekte ve Lojik ifadeler tanımlanabilmektedir. Aynı zamanda menüdeki özelliklerle sistemin .fis uzantılı olarak kaydedilmesi veya var olan bir sistemin açıklanması sağlanmaktadır.

Buradaki giriş veya çıkışlar üzerindeki işlem yapmak, üyelik fonksiyonlarının tiplerinin belirlenmesi ve bulanıklaştırılarak sözel değişkenlere dönüştürülmesi sağlanmaktadır. Function editörü aşağıdaki gibi bir arayüze sahiptir.

6 

Buradaki gibi üyelik fonksyonları oluşturulduktan sonra kural tabanının yaratılması için ise rule editör bulunmaktadır. Burada girişlerle çıkışlar arasında mantıksal ilişkiler IF-ELSE kalıplarında yaratılmaktadır.

7

Ayrıca elde edilen sonuçların görüntülenmesi içinde kuralların ve giriş çıkışların görülebileceği birer arayüz hazırlanmıştır. Bunlarda Rule Viewer ve Surface Viewer olarak adlandırılmıştır.

Bulanık mantık editör haricinde M-Filelar üzerinden de kod yazarak kontrol edilebilir. Öncelikle FL Toolbox ile yaratılmış .fis uzantılı bir dosyanın açılması gerekmektedir. Bunun için

>> readfis(‘isim.fis’)

Buradaki işlem sonucunda bize FIS yapısında bir nesne yaratılmaktadır ve bunun üzerinden sistemimize ait bilgilere ulaşabilmekteyiz.

8

>> evalfis(0.5,[girisler])

Bu fonksiyon sayesinde de giriş değerleri için olan çıkış matrisi elde edilmektedir. Bulanık elemanın input, output değerleri ile bunlar değiştirilmekte veya yeni üyelik fonksiyonları yaratılabilmektedir.

>> a = readfis(‘isim.fis’);

>> a.input(1).name='service';

>> a.input(1).range=[0 10];

>> a.input(1).mf(1).name='poor';

>> a.input(1).mf(1).type='gaussmf';

>> a.input(1).mf(1).params=[1.5 0];

>> a.output(1).name='tip';
>> a.output(1).range=[0 30];
>> a.output(1).mf(1).name='cheap'
>> a.output(1).mf(1).type='trimf';
>> a.output(1).mf(1).params=[0 5 10];
>> a.rule(1).antecedent=[1 1];
>> a.rule(1).consequent=[1];
>> a.rule(1).weight=1;
>> a.rule(1).connection=2;

Bunun yerine tekbir fonksyon ilede bilgileri girmek mümkündür.

>> a=addvar(a,'input','service',[0 10]); 
>> a=addmf(a,'input',1,'poor','gaussmf',[1.5 0]); 
Şeklinde de giriş ve çıkış fonksiyonları veya üyelik fonksiyonları yaratmak mümkündür. 

>> gensurf(a)

Bu komut sayesinde de giriş çıkış ilişkisinin görselleştirilmesi sağlanmaktadır.

Tags: ,

MATLAB | Yapay Zeka

Bulanık Mantık

by Ordinaryus 2. August 2009 19:50

Bulanık mantığın temelleri belirsiz anlatımı ve bunların belirli bir matematiksel model üzerine oturtularak açıklanmaya çalışılmasından doğmuştur. Buradan belirsizlik içerisinde olan değişkenler sözel olarak ifade edilmektedir.

1

Bu durumu bir örnekle açıklamak gerekirse insanların uzaklık algısını örnek verebiliriz. Bizim için yakınızdaki cisimler, uzaktakiler, çok uzaktakiler olmak üzere ayrılmaktadır. Genellikle içimizde benden 43cm uzaktaki kalem veya 566.2m uzaktaki elektrik direği demeyiz. Bu kavramları sözel değişkenlerle anlatma gereksinimi duyarız. Zaten algılarımız bizi bu kadar kesin sonuçlara ulaştıracak kadar da doğru bir şekilde çalışmamaktadır. Bize 1 metre yakınımızdaki nesneleri yakın olarak nitelendirip bizden 10metre uzaktakilere uzak dersek 110cm mesafedeki bir cisimle 990cm mesafedeki bir cisim uzak olarak mı nitelendirilmeli?

Bu gibi durumlarda bulanık değişkenlerde belirli sayısal değerlerle ne kadar uzak veya ne kadar yakın oldukları belirlenmekte. Bu amaçla sözel olarak nitelendirdiğimiz değişkenlerin bulanıklaştırma işlemine girerken aldıkları belirli değerler ve bu sözel değişkenler ise belirli üyelik fonksiyonları ile ifade edilmektedir. Sözel değişkenlerin sınırları ve fonksiyonları kuralları sayesinde bu değerler 0-1 arasında değerlerle ifade edilirler.

Üyelik fonksiyonları geometrik olarak aşağıdaki yapılarda olabilirler

· Üçgen Dalga

· Trapezoid

· Gauss işareti şeklinde olabilmektedir.

2

Bulanık mantık sistemlerde sistemin birden fazla giriş ve çıkışı olmakta bunun yanında giriş çıkış ilişkileri lineer olmamaktadır. Giriş ve çıkış sayıları sisteme etkiyen parametreler ve ulaşılmak istenen değerlerle ilişkilidir. Bunların artması bulanık sistemin kural tabanındaki koşulların sayısını etkilemektedir.

Birden fazla çıkışın bulanık sisteme etkimesinde gene sözel değişkenler arasında yer alan koşullar ve AND, OR gibi mantıksal işlemler yer almaktadır. Bunların giriş değerlerine uygulanması sonucu çıkışlar karar verilir.

IF kilo is şişman and boy is uzun then fizik is kapıgibi

Burada 2 giriş değerine karşı verilen çıkış görülmektedir. Kişinin ne kadar kilosu ve uzunluğu giriş değerlerinin bulanıklaştırılması sonucu sözel değişkenleri 0-1 arasındaki değerlerinden elde edilmektedir.

3

Burada görüldüğü gibi belirli bir giriş değeri için her bir üyelik fonksiyonunda karşılık geldiği nokta 0-1 arasında bir değerde olmaktadır. Bunların daha sonra kural tabanındaki kurallarla işlenmesi sonucu elde edilen çıkış değerleri toplanır. Burada elde edilen şekilde üst üste binmiş çıkış fonksiyonu değerleridir. Bu ifadenin tekrardan sayısallaştırılması için Defuzzyfication denen işlem gerçekleştirilir bunun için birden çok yol vardır bunlar,

· Çıkışın ağırlık merkezi olan noktanın bulunduğu konum

· Maksimum olduğu ilk değer

· Maksimum olduğu en büyük değer

· Maksimum olduğu değerlerin orta noktası gibi farklı şekillerde bulunabilir.

4

Defuzzification işlemi sonucu elde edilen sayısal değer bizim için çıkış değeri olmaktadır ve sistemimiz belirtilen giriş ve çıkışlar için bu değeri üretmiştir.

Bulanık bir sistemde tasarım yapılırken

· Üyelik fonksiyonlarının sayısına

· Üyelik fonksiyonlarının tipine

· Kural tabanında tanımlı kurallara

· Defuzzyfication için kullanılmakta olan yönteme karar vermek gerekmektedir.

Bulanık mantık için bakıldığından yapılan tasarımlar genellikle tecrübeyle oluşmaktadır. Bir sistem için yukarıda verilen değişkenlerin belirlenmesinin matematiksel kuralları bulunmaktadır. Bulanık mantığın zor yanlarından biride budur.

Bulanık işlemlerde çoğunlukla Mamdani kullanılmakta olduğundan anlatılırken bunla daha çok karşılaştık ancak bunun yanı sıra Sugeno tipi bulanık işlemlerde vardır. Aralarında çok temel farklar olmamakla birlikte giriş ve çıkışın Sugeno tipi fonksiyonda girişlerin lineer bileşimi şeklinde ifade edilmesi önemli ayrımlardan biridir.

Bulanık mantığın diğer sistemlerle karşılaştırılması ise aşağıdaki bir açıklanabilir.

· Gürültü içeren sistemlere dayanıklıdır

· Kurallar ve üyelik fonksiyonları deneyimler sonucu oluşturulmaktadır

· Performansı kolaylıkla arttırılabilir

· Öğrenme yeteneğinden mahrumdur

· Yeni kurallar ve üyelik fonksiyonları eklenebilir

· BM yaklaşımında üyelik fonksiyonlarının değişkenleri sisteme özeldir ve başka sistemlere uyarlanması zordur.

· BM kontrolörler doğrusal olmayan ve matematiksel olarak modellemenin zor olduğu sistemleri kontrol etmek için önemli bir alternatiftir

· Sistemlerin kararlılık, gözlemlenebilirlik ve kontrol edilebilirlik analizlerinin yapılmasında ispatlanmış kesin bir yöntemin olmayışı bulanık mantığın temel sorunudur

Tags:

Yapay Zeka

YSA - 5

by Ordinaryus 10. February 2009 00:30

 

Öğrenme işleminin hızını ve verimliliği birkaç değişkenin değerine bağlıdır bunlar: öğrenme oranı, momentum terimi, gizli katman sinir sayısı ve hata fark değişkenleridir.

·         Öğrenme oranının ağ üzerideki etkisi

Öğrenme oranının değeri öğrenme işleminin süresini belirlemede önemlidir.  Öğrenme işlemindeki adım sayısı öğrenme oranının arttırılmasıyla azaltılmaktadır.

 

·         Momentum teriminin ağ üzerindeki etkisi

Momentum teriminin katılması adım sayısında azalmaya ve öğrenme işleminin kısalmasına sebep olmaktadır. Momentum değer, yüksek alındığında ağdaki toplam hatanın sıfıra daha hızlı bir eğimle yaklaştığı gözlenmiştir.

 

·         Gizli katman sinir sayısının ağ üzerinde etkisi

Ara katman sinir sayısı öğrenme sırasında belleğe yük bindirmek ve işlemciyi yormak haricinde öğrenme işleminin dahi iyi yapılmasını sağlamaktadır. Bu nedenle ara katman sinir sayısı belirlenirken deneme yanılma yapılmaktadır.

 

·         Hata farkı değişkeninin ağ üzerindeki etkisi

Bunu tolerans olarak ta adlandırabiliriz. Tolerans arttıkça yapılan hatalar artmakta ağırlıkların hassasiyeti azalmaktadır. Fakat eğitimin süresini ve adım sayısını arttırmaktadır.

 

Backpropagation algoritması N parametre için N+1 boyutlu bir uzaydaki N değişkenli bir yüzey üzerinde gezinmekte ve hatanın minimum olduğu noktayı aramaktadır. Burada bulunulan noktanın her bir parametreye göre türevi tüm uzayda alınmaktadır. Daha sonra ağırlıklar güncellenmekte ve nokta eski noktaya yakın bir noktadan devam etmektedir. Fakat bu işlem çok uzun sürmektedir ve yüzey üzerinde daha hızlı gezebilmek için momentum katsayısı denilen kavramlar kullanılmaya başlanmıştır. Fakat bu da bellek ihtiyacı doğurmaktadır.

 

RPROP ALGORİTMASI    

            RPROP algoritması da backpropation mantığıyla hareket eden bir algoritmadır. Farkı diğer algoritmada olduğu gibi optimal değere ulaşmaya çalışırken optimum noktanın etrafındaki işaret değişikliklerini takip etmekte ve buna göre nokta etrafında osilasyona girmeyi önleyecek şekilde adımları güncellemektedir.

            Bu yöntem 3 önemli optimizasyon algoritmasının en avantajlı yönlerinin birleştirilmeye çalışılmasından doğmuştur. Bunlar gradyent düşüm modeli, backpropagation ve Levenberg-Marquardt optimizasyon kurallarıdır.

 

Böylece YSA serisinde yazdıklarımın sonuna gelmiş oldum. Yazın Nescafeye abanarak okudugum dokumanlardan sonra aldıgım notlardan oluşan bu dokumanlar sanırım giriş aşamasındaki insanlar için belli bir alt yapı oluşturmustur. Bundan sonra bende Yapay Zeka seruvenime PROLOG bakarak devam edeceğim. Öncesinde Yazdıgım Karar Ağaçları ve Expert System notlarınıda burada paylaşmayı planlamaktayım. Bu dokumanların oluşumunda okuduğum ve tavsiye edeceğim kaynaklarıda vermekte fayda görüyorum.

 

KAYNAKLAR
·         http://en.wikipedia.org/wiki/Adaptive_system
·         http://en.wikipedia.org/wiki/Backpropagation
·         http://ieee.uow.edu.au/~daniel/software/libneural/BPN_tutorial/BPN_English/BPN_English/
·         http://www.eee.metu.edu.tr/~alatan/Courses/Demo/BackPropagation.htm
·         http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html
·         http://www.learnartificialneuralnetworks.com/backpropagation.html
·         http://www.seattlerobotics.org/encoder/nov98/neural.html
·         http://www.neuromod.org/courses/connectionism1999/backpropagation/
·         http://gpdev.net/
·         “RPROP using natural gradient”, Christian Igel
·         Optimization of the Backpropagation Algorithm for Training Multilayer Perceptrons W. Schiffmann, M. Joost, R. Werner
·         http://europa.eu.int/en/comm/eurostat/research/supcom.95/16/result/node23.html
·         Average monthly liquid flow forecasting using neural networksC. Barbălată* and L. Leuştean**
·         http://en.wikipedia.org/wiki/Reinforcement_learning
·         http://www.yapay-zeka.org/modules/wiwimod/index.php?page=ANN&back=WiwiHome
http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/cs11/report.html

 

 

 

 

 

 

Tags: ,

Neural Networks | Yapay Zeka

YSA - 4

by Ordinaryus 10. February 2009 00:12
BACKPROPAGATION ALGORİTHM
 

Yukarıdaki gibi bir multilayer feedforward network kademeli yapıya sahiptir. Ağ yapısında en az bir gizli katman bulunmaktadır. Ve her kademe alt katmanlardan girişleri alıp bir sonraki ünite yollayan elemanlara sahiptir. Kademelerdeki nöronlar arası hiçbir bağlantı yoktur. Kademedeki nöron sayılarının belirlenmesi ayrı bir problemdir. Burada nöron sayısı arttıkça öğrenme artmasına rağmen süreç uzamaktadır.

Geri yayılım ağında hatalar, ileri besleme aktarım işlevinin türevi tarafından, ileri besleme mekanizması içinde kullanılan aynı bağlantılar aracılığıyla, geriye doğru yayılmaktadır. Öğrenme işlevi, bu ağda basit çift yönlü hafıza birleştirmeye dayanmaktadır.

Geri yayılımlı öğrenme yöntemi, türevi alınabilir etkinlik işlevlerini çok katmanlı herhangi bir ağa uygulayabilir. Delta kuralı gibi, buda sistem hatasını veya toplam hatayı azaltmaya dayalı bir optimizasyon işlevidir. Bu ağda girdi katmanlar üzerinde hesaplanarak ilerler ve çıkışta belli bir değer elde edilir ve bu değer beklenen değerle karşılaştırılarak belli bir hata bulunur ve bu hata geri besleme ile önceki nöronlar üzerinden başlangıca kadar taşınır. Toplam hata minimuma inene kadar bu işlem tekrarlanmaya devam eder. Bu işlemin nasıl gerçekleştiğini aşağıdan daha iyi anlayacağız. Örnekte aşağıdaki gibi üç girişli bir çıkışlı ve 1 tabaka gizli katmanı olan bir sinir ağı modelini kullanacağız.

 

Örnek bir sinir hücresinde verilen girişlere karşı ürettiği çıkışın nasıl olduğu gösterilmiştir. Yapay sinir ağlarını eğitmek için eğitim verilerine ihtiyaç vardır. Aşağıdaki şekilde x1 ve x2 eğitim verilerini oluşturmaktadır ve buna karşı bir z çıkışı beklenmektedir. Yapay sinir ağlarında girişlere karşı iteratif işlemler sonucu oluşturulan w değerlerinden burada tekrar bahsetmeyeceğim.

 

 

Giriş sinyallerinin çıktıları gizli katman nöronlarına gider burada gelen toplam sinyaller işlendikten sonra bir sonraki katmana aktarılır.

 

Son katmana aktarılır ve burada hata hesabı yapıldıktan sonra geri aktarım işlemi başlar.

 

Son katmanın çıkışı beklenen değerlerle karşılaştırılır ve elde edilen hata sisteme geri besleme olarak aktarılır.

 

Bu aşamada elde edilen hata değeri sistemde backpropagation metoduyla geri yollanır ve olası hatayı azaltmak için katsayılar güncellenir. Bunu yapmamızın sebebi gizli katman nöronların çıkışları ile ilgili verileri kullanamıyoruz. Bu sorunu gidermek üzere zaten geri yayılım metodu geliştirilmiştir.

 

Çıkış nöronunda ulaşılan hata gene ara katman ağırlık katsayıları kullanılarak bu kez tersi yönde ilerlemektedir böylece giriş nöronuna kadar işlem devam ettirilir ve buradan itibaren katsayılar güncellenmeye başlar.

 

 

Tüm nöronlarda hata fonksiyonu çalıştırıldığında başlangıç düğümlerinin ağırlıkları aşağıda belirtilen formülle güncellenir. Daha sonra bu güncellenmiş hali ile ağ üzerindeki tüm bağlantılar güncellenir.

 
 

NOT: Resimler yabancı bir kaynaktan alıntıdır. Ancak üzerinden uzun süre geçtiğinden kaynağı hayırlamıyorum
 

Tags: , ,

Neural Networks | Yapay Zeka

YSA - 3

by Ordinaryus 10. February 2009 00:06

 

DİNAMİK SİNİR AĞLARI

Dinamik sinir ağları nöronları ve bu nöronlar ile oluşturulan ağ yapısı, nöron içerisinde geribesleme yollarının ve bellek elemanlarının var olması dolayısıyla dinamik bir davranış göstermektedir.

Dinamik sinir ağlarında kullanılan nöronlar yapısal olarak sinaptik ve somatik olmak üzere iki ayrı parçadan oluşur. Sinaptik kısımda ayrık zamanlı bir transfer fonksiyonu gerçeklenir, somatik kısımda ise bir eğim kazancı ve bir aktivasyon fonksiyonu vardır.

Hata geriye yayma yöntemini bu modelde kullanırken sinaptik kısmı oluşturan fark denkleminin transfer fonksiyonunu bulmamız gerekir daha sonra en küçük kareler ile değişkenlerin kısmı türevleri yardımıyla yeni değerler elde edilir.

 

 

DANIŞMANLI ÖĞRENME

Yapay sinir ağlarından öğrenme 2 temel şekilde gerçekleştirilmektedir. Bunlardan ilki ve bizim daha yoğun olarak üzerinde duracağımız kısım danışmanlı öğrenme, diğeri ise danışmansız öğrenmedir.

Öğrenmenin nasıl olacağına Donald Hebb bir çözüm getirmiştir ve yapay sinir ağlarında öğrenme onun adıyla anılan bir kuralla açıklanmaktadır. Bu kuralda temel fikir iki sinir bağlantısı arasındaki ağırlık katsayısı sinirlerin aynı zamanda etkinleşmesine bağlıdır. Hebb sinir faaliyetlerini örnek alarak bunların hafızada basit bir yerde yerleşebileceğini varsaymış ve bu kurama göre sinirlerin birbirlerini ortaklaşa uyardıklarını ve bu uyarım sonucunda aralarındaki sinaptik bağlantı katsayılarının kendi etkinlikleri çarpımı oranında artacağını ortaya koymuştur.

Yapay sinir ağlarından bilgi nöronlar arasındaki ağırlıklarda depolanır. Bu işlevde öğrenme kısaca belirli işlevi yerine getirecek şekilde ağırlıkların düzenlenmesidir.  Bu ağırlıkların düzenlenmesinde pek çok metot denenmiştir bunları başlıca 2 guruba ayırabiliriz. Danışmanlı öğrenme ve danışmansız öğrenme.

Aşağıda önemli öğrenme kurallarından bir kaçı yer almaktadır.

 

 Hebb Kuralı

Eğer bir sinir başka bir sinirden giriş alırsa ve her ikisi de matematiksel olarak aynı işaretli ise sinirler arasındaki boyut kuvvetlendirilir.

 

Hopfield Kuralı

 Bu kural kuvvetlendirme ve zayıflatmanın derecesini belirleyebilmesi dışında Hebb kuralından farksızdır. Burada eğer istenilen çıkış ve girişin matematiksel işaretleri aynı ise bağlantı katsayılarını öğrenme oranında  arttır, tersi ise azalt demektedir.

 

Delta Kuralı

En çok kullanılan kurallardan birisidir. Bir sinirin gerçek çıkışı ile istenilen çıkışı arasındaki farkı azaltmak için giriş bağlantı güçlerini sürekli arttırmaya dayanır. Bu kural ağ hatasının karesini minimize etmek için bağlantı boyutlarını değiştirir. Hata bir önceki katmana geri çoğaltılır. Her bir zaman dilimi için bir hata şeklinde gerçekleşen geri çoğaltma işlemi ilk katmana ulaşıncaya kadar devam eder.

 

Eğimli İniş Kuralı

Bu kural delta kuralına benzer çünkü transfer fonksiyonunun türevi bağlantı ağırlıklarına uygulanmadan önce, delta hatasını düzeltmek için kullanılır. Bir ağın farklı katmanları için öğrenme oranları, öğrenme işleminin daha hızlı olmasını sağlamıştır.

 

Kohonen Öğrenme Kuralı

Bu kuralda da sinirler doğada olduğu gibi öğrenmek için elverişli durum veya ölçülerini güncellemek için yarışırlar. En büyük çıkış ile işlenen sinir, kazananı ilan eder ve komşularına bağlantı boyutlarını güncellemeleri için izin verir.

 

Danışmalı öğrenmede ise gerçek çıkış ile istenilen çıkış karşılaştırılır. Buradaki hata değerleri kullanılarak ağırlıklar öyle ayarlanır ki bir sonraki aşamada hata azaltılmaya çalışılır. Dayanışmalı öğrenmede yapay sinir ağları kullanılmadan önce eğitilmelidir. Yani gerçek verilerle karşılaşmadan önce olası durumlara hazırlıklı olmasını sağlayacak eğitim verileri kullanılır. Bu eğitim verilerine yakın girdiler geldiğinde hata az olmaktadır. Yapay sinir ağları böyle eğitilerek her türlü olası duruma karşı belirli veriler üretebilir hale gelmektedirler. Öğrenme aşaması bittiğinde yapay sinir ağları kullanılmaya başlayacağında katsayılar sabit kalır. Bazı ağ yapılarında ağ çalışırken çok küçük oranda eğitmeye izin verilir. Bunun nedeni eğitim kümesinin ayarlanmasının çok hassan olmasıdır. Eğitim kümesine fazla veri girilirse yapay sinir ağı ezberleme işlemi yapabilir. Bunun yanı sıra yeni öğrenilen kötü veriler öğrenilen verilerinde unutulmasına neden olur.

Tags: ,

Neural Networks | Yapay Zeka

Powered by BlogEngine.NET 1.5.0.7
Theme by Mads Kristensen

Ordinaryus Hakkında

Hayata gözlerini İzmirde açtı. 3 yaşında legolarla oynadı =) Küçük yaşta baskete başladı zaten başka sporlarla arası hiç olmadı. Orta okulda matematikle ilgilendi. Liseyi Karşıyaka Anadolu Lisesinde okudu. 

İTÜ Elektronik Mühendisliğinden 2010 yılında mezun oldu. Fizik bölümünde çift anadala kabul oldu lisans hayatına Fizikten devam etmekte. Koç Üniversitesinde Bilgisayar Mühedisliği Master programına kabul edildi ve akademik hayatının ilk adımlarını sevdiği bir alanda çalışarak atıyor. Fizik ve Bilgisayarın ortak noktalarını gördü ve bunları geliştirmek amacıyla çalışıyor.

Yazılımı sevdi.. Başlarda herşeyle ilgilendi web programlama da yaptı, sokette programladı yeri geldi ağ yönetimi ile uğraştı. Görüntü işlemeden keyif aldı Makine Öğrenmesi ve Örüntü Tanımada kendisini geliştirmeyi istemekte.

2008te MSP oldu belkide bu blogu yazmaya başlamasında en büyük etken=) Bu görevi 2 sene boyunca sürdürdü. Bir yandan 2008de EuroSkillsde Mobil Robotik alanında Türkiyeyi temsil etti. Ardından 2009da Kanada da tekrardan yarışmacı olarak bulundu. Artık bu alanda hakemlik yaparak ve Robotino hakkında öğrendiklerini paylaşarak faydalı olmaya çalışıyor. 

Yapay Zeka, Görüntü İşleme, Kuantum Mekaniği, İstatistik Mekanik ve Bilişsel Bilimlerle ilgili. Geceleri kafasına göre takılıyo. Sabahlarıda öğrencilik yapıyo =)

gibi gibi... 

 

Page Rank

Loading

Google Translate


Şuan ne okuyorum

Bilişsel Psikoloji

Singularity is Near


Ayrıca okuduklarımdan seçtiğim kitaplara buradan ulaşabilirsiniz..

Okuduklarımı üye olarak takip etmek için ise aşağıdaki RSS bağlantısını kullanabilirsiniz. Ayrıca bana kitapta hediye edebilirsiniz =)


CCL


Copyright © Ordinaryus Says That by http://www.vypro.org/ is licensed under a Creative Commons Attribution-No Derivative Works 3.0