Geriye Yayılım Algoritması

Geriye yayılım algoritması, ağa gösterilen o anki veri setinden elde edilen hata değeri ile eğim düşüm bilgisini hesaplayarak parametre güncelleme işlemini yapmaktadır.

aa

Denklem (1)’de ağa eğitimi esnasında giriş olarak verilen veri setine ilişkin ağ çıkışında elde edilen hataların karelerinin toplamı ile elde edilen ölçüt fonksiyonunun (E) en küçük değeri aldığı noktanın Denklem (2) ile verilen kural ile yinelemeli olarak bulunabilmesine dayalıdır. Denklem (2)’de J Jacobian matrisini, Φ ise güncellenecek ağ parametresini göstermektedir .

Adsız(1)

Adsız(2)

YSA için ağ parametre güncelleme işlemi aşağıda verilen öbek şeması ile gösterilmiştir.

de

Şekilde gösterilen v değerleri Denklem (3)’deki gibi hesaplanır. Çıkış katmanındaki eşik parametrelerinin güncelleme değeri Denklem (4)’deki gibi hesaplanır. Gizli katmanda bulunan hücrelerin çıkış değerlerine ait ağırlıklandırma parametrelerinin güncelleme değeri Denklem (5)’deki gibi hesaplanır. Şekilde gösterilen z değerleri Denklem (6)’daki gibi hesaplanır. Gizli katmanındaki eşik parametrelerinin güncelleme değeri Denklem (7)’deki gibi hesaplanır. Girişlere ait ağırlıklandırma parametrelerinin güncelleme değeri Denklem (8)’deki gibi hesaplanır.

3(3)

4(4)

5(5)

6(6)

7(7)

8(8)

Aşağıda geriye yayılım algoritması ile YSA eğitim Matlab kodları verilmiştir.

clc,clear all, close all;
 
Inputs =[0 0; 0 1 ; 1 0; 1 1];
Outputs = [0 1 1 0];
 
[sample_size input_size] = size(Inputs);
 
H_Layer_Cell = 3;
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)