Yapay Sinir Ağları Örnek Uygulaması

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

eddar

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.

alicavuslu

#16
Ö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)

eddar

#17
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.



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





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.



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


alicavuslu

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..