Matlab'da yapılan bir YSA ile XOR uygulaması daha önceden paylaşmıştım. Şimdi de başka bir örnek paylaşmak istedim. Matlab'da YSA uygulaması yapan arkadaşlara faydalı olması dileğiyle...
ÖZEL VEYA (XOR) problemi sahip olduğu doğrusal olmayan yapı sayesinde sınıflama ve modelleme algoritmalarının test edilmesi ve başarılarının ölçülmesinde önemli bir ölçüt haline gelmiştir. Doğruluk tablosu Tablo 1.1’de verilmiştir. Bu şekilden de anlaşılabileceği gibi basit bir doğru ile lojik 1 ve lojik 0 olan değerleri birbirlerinden ayrıştırılamamaktadır. Oysaki diğer lojik operatörler örneğin VE (AND), VEYA (OR) gibi işlemler bir doğru ile kolaylıkla sınırlanabilmektedir.
Tablo 1.1. XOR lojik operatörünün doğruluk tablosu
A |
B |
Y= A XOR B |
Y= A OR B |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
1 |
- a) XOR operatörü b) OR operatörü
Xor problemi için hata 0,03 ,lamda değeri 0,5 seçilmiştir . Problemin Matlab kodu şu şekildedir :
XOR Probleminin M-File Kodu:
input = [0 0; 0 1; 1 0; 1 1]; %giriş matrisi
output = [0;1;1;0]; %beklediğimiz değerler
bias = [-1 -1 -1]; %bias değerleri
hata=0.03;
lamda =0.5;
Ht =zeros(1,500);
m=1;
x=true;
t=0; %iterasyon sayıcı
weights = [0.341332 0.129952 0.570345 ;-0.115223 -0.923123 0.328932 ;-0.993423 0.164732 0.752621 ];
%w(1,1)-w(2,1)-w(3,1) eşik değerleri ,
%w(1,2)-w(1,3)-w(2,2)-w(2,3)girdi ağırlıkları,
%w(3,2)-w(3,3) ara katman ağırlıkları
while(x)
if(0.03<=hata)
out = zeros(4,1);
numIn = length (input(:,1)); %girişin satır sayısı
for j = 1:numIn
H1 = bias(1,1)*weights(1,1) + input(j,1)*weights(1,2)+input(j,2)*weights(1,3);
x2(1) = 0.5* (1+H1/(1+abs(H1)));
H2 = bias(1,2)*weights(2,1)+ input(j,1)*weights(2,2) +input(j,2)*weights(2,3);
x2(2) = 0.5* (1+H2/(1+abs(H2)));
x3_1 = bias(1,3)*weights(3,1) + x2(1)*weights(3,2) +x2(2)*weights(3,3);
out(j) = 0.5* (1+x3_1/(1+abs(x3_1)));
delta3_1 = out(j)*(1-out(j))*(output(j)-out(j));
delta2_1 = lamda*x2(1)*(1-x2(1))*weights(3,2)*delta3_1;
delta2_2 = lamda*x2(2)*(1-x2(2))*weights(3,3)*delta3_1;
for k = 1:3
if k == 1 % Bias
weights(1,k) = weights(1,k) + lamda*bias(1,1)*delta2_1;
weights(2,k) = weights(2,k) + lamda*bias(1,2)*delta2_2;
weights(3,k) = weights(3,k) + lamda*bias(1,3)*delta3_1;
else % k=2 or 3 input,
weights(1,k) = weights(1,k) + lamda*input(j,1)*delta2_1;
weights(2,k) = weights(2,k) + lamda*input(j,2)*delta2_2;
weights(3,k) = weights(3,k) + lamda*x2(k-1)*delta3_1;
end
end
end
Ht(1,m)= abs(output(j)-out(j));
hata=Ht(1,m);
t=t+1;
m=m+1;
end
if(0.03>hata)
x=false;
end
end
figure(1)
plot(Ht(1,:),'r');
figure(2)
plot(output(:,1),'r')
hold on
plot(out(:,1),'b')
M-File Kodunun Çıktısı
Hata değerlerinin matlab çıktısı Şekil 1.1 de verilmiştir. Hata 0,03 , İterasyon sayısı 55626’dır.
Şekil 1.1. Hata değerinin çıktısı
Beklenen çıktı ile sistemin çıktısının aynı grafikte gösteren matlab çıktısı Şekil 1.2’te verilmiştir.
Şekil 1.2. Beklenen çıktı ve sistem çıktısının grafiği
Matlab koduna göre ağın verdiği çıkış ve hata değerleri Tablo 1.2’de gösterilmiştir.
Tablo 1.2. XOR problemini öğrendikten sonra ağın ürettiği çözümler ve hata oranları
Durumlar |
Girdi 1 |
Girdi 2 |
Beklenen Çıktı |
ÇIKIŞ(OUTPUT) |
Hata |
1 |
0 |
0 |
0 |
0,025727 |
-0,025727 |
2 |
0 |
1 |
1 |
0,974568 |
0,025432 |
3 |
1 |
0 |
1 |
0,974217 |
0,025783 |
4 |
1 |
1 |
0 |
0.029999 |
-0,029999 |
'ysa, matlab, 'matlab ysa', 'yapay sinir ağları', 'ysa ile denklem çözümü', 'ysa 2 bilinmeyenli denklem', 'yapay sinir ağları 3 bilinmeyenli denklem, 'Geri Yayılım Yöntemi', 'Newton Yöntemi', 'Levenberg-Marquardt metodu', 'matlab ysa uygulamaları', 'yapay zeka', 'ysa uygulaması', 'artificial neual networks', 'or kapısı ve ysa', 'or gate ysa', 'veya kapısı matlab', 'or gate veya kapısı', 'ysa ile hava sıcaklığı', 'ysa ile tahmin', 'and kapısı ve ysa', 'and gate ysa', 've kapısı matlab', 'and gate ve kapısı', 'xor kapısı ve ysa', 'xor gate ysa', 'özel veya kapısı matlab', 'xor gate özel veya kapısı','iki girişli tek çıkışlı', 'sinüsoidal fonksiyon', 'sinüzoydal fonksiyon ysa matlab', 'iki giriş tek çıkışlı sinüsoidal fonksiyonun ysa uygulaması', 'matlab uygulamaları', 'ysa uygulamaları', 'yapay sinir ağı uygulamaları', 'Ali Osman Gökcan', 'Ali Osman Hoca', 'Ali Osman', 'ali osman matlab', 'ysa ile dc motor kontrolü'
--->>> YSA ile OR Kapısı Problem Çözümü için TIKLAYINIZ <<<---
--->>> Matlab'da Analitik Yöntem & Euler Metodu karşılaştırması için TIKLAYINIZ <<<---
--->>> YSA ile AND Gate Matlab Çözümü için TIKLAYINIZ <<<---