Yapay Sinir Ağları Örnek Uygulaması

Başlatan eddar, 29 Aralık 2015, 19:01:00

eddar

Arkadaşlar Merhaba,

Yapay Sinir Ağları ile ilgili bir kaç örnek projeye ihtiyacım var
Bir problem üzerine onun matematiksel modeli  çıkarılmış ve bunun YSA yapısını kurup, öğrenme grafikleri vb. çıktılarını içeren örnek projelere ihtiyacım var.

Matlab örnekleride olur fakat ilk başta öğrenmek açısından qwiknet programı örnekleri daha iyi olacaktır.


Bir kaç tane böyle örnekler  buldum fakat YSA yapısı ve çıktı grafikleri üzerinde pek durmamış, çok yüzeysel anlatımlar var.

http://www.emo.org.tr/ekler/7dd0be2efb27309_ek.pdf

alicavuslu


eddar

Bu hafta sistemi kurmaya çalışacağım, spesifik sorum olursa buraya yazarım tekrar. Yazılan makale,bildiri,proje gibi bolca örnekler faydalı oluyor teşekkür ederim.

eddar

Alıntı yapılan: alicavuslu - 29 Aralık 2015, 19:56:58
Burdaki yazilar yardimcin olur. Takildigin yerde yardimci olurum...

http://www.alicavuslu.gen.tr/category/yazi/sinirsel/

Ali hocam, herhangi bir matematik modeli çıkarılmış bir problemin , hem formülü hem de giriş çıkış verilerini içeren bir örnek var mıdır elinizde.
İnternette matematik modeli verilmiş ve bu matematik modele göre de matris formatında input ve target değerleri içeren çok örnek yok malesef.

alicavuslu

#4
Matlab ile YSA eğitimini yapabildiğini varsayarsak aşağıdaki linkteki makalede 4 farklı dinamik sistemin ağ eğitimi gösterilmiştir. Çalışmada random sayılar ile girişle oluşturulmuştur. Farklı giriş değerleri ilede sen eğitimini yapabilirsin. Sadece giriş değerine uygun çıkış değerlerine oluşturmalısın.

http://www.alicavuslu.gen.tr/2012/03/01/neural-identification-of-dynamic-systems-on-fpga-with-improved-pso-learning/

Aşağıda da genel uygulamada giriş değerleri sinüs olarak alınmıştır.
http://www.alicavuslu.gen.tr/2014/02/14/yapay-sinir-aglari-egitiminin-gradyen-tabanli-ve-global-arama-algoritmalari-ile-fpga-uzerinde-donanimsal-gerceklenmesi/

eddar

Ali Hocam,

Çok kıymetli yayınlarınızı ve blog yazılarınızı okudum. Yaptığınız çalışmalar ve yayınladığınız makaleler, benim için şu an advance seviyede.

Örneğin; otomobil satış fiyat tahmini (internette çok örneği olduğu için yazıyorum)

Bunun için input parametreleri nelerdir bu parametrelerin ağırlıkları nelerdir, bu parametrelerle birlikte ortaya koyulan matematik model nedir. Ve atıyorum 7x100 lük input matrisi ve bu matematik modele göre 1x100 lük target matrisi içeren datalar olsa daha verimli olacaktır benim için. Bu verilere göre de ben kendim random olarak 4x100 lük input oluşturup sistemin iterasyon, öğrenme fonk. gibi değerleri değiştirip öğrenme eğrisindeki değişiklikleri görmek istiyorum. Değiştirdiğim parametrelerle hedef eğrisine ne kadar yaklaşıyorum ve uzaklaşıyorum gibi temel bilgileri öğrenmek istiyorum.

Sizin çalışmalarınızı örneklendirip bakabilmem için önce bu yollardan biraz geçmem gerektiğini düşünüyorum. Bu arada ilgilendiğiniz için de çok teşekkür ederim.

alicavuslu

O zaman şöyle düşüneceğiz. Kaç adet örnekleme ship olacağız? Daha sonra kaç adet çıkışa sahip olacaksın. Buna göre ağ çıkışını hesaplayacaksın. EXOR için düşünürsek 2 giriş ve 1 çıkışımız var. Bu durumda ağ yapımız 2-X-Y-Z-..-1 şeklinde olacak. Toplolojiyi istediğin gibi kurgulayabilirsin. S

K-L-M = 2-3-1 yapısında toplojimiz olsun.
Toplam gerekli ağırlık sayısı : KxL + K + LxM+M = 2x3 + 3+ 3x1 + 1 = 13

Bu durumda ağırlıklara rastgele W=rand(13) ile başlangıç depelerinşi atayaksın.

İkinci linkteki ornek 1 için devam edersek:

Giriş değerlerin U[n] ve Y[n]
Çıkış Değerin Y[n+1] olacak.

U = cos(2*pi*n/N) N= 100 ve n=1....100

U=[0,998026   0,99211   0,98228 ....]
Y=[1,5   1,45563   1,44324   1,41593   1,379892   1,335391   1,28356 ....

Matlab ile aşağıdaki şekilde bu değerleri oluşturabilirsin.

INPUT = cos(2 * pi *(1 : 100) / 100);
EX_1_OUT = EX_1_OUTPUTS(INPUT, 1.5, g_SAMPLE);

function EX_1_OUT = EX_1_OUTPUTS(INPUT, VALUE, g_SAMPLE)
EX_1_OUT(1) = VALUE;
for n_i = 2 : g_SAMPLE + 1
    EX_1_OUT(n_i) = EX_1_OUT(n_i - 1) / (1  +  (EX_1_OUT(n_i - 1)^2)) + (INPUT(n_i - 1)^3);
end


eddar

Şu an hem dediklerinizi yapıyorum hem de makalenizi okuyorum, takıldığım yer olursa yazacağım. Teşekkürler

eddar

Ali Hocam,

Öncelikle matlabte denemeler yaptım. XOR problemini çözdüm. iterasyon sayısını değiştirdim farklılıkları gördüm, aktivasyon fonksiyonunu farklı bir fonksyon seçince farklılıkları gördüm. Veriler üzerinde çeşitli normalizasyon formüllerini öğrendim (verileri 0 - 1 değerleri arasında normalize eden).  Öncelikle size teşekkür ederim.

https://polen.itu.edu.tr/xmlui/bitstream/handle/11527/5818/3202.pdf?sequence=1&isAllowed=y 

Buradaki makalede işi öğrenmek isteyenler için en temelden alınmış ve anlatılmış.

İnternette genelde tahmin örnekleri mevcut. İnput matris verilerini koyuyor matlabe (örn: 3x48) , ardında target matrisini koyuyor (örn: satış tahmin rakamları, 1x48 matris). Sonuçta ağı eğitiyor ve kendi test verilerini koyuyor gerçek değerlerle karşılaştırıyor sistem şu kadar iyi çalışıyor diyor makaleyi bitiriyor.

Hocam benim asıl istediğim gerçek bir problemi YSA da denemek istiyorum (matematik modeli olan bir problem).  Değişkenleri yerine yazdığımızda bize formülde sonucu verebilen. Ve bununla alakalı input matrisi ve target matrisine sahip bir örnek istiyorum hocam.

Örneğin, burada ( http://www.emo.org.tr/ekler/7dd0be2efb27309_ek.pdf ) gerçek bir problemin matematik modeli çıkarılmış ama matlabde deneyeceğim input ve target matrisleri yok.
İnput ve target matrisleri olan tahmin problemlerinin de matematik modeli yok.

Derdimi anlatabildim mi bilmiyorum hocam ama durum bu  : )  Bu arada bir problem üzerine YSA tabanlı bir sunum hazırlayacağım onunda vermiş olduğu stres ve öğrenme aşkı birleşince bunlar ortaya çıktı.

alicavuslu

Açıkçası verdiğin tezdeki çalışmaların detayı aşağıdaki linkteki kitapta mevcut.

http://www.kitapyurdu.com/kitap/yapay-sinir-aglari/54344.html&filter_name=yapay%20sinir%20ağları

Aslında benim sana verdiğim örnek tam istediğin şey. Sistem Tanıma adı altında geçer. Matematiksel bir modelin var. Bu sistem girişler ne olursa olsun matematiksel modeline uygun olarak davranır. Mesela sen cosinüs ile eğitim yaparsan ve sinüs ile test yaparsan sinüse uygun çıkış verecektir.

Verdiğim Matlab kodlarına gelelim. INPUT 1x100 luk bir dizi ve EX_1_out ise 1x101'lik bir dizi. Örnek sayın 100.

Bunu senin XOR koduna uyarlar isek.

Giriş 1 : INPUT
Giriş 2 : EX_1_out(1:100)
Cikis : EX_1_out(2:101)

Eğitimini bu parametrelere göre oluşturusan gerçek bir sistemin eğitmini gerçekleştirmiş olursun.

Döngün ise:

for n_i = 1 : iterasyon
   for n_j = 1 : 100

eddar

Hocam daha önceki yazınızdaki kodları tek tek debug bile yaptım , matrisleri kendim oluşturdum, çok faydalı oldu.

Fakat bana artık XOR probleminden daha çok endüstriyel veya daha büyük bir problem gerekiyor ben o yüzden farklı bir problem istedim. Aradığım şey gerçekten de tam olarak yazdığınız XOR örneği. Formül var, çıkışının ne olması gerektiğini biliyorum, matrisleri kendim oluşturuyorum ve sistemi eğitiyorum.

alicavuslu

#11
Ben sana tezdeki 4.1 denklemindeki sistemi çözdürmeye çalışıyorum.  Aslında sen EXOR'u eğiterek işi hallettin. Yapman gereken tek şey giriş ve çıkış matrisini değiştirmek. Problem olarak uğraşabileceğin en zor problemlerden biri. Büyük problemden kastın çok girişli bir sistem mi?

for n_i = 1 : iterasyon
   for n_j = 1 : 100
      X_1 = Giris_1(n_j);
      X_2 = Giris_2(n_j);
      Y = Cikis(n_j);

bluekid

Eğer Matlab dışı örnekler işinize yarar ise
bir bakın
http://fanntool.blogspot.com.tr/

eddar

Hocam yaptım uygulamayı ama yeterli gelmiyor artık, ve sunumda endüstriyel bir problem çözmem gerekiyor. Günlerdir makale,tez okuyorum 1 tanesinde bile matematik modeli ve eğittiği + hedeflediği + test ettiği martis datalarını bir arada veren 1 tane bile bilgiye denk gelmedim. Artık basit bir tahmin uygulaması sunacağım ve sunumda bu giriş parametrelerinin ağırlıklarını nasıl değerlendiriyorsun matematik modelin yok mu diye soru gelecek. Artık yavaş yavaş araştırmayı bırakıyorum.

alicavuslu

Bir ortak notkada buluşmamız lazım. Aşağıdaki denklemi verilen bir sistem modelinin çözümünü yapmaya çalışman senin için yeterli olacak mı? Yazdıklarından ben bunu anlıyorum.