Picproje Elektronik Sitesi

SERBEST BÖLGE => Programlama ve Algoritma => Konuyu başlatan: eddar - 29 Aralık 2015, 19:01:00

Başlık: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: eddar - 29 Aralık 2015, 19:01:00
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 (http://www.emo.org.tr/ekler/7dd0be2efb27309_ek.pdf)
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: alicavuslu - 29 Aralık 2015, 19:56:58
Burdaki yazilar yardimcin olur. Takildigin yerde yardimci olurum...

http://www.alicavuslu.gen.tr/category/yazi/sinirsel/ (http://www.alicavuslu.gen.tr/category/yazi/sinirsel/)
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: eddar - 29 Aralık 2015, 20:18:33
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.
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: eddar - 02 Ocak 2016, 18:52:15
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/ (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.
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: alicavuslu - 02 Ocak 2016, 19:04:56
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/ (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/ (http://www.alicavuslu.gen.tr/2014/02/14/yapay-sinir-aglari-egitiminin-gradyen-tabanli-ve-global-arama-algoritmalari-ile-fpga-uzerinde-donanimsal-gerceklenmesi/)
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: eddar - 02 Ocak 2016, 19:28:29
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.
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: alicavuslu - 02 Ocak 2016, 19:44:49
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

Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: eddar - 02 Ocak 2016, 20:01:27
Şu an hem dediklerinizi yapıyorum hem de makalenizi okuyorum, takıldığım yer olursa yazacağım. Teşekkürler
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: eddar - 03 Ocak 2016, 20:24:12
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 (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 (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ı.
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: alicavuslu - 03 Ocak 2016, 20:45:16
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 (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
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: eddar - 03 Ocak 2016, 20:54:48
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.
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: alicavuslu - 03 Ocak 2016, 20:57:17
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);
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: bluekid - 03 Ocak 2016, 21:05:46
Eğer Matlab dışı örnekler işinize yarar ise
bir bakın
http://fanntool.blogspot.com.tr/ (http://fanntool.blogspot.com.tr/)
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: eddar - 05 Ocak 2016, 00:22:56
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.
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: alicavuslu - 05 Ocak 2016, 09:03:17
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.

(http://i.hizliresim.com/lvvP2r.png) (http://hizliresim.com/lvvP2r)
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: eddar - 06 Ocak 2016, 10:58:54
Ali Hocam,

Bu formülün hangi problemi çözdüğünü,  katsayıların açıklamasını ,  k yerine ve y değerleri, u değerleri yerine yazdığımda bana sonuç bir sayı üretiyorsa (kendi matrisimi oluşturmak için) bunları bilirsem eğer sunumda bunu kullanayım.  İnput ve target matrislerini çıkarayım matlabde eğiteyim çıktı grafiğini sunayım.
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: alicavuslu - 06 Ocak 2016, 11:24:30
Öncelikle "Identification and Control of Dynamical Systems Using Neural Networks" makaleyi okumanı oneririm. Ne işe yaradığının detayı orada mevcut. Örnek 3.

Daha sonra giriş çıkış data setini oluşturacaksın. Bunun kodları daha öncede vermiştim. Aşağıdaki gibi olacak. Bu kodlar sana zaten giriş çıkış matrisini üretecek.

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

Eğitim kodu ise aşağıdaki gibi olacak.

clc, clear all, close all;

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

Inputs = [INPUT; EX_1_OUT(1 : 100)]';
Outputs = EX_1_OUT(2 : 101);

[sample_size input_size] = size(Inputs);

H_Layer_Cell = 10;
w_1 = rand(H_Layer_Cell, input_size);
b_1 = rand(H_Layer_Cell, 1);
w_2 = rand(H_Layer_Cell, 1);
b_2 = rand;
lamda = 0.5;

iterasyon = 1000;
for n_i = 1 : iterasyon
E_n(n_i) = 0;
for n_j = 1 : sample_size
hl_sum = w_1 * Inputs(n_j, :)' + b_1;
hl_out = logsig(hl_sum);
ol_out = hl_out' * w_2 +b_2;
%%
error = Outputs(n_j) - ol_out;
E_n(n_i) = E_n(n_i) + error^2/2;
%%
delta_b_2 = error;
delta_w_2 = error * hl_out;
%%
s = error * w_2 .* hl_out .* (1- hl_out);
%%
delta_b_1 = s;
delta_w_1 = s * Inputs(n_j, :);
%%
w_1 = w_1+ lamda * delta_w_1;
w_2 = w_2+ lamda * delta_w_2;
b_1 = b_1+ lamda * delta_b_1;
b_2 = b_2+ lamda * delta_b_2;
end
end

figure, plot(E_n)
Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: eddar - 08 Ocak 2016, 02:12:19
1 hafta gibi kısa bir süre içerisinde orta seviyelere geldiğime inanıyorum, en azından temel soruları geçtik, insan azmettiği zaman her şeyi başarabilir. Size de ayrıca teşekkür etmek istiyorum Ali hocam.

Artık sorularım biraz daha seviye atladı ve şu an çalıştığım nokta matlabde eğitim sonrası performans,trainin,regrasyon gibi grafikleri yorumlayabilmek. Aşağıda çıktılarını da koyduğum resimler benim üzerinde çalıştığım sistemin grafikleri ve şu an yorumlayamıyorum .

Makale ve tezlerde başarı oranı %98 hata oranı %1,5 gibi değerler veriliyor bu değerleri nasıl çıkartıyoruz.

(http://i.hizliresim.com/0mDzP8.jpg) (http://hizliresim.com/0mDzP8)

Not: Grafiğin dikey eksen değişkeni mse nin formülünü biliyorum.

(http://i.hizliresim.com/Z7d3rG.jpg) (http://hizliresim.com/Z7d3rG)



Aşağıdaki grafikte kırmızı ile gösterilen eğri, örnek datalar verdiğimde eğittiğim sistemin bana vermiş olduğu çıktı, yeşil eğri ise hedef grafiğim. (Aslında sistemim sanki iyi çalışıyor :)) Bu iki eğriyi bu şekilde karşılatırabiliyorum ama yukarıdaki grafikleri yorumlayamıyorum ve yüzdelik (%) hesap çıkaramıyorum.

(http://i.hizliresim.com/gZor40.jpg) (http://hizliresim.com/gZor40)

Not: Bu konu başlığı da yapay sinir ağlarına başlayanlar için çok güzel bir kaynak oldu.

Başlık: Ynt: Yapay Sinir Ağları Örnek Uygulaması
Gönderen: alicavuslu - 08 Ocak 2016, 21:33:24
Training dediğin senin eğitim dataları ile bulduğun parametreleri test ettiğindeki sonuçları gösterir. Test ise ağa hiç göstermediğin datalar ile test etmeni gösterir. R dediğin de özilintisini hesaplıyor gibi. Ama tam emin değilim.

Makaleler ve tezlerde doğru veya yanlışlıktan bahsediyor ise % değerler verir. Mesela senin elindeki data setinde 100 taneden 98 sini doğtu bilip 2 sini yanlış bilmesi gibi.

Senin yaptığına gelirsek eğer bu bir matematikse formüle dayalı bir işlem ise aslında senin 1-20 arasını değil en azından 1-40 arasını test etmen lazım.

Benden de bi not : YSA eğitimi data seti hazırlama ile ilgili en kısa zaman da bir doküman yazacağım... Farz oldu..