MATLAB Proje Fikirleri -1 | Türkçe Matlab Eğitimi

YAPAY SİNİR AĞI SİMÜLASYON PROJESİ

Yapay Sinir Ağı Simülasyon Projesi nedir ? MATLAB nasıl kullanılır ? MATLAB’de proje nasıl yapılır ? Yapay sinir ağı nedir ? Bu ve benzeri sorulara yanıt aradığımız Matlab proje fikirleri yazı dizisinin ilki olan Yapay Sinir Ağı Simülasyon Projesi adlı yazımızla karşınızdayız.

Başlayalım.

YAPAY SİNİR AĞI SİMÜLASYON PROJESİ İNCELEME

Yapay sinir ağı , aslında beyni simüle etmek için kullanılan bir girişimdir.Kullanıcılar giriş olarak say,p1,p2 ve p3 olarak girdiklerinde buna bağlı olarak çıkışların say,t1,t2,t3 olmasını program içerisinde beklemektedirler.Program sistemi test eder ve sonuç olarak etkiyi bizlere verir.Finalde etki beklenen sonuçla karşılaştırılır.

Bu program yapay sinir ağının temellerini anlamak ve bunu daha ileriki uygulamalarda nasıl kullanacağınızı göstermek adına yol gösterecektir.

Proje hakkında biraz daha detay bilgi vermek gerekirse ;

Giriş nodunda bayan ya da erkek olduğu resim ile tanımlanır , sunulur ve çıkış nodu kesinlikle eğer erkekse 0.0 , bayan ise 1.0 olmalıdır.

Bu şekilde ağ haberleşmeleri dış dünyayı anlamaktadır.

Sinir ağ teorileride biyolojik nöronların açığa çıkması ve simülasyonlara uygulanması fikri etrafında kesin bir sonuç oluşturmaktadır ve bu sebeple beynin simülasyonları yapılmaktadır.

Buradaki ilk önemli nokta beynin potansiyelini ölçmek için yeniden oluşturulan yapay sinir ağı komponentlerini anlamaktır.

İkinci önemli nokta ise simüle etmek beyin kadar karmaşık bir yapıdadır ve bunuda anlamamız gerekmektedir.

İnsan beyninin  yüz milyarlarca nöronlardan oluştuğunu biliyoruz.

Tipik yapay sinir ağları ise bin yapay nörondan daha fazlasından oluşmamaktadır.

Teoriye göre , yapay nöron diğer bir adıyla nod , önemli biyolojik elementlerin her birine karşılık gelir.Ve bu nodlar birbirine bağlanırlar.

Ardından normal olarak verilen sayısal değerler ‘-1.0’ (Maksimum tutma) ile ‘+1.0’ (Maksimum uyarma) arasında çok güçlü bağlar kurarlar.

Tüm değerler kabul edilebilir iki değer arasındadır ve daha önemli , yüksek değerler daha güçlü bağlantılar içerir.

Yapay nöronlar için fonksiyon transferi , bilgisayar simülasyonu ya da mikroçipler ile olsun ya da olmasın , nodların dizaynları ile inşa edilir.

Fonksiyon transferinin matematiksel gösterimi ise ; uzaysal ya da zamansal frekans terimleri ile ya da değişmeyen doğrusal zaman sisteminin giriş-çıkışları ile ifade edilir.

Yapay ve biyolojik sinir ağları arasındaki muhtemel en büyük fark  aralarındaki organizasyon yapısıdır.Yapay sinir ağlarının birçok çeşidi bulunmaktayken çoğu zaman benzer basit yapıya göre şekillendirilirler.Organizasyon içerisinde üç komponent bulunmaktadır ; Giriş nodlarının set edilmesi , saklı nodların bir ya da daha fazla katmanları ve çıkış nodlarının set edilmesi.

Giriş nodları bilgisinin anlaşılması duyu organlarına yakındır.Bilgi sayısallaştırılmış resim formunda olsun ya da olmasın kayıtlı değerler serisi ya da diğer herhangi bir form hakkında sayısal olarak gösterim yapılabilir.Ve bu durum da dahili datalara erişim imkanı sunar.

Bilgi , aktivasyon değerleri olarak sağlanır ve bu durumda her bir verilen nod numarasında daha yüksek numaralar daha büyük aktivasyonla sunulur.

Aynı insan nöronları gibi  , biyolojik nöronların aktivasyon değerlerini aktarmasının dışında , yapay nöronlar, bağlı nodlara bağlı aktivasyon değerini geçer ve aktivasyon içerir.

Dahili aktivasyon değeri alındıktan sonra bilgi ağ üzerinden geçer.Aktivasyon değerlerinin diğer bir nod’a geçmesinin ne kadar olacağını bağlantı sağlamlığı , transfer fonksiyonları ve kısıtlama/uyarım şartları belirler.

Her bir nod aldığı aktivasyon değerlerini toplar ve kendi aktivasyon değerine ulaşır ardından da ağ içerisindeki sıradaki nod’a geçiş yapar.Bu sebeple aktivasyon tek bir yönde akar.

Giriş nodlarından ve saklı katmanlar üzerinden , çıkış nodları aktif olana kadar akacaktır.

Eğer ağ düzgünce ayarlanmışsa , çıkışlar aynı yolla girişlere cevap verecek , etkileşime girecektir.

Örnek olarak , giriş nodunda erkek ya da kadın resmiyle cinsiyet tanıma işlemi yapıldığında , çıkış nodu eğer resimde erkek tanınırsa 0.0 , eğer kadınsa da 1.0 olacaktır.Bu yolla da zaten ağ haberleşmeleri dış dünyayı anlayabilmektedir.

türkçe matlab eğitimi

Peki Nasıl Öğrenirler ?

Ağ yapılarının yapısı , bağları ve aralarındaki ilişkileri açıkladıktan sonra nöral ağlarda öğrenmenin öncelik olarak bağlantı kuvvetlerini ayarlama sürecinin bir parçası olması sürpriz olmamalıdır.

Şu ana kadar anlatılan tipteki sinir ağları üzerinde en popüler olan öğrenme methodu sinir ağ teorisini öğrenmek için kullanılan algoritma  olan ‘algılayıcı’dır ve bu şekilde adlandırılmaktadır.

Algılayıcı isim olarak İngilizcede ‘Perceptron’ olarak adlandırılmaktadır.Perceptron , 1957 yılında Frank Rosenblatt tarafından Cornell Aeronautical Laboratuvarında icat edilen bir tür yapay sinir ağıdır.Lineer sınıflandırıcı adına ileri beslemeli sinir ağının en basit türü olarak düşünülebilir.

Perceptron ; ‘x’ gerçek değerli vektör girişini , ‘f(x)’ tek bir değerli çıktı değerine eşleyen ikili sınıflandırıcıdır.’w’ gerçek değerli ağırlıkların , ‘w.x’ nokta ürününün (burada sonuçları toplar) ve ‘b’ bias (herhangi bir giriş değerine bağlı olmayan sabit bir terim) vektörüdür.

‘F(x)’ (0 veya 1) değeri , ikili bir sınıflandırma durumunda , ‘x’ i bir pozitif veya negatif örnekle sınıflandırmak için kullanılır.Eğer ‘b’  negatifse , girişlerin ağırlıklı olarak kombinasyonu , |b| sınıflandırıcı nöronunu ‘0’ eşiğine itmek adına kullanılır.

Mekansal olarak bias karar sınırlarının konumunu değiştirir.Algılayıcı öğrenme seti doğrusal olarak ayrılabilir değilse , algılayıcı öğrenme algoritması sonlanmaz.

LabVIEW Blok Tanımı :

LabVIEW , text üzerine programlama yapısı olan programlara göre daha kısa zamanda dizayn ve dijital işleme analizlerini tasarlamanıza izin veren grafiksel bir programlama yapısına sahiptir.LabVIEW grafiksel programlara sanal araçlar denir.

Bu sanal araçlar data akış programlama konseptine dayanarak çalışır.Bunun anlamı ise , blokların ya da grafiksel komponentler data akışına bağlıdır ya da daha spesifik olarak tüm data ve inputların uygun olmasına bağlıdır.Bu bloğun çıktı verileri de daha sonra diğer tüm bağlı olan bloklara gönderilir.

Bir sanal enstrüman iki ana bileşenden oluşur ; bir ön panel ve bir blok şeması.Ön panel bir programın kullanıcı arayüzünü sağlarken blok diyagramı da grafik kodunu içerir.

Blok şemasında terminal ikonları , düğümler , teller ve yapılar bulunur.Terminal simgeleri bir ön panel ve bir blok şeması arasında verilerin değiştirildiği arayüzlerdir.

Ön panel ve blok diyagramı arasında ileri geri gidip , ön paneldeki giriş/çıkışları ve blok şemasındaki yapı bloklarını yerleştirerek sanal bir enstrüman tasarlanmıştır.

Bu yapay sinir ağında , blok diyagramı gerçek bir transpoz matrisi , düğümleri , telleri , yapıları vb. içermektedir.

Gerçek transpoz matrisi , gerçek sayıya sahip matrisi transpoze etmek için kullanılır.

Giriş matrisi bloğu besler ve çıktı matrisinin dönüşümü turuncu çizgide elde edilir.Varsa mavi çizgide de hataları gözlemleyebilirsiniz.Matris transpoz çıkışı , gerçek matrisi daha sonraki işlemler için 2D’den 2D dizisine dönüştüren başka bir bloğu besler.

Girişlerin beslenmesi ve ağırlıkların başlatılması , bloğun ilk aşamasında yapılır.Yani daha bu aşamada ilk iterasyon işlemi yapılır.İlk aşamadaki tüm hesaplamalar ve ağırlık girdileri , sistemi eğitmek için daha ileri işlem için ikinci aşamaya beslenir.İkinci aşamada elde edilen nihai sonuçlar ile iterasyonlar tamamlanır.

Öğrenme Algoritması :

Burada tek katmanlı bir algılayıcı için öğrenme algoritmasını açıklamaya çalışalım.

Çok katmanlı algılayıcılar için , geri yayılım gibi daha karmaşık algoritmalar kullanılmalıdır.Alternatif olarak , delta kuralı gibi yöntemler , eğer doğrusal olmayan ve farklılaşabilir durumda ise aşağıdaki seçeneklerde işe yarayacaktır.

Göreceğiniz öğrenme algoritmaları tüm çıkış nöronları için aynıdır.Bu nedenle de takip eden herşey tek bir nörona uygulanır.

İlk olarak birtakım değişkenleri tanımlamalıyız.

y = f (Z) , Z’ giriş vektörü için algılayıcıdan gelen çıktıyı gösterir.

‘b’ = Bias , örnekte olduğu gibi  0 alınır.

D= {(x1,d1),……..,(xs,ds)}  ‘s’ örneklerinin eğitim kümesidir ve burada ‘xj’ n boyutlu giriş vektörüdür.’dj’ algılayıcı bu giriş için istenen çıkış değeridir.

Düğüm değerlerini de aşağıdaki gibi gösterebiliriz.

Xj , i = Jth giriş vektörünün İth nod değeridir.

Xj , 0 = 1

Ağırlıklar , Wi vektörü ile temsil edilir ve bu ağırlık vektöründeki İth değeridir.Bu da giriş düğümünün değeri ile çarpılır.

Tüm giriş vektörlerine xj , n+1 =1 ile n+1 indeksi ek bir boyut eklenebilir.Bu durumda wn+1 öngerilim teriminin yerini alır.’W’nin zamana bağlılığını göstermek için , t zamanında ağırlık olan wi(t) yi kullanırız.

a = Öğrenme hızı , burada 0 < a <1 arasındadır.

Çok yüksek bir öğrenme oranı , ek adımlar atılmadıkça algılayıcıların periyodik olarak solüsyon etrafında salınmasını sağlar.

Girdilere uygun ağırlıklar uygulanır ve ortaya çıkan ağırlıklı toplam , ‘y’ çıktısını üreten bir işleve iletilir.

Öğrenme Algoritması Adımları

Yukarda tanımlı değerlerle birlikte , çıkışı hesaplayabiliriz.

İlk olarak , mevcut çıkış fonksiyonlarını hesaplayalım.

Yj(t) = f[w(t).xj] = f[w0(t) + w1(t)xj,1] + w2(t)xj,2+…..+wn(t)xj,n]

İkinci olarak ağırlıklarında uyarlanması için ;

Tüm nodlar için :   wi(t+1) = wi(t)+a(dj-yj(t))xj,i     0<i<n

Artık aşağıdaki gibi devam edebiliriz.

Program içerisinde dahili olarak yapılan w1,w2,w3,w4 ve eşik ağırlıklarını başlatınız.Ağırlıkların wi(0) ‘0’ ya da küçük bir rastgele değere ayarlanmasıyla ağırlıkların başlatılabileceğini unutmayınız.

‘D’ antreman setimizdeki ‘j’ örneklemi için , xj girişi (LabVIEW) programında girişler p1,p2,p3 ve p4 ve istenilen çıkış dj (program içerisinde t1,t2,t3 ve t4)

Program 5000 iterasyon içerisinde simüle edildikten sonra ağırlıklar güncellenir ve nihai bir ağırlık elde edilir.Bu da operasyon için uygun bir denklem seti verir.

İkinci adımda ;

Yineleme hatası dj-yj(t) , kullanıcı tarafından belirlenen hata eşiğinden daha az olana kadar tekrarlanır veya önceden belirlenmiş sayıda yineleme tamamlandı.Bu hata , istenen çıktıdan bir yineleme ile elde edilen çıktı çıkarılarak hesaplanır.Bu LabVIEW’in her iki aşamasında toplayıcı ve çıkarıcı bloklar olarak yapılmalıdır.

LabVIEW programında sistemi eğitmek ve sistemin öğrenmesini sağlamaktan sorumlu iki aşama bulunmaktadır.Herşeyden önce kullanıcı değeri girer.Bu değer , bir yinelemeyi tamamlayan ve yukarıda açıklanan tüm görevleri yerine getiren birinci aşamaya beslenir.Şimdi , birinci kademe ve güncellenmiş ağırlığının çıkışı p1,p2,p3 ve p4 kullanıcı girişleri ile birlikte ikinci kademe girdisi haline gelir ve böylece 4999 yineleme gerçekleşir.

Doğru çıktıların alınabilmesi adına iterasyon sayısının uygun bir seçiminin olduğuna dikkat edilmelidir.Ağırlıkları , girdileri ve eşiği kanıtlandıktan sonra , V ok düğmesine tıklayarak LabVIEW simüle edilir.5000 tekrardan sonra nihai sonuçlar güncellenir.

LabVIEW’a verilen p1,p2,p3 girişleriyle birlikte son sonuçları (w) -5384.2 , 2884.4 , 2692.95 olarak alacaksınız.

Son sonuçlar istenilen çıktıyı elde etmek adına MATLAB programı üzerinden ayarlanır.Burada çıktıyı h= -1 olarak almalıyız.

Program bir girdi grubu içerisinde çıktısının -1 olduğu şartıyla geliştirilmiştir.1 veya 0 kullanabilirsiniz ancak bu durumda başlangıç koşullarını ve yineleme sayısını değiştirmeniz gerekmektedir.

Bu numaradan başka bir çıkışınız olabilir.Örnek olarak , giriş turuncu , elma ve üzüm olarak verildiğinde çıkış turuncu kırmızı ve yeşil olabilir.

Test Adımları :

Matlabı bilgisayarınıza yükleyin

Matlabı açın

Boş IV seçeneğini seçin ve LabVIEW programını (Perp.vi) açın.

Girişleri 2 ve -2 arasında girin.Tüm boyutlar 4×1 matris olmalıdır.LabVIEW ön panelindeki sütunun dört noktasından başka herhangi bir veri giriş noktasına bile ilişkilendirilmediğine emin olunuz.Matris ölçüleri eşleştirilmelidir.Eğer giriş noktasını tıklarsanız , rengi beyaza dönüşecektir ve bu da matrisin boyutunu 5 olarak alacak ve bu durumda veri boyutunu uyumsuzlaştıracaktır.

1 ila 0.2 öğrenme hızını girin.Programı çalıştırmak için menü çubuğundaki oku (->) tıklayınız.

Son sonuçlar ekranın hemen altında elde edilecektir.Bu değerleri MATLAB koduna (perceptronopbipolar.m)’a girin ve istenen çıkışı elde etmek için programı çalıştırınız. H=-1

KAYNAK KODUNU İNDİRMEK İÇİN TIKLAYINIZ !

YAPAY SİNİR AĞI SİMÜLASYON PROJESİ SONUÇ :

Bugünki yazımızda Yapay Sinir Ağı Simülasyon Projesi adlı yazımızı sizlerle paylaştık.Bu proje MATLAB ile yapılmış olup , yapay ağlar kurmak ve yapay zeka eğilimine ilgili herkes adınadır.MATLAB projele örnek ve açıklamalarının ilki olan bu yazı dizisi ile eğlenceli ve bilgi dolu bir seri olması dileğiyle.

İyi Çalışmalar.

Bir cevap yazın

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.