(Eğitim/Hata geri yayılım)
Çalışmanın tümünü görmek için
burayı (YSAGeriYayilimAlgoritmalari.pdf - 270,39 kb) tıklayınız...
Özetçe
Bu çalışmada çok katmanlı ve ileri sürümlü bir YSA’ da geri hesaplama için iki algoritma yapısı incelenmiş ve aşama aşama bu algoritmaların özellikleri verilmiştir. Çalışma boyunca kullanımının kolaylığından dolayı MATLAB
TM programı kullanılmış ve algoritmanın kodları MATLABTM program dilinde yazılmıştır.
1. Giriş
Bu çalışmada özel-veya (EX-OR) işlevini gerçekleyen {2,1} yapısında sigmaoidal aktivasyonlu bir YSA’ nın geri yayılım ile eğitilmesi konusunda iki yöntem incelenmiştir. Yöntemler standart geri yayılım ve momentum geri yayılım algoritmalarıdır. YSA’ nın başlangıç parametreleri ağa rasgele olarak gösterilmiş ve giriş-çıkış örnekleri ağa rasgele olarak verilmiştir. Tüm çalışma boyunca maliyet fonksiyonu(Cost Function) olarak 4 iterasyon öncesine ait hataların karesel ortalaması kullanılmıştır. Maksimum iterasyon sayısı olarak 1000 değeri seçilmiştir. Şekil 1 ‘de incelenen YSA için ağ yapısı gösterilmektedir.
Şekil 1 :İncelenen YSA için ağ yapısı
YSA giriş ve çıkış katmanlarından oluşmaktadır ve YSA için gizli katman bulunmamaktadır. Giriş katmanı iki hücreden ve çıkış katmanı da bir hücreden oluşmaktadır. Tüm YSA için kullanılacak giriş parametreleri için eşitlikler denklem 1.1 - 1.5 arasında verilmiştir. Bu eşitliklerde W’lar kollardaki ağırlık parametrelerini, lar her bir katman için sıfırıncı dereceden bağımsız değişkenin katsayısını, X ise hali hazırda ağ girişinde bulunan giriş sinyalini göstermektedir.
1.1. Çok Katmanlı YSA İçin İleri Hesaplama
Çok katmanlı YSA’ da bir hücre için çıkış değerinin bulunması temel olarak üç aşamadan oluşmaktadır. İlk aşama olarak hücrelere giriş yapan kollardaki sinyaller ile bu sinyallerin yol aldığı kollardaki ağırlık katsayıları çarpılarak bir değer elde edilmektedir. İkinci aşama olarak elde edilen bu değer bir sabit sayı ile toplanarak sıfırıncı dereceden bağımsız değişkenin katsayısı denkleme dahil edilmektedir. Bu aşamada elde edilen değer ‘V’ sembolü ile gösterilmektedir. Son aşama olarak ise elde edilen bu değerler toplamı aktivasyon fonksiyonu adı verilen belirli bir fonksiyondan geçirilerek hücre çıkışı elde edilmektedir. Son aşama ile elde edilen değer ‘Y’ sembolü ile gösterilmektedir. Genel olarak sinüs ve kosinüs fonksiyonları elde etme kolaylığından dolayı sıkça tercih edilmektedir bununla beraber bu çalışma boyunca sigmaoidal bir aktivasyon fonksiyonunun kullanılması uygun görülmüştür. Çalışma boyunca kullanılan ve ileri hesaplama için gerekli olan eşitlikler denklem 1.6 – 1.11 arasında verilmektedir. denklemlerde kullanılan o hücre için kullanılan aktivasyon fonksiyonunu göstermektedir.
1.2. Çok Katmanlı YSA İçin Standart Geri Yayılım Algoritması
Çok katmanlı YSA’ da ileri hesaplama yöntemi ile bir tek iterasyon için bir YSA çıkışı elde edilmektedir. İleri hesaplama boyunca sistem parametreleri ile ilgili herhangi bir güncelleme ya da değiştirme yapılmamaktadır. Fakat sabit ,hiç değişmeyen, başlangıç değerleri ile eğitilen bir ağın tüm olası giriş değerleri için makul sonuçlar verememesi gerçeği bulunmaktadır. Dolayısı ile yolların ağırlık katsayılarının güncellenmesi ile bu tekdüze ağ yapısından uzaklaşılmaktadır. YSA için geri hesaplama aşamasında bahsi geçen bu nedenlerden dolayı belirli kurallara bağlı kalınarak parametre güncellemesi yapılmaktadır. Geri besleme için önerilen akış şeması şekil 2’de verilmiştir. Çalışma boyunca kullanılan ve geri hesaplama için gerekli olan eşitlikler denklem 1.12 – 1.18 arasında verilmektedir. Bu denklemlerde Ya sistem çıkışını, Yd istenen sitem çıkışını göstermektedir. Yd ile Ya arasındaki mutlak olmayan fark değerini belirtmektedir. son dört iterasyon için karesel ortalama hatayı vermektedir. değeri sayesinde ağ yapısı çıkışındaki hata, belirli bir eşik değerindeki hata seviyesinden aşağıya düştüğü zaman sistemin eğitilmiş olduğu sonucuna varılmaktadır. δ lar ilgili katman için gradyent sinyallerini göstermektedir. ağırlık parametrelerinin güncellenme miktarını saklamaktadır. Öğrenme katsayısı olarak isimlendirilen ise parametresinin oluşturulması sırasında kullanılmaktadır ve parametresinin güncelleme değeri için bir sınırlayıcı görevi görmektedir.
Şekil 2 :İncelenen YSA için geri besleme
| 1.2.1. Standart Geriye Yayılım Algoritması İçin Yazılan Program Kodları | Gizle | Göster |
|
clc;
clear all;
close all;
DUYARLILIK=0.00001;
%W1=[-0.88 0.05 ; -0.02 0.08]
%W2=[0.07 ; -0.06]
%TETA1=[0 ; 0]
%TETA2=[0]
W1=rand(2)/10; % Giriş katmanı için rastgele ağırlık parametreleri
W2=rand(2,1)/100; % Çıkış katmanı için rastgele ağırlık parametreleri
TETA1=rand(2,1)/100; % Giriş katmanı için rastgele sabit sayılar
TETA2=rand(1)/100; % Çıkış katmanı için rastgele sabit sayılar
GIRISLER=[1 1 ; 0 0 ; 0 1 ; 1 0]; % İkili sayı fırmatında giriş değerleri
YDLER=[0 0 1 1]; % İkili sayı fırmatındaki bu giriş değerli için arzu edilen çıkış değerleri
NU=1; % Öğrenme katsayısı
i=1;
while( i<1000 ) % Toplamda 250 tur (epoch) için
for sayi=1:1:4
V1=W1'*GIRISLER(sayi,:)'+TETA1; % Formüllere uygun olarak gerekli denklemler
% işleniyor ve sonuçlar elde ediliyor
Y1=logsig(V1);
V2=W2'*Y1+TETA2;
Y2=logsig(V2);
Ya=Y2;
e(i)=YDLER(sayi)-Ya;
if(i>=4)
EPSILON(i)=(e(i)^2+e(i-1)^2+e(i-2)^2+e(i-3)^2)/4;
% Son dört iterasyon için hataların karesel ortalama değeri elde ediliyor.
plot(EPSILON);
% Her aşama için bulunan hata değerleri ve karesel ortalama hata değerleri ekrana bastırılıyor.
end
delta2=e(i)*logsig(1-logsig(V2)); % Geri hesaplama için delta değerleri bulunuyor
deltaw2=NU*delta2*Y1;
yeni_W2=W2+deltaw2; % ve bulunan bu delta değerleri yardımıyla yeni ağırlık
% katsayıları belirleniyor.
delta1=logsig(1-logsig(V1)).*(delta2*W2);
deltaw1=NU.*(delta1*GIRISLER(sayi,:));
yeni_W1=W1+deltaw1;
W1=yeni_W1; % Bulunan yeni ağırlık katsayıları güncelleniyor.
W2=yeni_W2;
i=i+1;
end
end
|
|
1.3. Çok Katmanlı YSA İçin Momentum Geri Yayılım Algoritması
Çok katmanlı YSA’ da bir başka geri yayılım yöntemi olan Momentum geri yayılım algoritması aslında işleyiş bakımından standart geriye yayılım algoritmasından çok büyük farklılıklar barındırmamaktadır. Standart geri yayılım algoritmasına ek olarak ağırlık katsayılarının güncellenebilmesi için alfa (α) ve beta (β) gibi iki değere gereksinim duyulmaktadır. Algoritmayı standart geri yayılımdan ayıran en önemli özellik ise ağırlık katsayısı güncellemesi yapılırken iki iterasyon öncesine ait ağırlık katsayısı değerlerinin de kullanılmasıdır. Momentum geri yayılım algoritması için güncelleme eşitlikleri denklem 1.19 – 1.20 arasında verilmiştir.
| 1.3.1. Momentum Geriye Yayılım Algoritması İçin Yazılan Program Kodları | Gizle | Göster |
|
clc;
clear all;
close all;
DUYARLILIK=0.00001;
W1=[-0.88 0.05 ; -0.02 0.08]
W2=[0.07 ; -0.06]
TETA1=[0 ; 0]
TETA2=[0]
% W1=rand(2)/10; % Giriş katmanı için rastgele ağırlık parametreleri
% W2=rand(2,1)/100; % Çıkış katmanı için rastgele ağırlık parametreleri
% TETA1=rand(2,1)/100; % Giriş katmanı için rastgele sabit sayılar
% TETA2=rand(1)/100; % Çıkış katmanı için rastgele sabit sayılar
GIRISLER=[1 1 ; 0 0 ; 0 1 ; 1 0]; % İkili sayı fırmatında giriş değerleri
YDLER=[0 0 1 1]; % İkili sayı fırmatındaki bu giriş değerli için arzu edilen çıkış değerleri
NU=1; % Öğrenme katsayısı
i=1;
beta=0.1; % Momentum geri yayılımın tipik özelliği olan alfa ve beta katsayıları
alfa=1;
while( i<1000 )
for sayi=1:1:4
V1=W1'*GIRISLER(sayi,:)'+TETA1;
Y1=logsig(V1);
V2=W2'*Y1+TETA2;
Y2=logsig(V2);
Ya=Y2;
e(i)=YDLER(sayi)-Ya;
if(i>=4)
EPSILON(i)=(e(i)^2+e(i-1)^2+e(i-2)^2+e(i-3)^2)/4;
% Son dört iterasyon için hataların karesel ortalama değeri elde ediliyor.
plot(EPSILON);
% Her aşama için bulunan hata değerleri ve karesel ortalama hata değerleri ekrana bastırılıyor.
end
delta2=e(i)*logsig(1-logsig(V2));
deltaw2=NU*delta2*Y1;
yeni_W2=W2+deltaw2;
delta1=logsig(1-logsig(V1)).*(delta2*W2);
deltaw1=NU.*(delta1*GIRISLER(sayi,:));
yeni_W1=W1+deltaw1;
if( i>2 )
% Momentum geri yayılım kullanılarak ağırlık parametreleri güncelleniyor
W1=deltaw1 + alfa*W1_SAKLA(:,:,i-1) + beta*W1_SAKLA(:,:,i-2);
W2=deltaw2 + alfa*W2_SAKLA(:,:,i-1) + beta*W2_SAKLA(:,:,i-2);
W1_SAKLA(:,:,i)=W1;
W2_SAKLA(:,:,i)=W2;
else
W1=yeni_W1;
W2=yeni_W2;
W1_SAKLA(:,:,i)=W1;
W2_SAKLA(:,:,i)=W2;
end
i=i+1;
end
end
|
|
2. Sonuçlar
Çok katmanlı YSA’ da geri yayılım kullanılarak ağın makul parametreler ile çalışması sağlanmaktadır. Böylece başlangıçta uygun olmayan değişken değerleri geri yayılım algoritması sayesinde kolayca makul değerlere çekilebilmektedir. Standart Geri Yayılım ve Momentum Geri Yayılım Algoritmaları ile elde edilen hata grafikleri Şekil.3’te verilmektedir. Grafikten Momentum geri yayılım algoritmasının başarımının standart geri yayılım algoritmasına göre daha iyi olduğu söylenebilmektedir. Fakat bununla beraber momentum geri yayılımda herhangi bir iterasyon aşamasında hatalı bir güncelleme yapılırsa, sistem boyunca bu hatanın etkisi hatalı geri beslemeden dolayı görülmektedir.
Şekil 3 :İncelenen YSA için farklı algoritmaların karesel ortalama hata değerleri
Çalışmanın tümünü görmek için
burayı (YSAGeriYayilimAlgoritmalari.pdf - 270,39 kb) tıklayınız...