Daha önce çok katmanlı ağlara giriş yapmış ve ağın güncel ağırlıklarının kısmi türev yardımıyla nasıl elde edildiğiden bahsetmiştik.

Bu yazılara erişmek için:

Çok Katmanlı Sürekli Ağlar 1: Giriş

Çok Katmanlı Sürekli Ağlar 2: Ağırlık Güncellemelerinin Bulunması

Not: Önceki 2 yazıda olduğu gibi bu yazıda da referans olarak Zurada’ nın Artificial Neural Systems adlı kitabını[1] aldık. Yapay sinir ağlarını temellerini matematiği ile birlikte içeren güzel bir kaynaktır.

Bu yazıda çok katmanlı yapay sinir ağlarında delta öğrenme kuralının nasıl işledeceğinden bahsedeceğim.

Delta öğrenme kuralı çok katmanlı perceptron olarak da bilinir. İleri beslemeli, çok katmanlı perceptronların eğitiminde kullanılır. Geri yayılımlı bir öğrenme gerçekleşir.

Öğrenmeye ağın ve ağırlıkların ilk değerlerinin verilmesi ile başlanır. Tüm ağırlıklara rastgele bir değer verilir. Genellikle [0,1] aralığında değerler seçilir.

Ağırlıkların sayısı katmanın giriş sayısı ve nöron sayısı ile belirlenir. Örneğin I adet (ya da I boyutlu) giriş değeri, J nöronlu ilk katmana giriyorsa bu katmandaki ağırlıklar [JxI] boyutlu olacaktır.

Her katmanın son giriş değeri “-1” olarak belirlenir.

Bir η>0 sabit değeri seçilir (biz buna c de demiştik) ve Maksimum hata sınırı seçilir (Emax).

Algoritmanın eğitim verilerini 0 hata ile öğrenmesi gerekmez. (Hatta çoğunlukla 0 hata elde edildiğinde, eğitim verilerine aşırı uyum (overfitting) olabileceği akla gelir.)  Bu nedenle belirli bir hata sınırının altına inildiğinde öğrenme durdurulabilir. Maksimum hata sınırını bu yüzden belirleriz. 

Hata maksimum hata değerinin üzerindeyse tüm örüntüler (örnekler) tekrar verilip hesaplamalara devam edilir.

Not: Her bir örneğin (ya da örüntünün) işlenme sürecine bir iterasyon denir. Tüm örüntülerin sırayla ağa bir kere verilmesinin, sürecine ise bir “epoch” denir. Yani bir iterasyon sonunda bir örnek işlenmiştir, bir epoch sonunda tüm örnekler bir kere işlenmiştir.

Hatanın hesaplanması için tüm örüntülerin ağa verilip hatalarının ölçülmüş olması yani epoch’un tamamlanması gerekir. Sinir ağının diğer bir durdurulma kriteri de maksimum epoch sayısıdır. Maksimum epoch sayısına erişildiğinde öğrenme durdurulur. Burada epoch numarası q ile gösterilmektedir.

Artık ağırlıklar ve giriş değerleri biliniyor. Dolayısıyla çıkış değerleri hesaplanabilir. Giriş değerlerine (giriş vektörü) kitaptakine[1] uygun şekilde z diyelim. Toplam örüntü (ya da örnek) sayısını P ile gösterelim.

Birinci katman nöron sayısına J, ikinci yani çıkış katmanının nöron sayısına K diyelim.

Bu durumda ilk katmana gelen ağırlık matrisi (JxI) boyutlu olur. Çıkış katmanına gelen ağırlık matrisi (KxJ) boyutlu olur.

[Iterasyon Başlangıcı]

İlk örüntü ile başlarız:

z = zp, d = dp, p = 1, 2, … ,P.

İlk olarak birinci katmandaki düğümlerin çıkış değerleri hesaplanır.

yj = f(vjtz), j = 1, 2, …, J.

Elde edilen y değerleri sonraki katmanın girişleri olacaktır. Böylece sonraki katman çıkışları hesaplanabilir. Böylece varsa ikinci katman yoksa çıkış katmanı çıkışları hesaplanır.

ok = f(wkty),   k = 1, 2, …, K.

Bulunan çıkışlar ile toplam çıkıs hatası hesaplanır.

E = E + 1/2(dk-ok)2,    k = 1, 2, …, K.

Geri yayılım için hata sinyallerini hesaplamamız gerekiyor. Hata sinyalleri her katmandaki her nöron için hesaplanır. Bu yüzden çıkış katmanı hata sinyalleri δo, [Kx1] boyutlu; ilk katman (gizli katman da denir) hata sinyalleri δy, [Jx1] boyutlu olur.

δok = 1/2(dk-ok)(1-ok)ok ,    k = 1, 2, …, K.

\delta {yj} = y_j(1-y_j) \sum \delta_{ok} w_{kj}

Hata sinyalleri kullanılarak çıkış katman ağırlıkları güncellenir.

wkj = wkj + ηδokyj

Hata sinyalleri kullanılarak birinci (gizli) katman ağırlıkları güncellenir.

vji = vji + ηδyjzi

Böylece ilk örüntü için işlemler tamamlandı. Bu işlemleri tüm örüntüler için tekrarlayacağız. Dolayısıyla:

Eğer p<P ise

p = p+1, q = q+1 olarak artırır ve [Iterasyon Başlangıcı]’na dönerek aynı işlemleri tekrarlarız.

Eğer p=P ise bir epoch tamamlanmıştır.

Bu durumda elde edilen hata değeri ile maksimum hata değeri kıyaslanır.

Hata değeri, maksimum hata değerinin altındaysa; öğrenme tamamlanmış demektir. Maksimum hata değerinin altında değilse ve maksimum epoch sayısına ulaşılmamışsa [Iterasyon Başlangıcı]’na dönerek aynı işlemleri tekrarlarız.

Çok katmanlı ağların bu 3. yazısında algoritmanın nasıl ilerlediğine bakmış olduk. Soru ve önerileriniz için yorum kısmından ulaşabilirsiniz.

Şimdilik iyi çalışmalar.

KAYNAKLAR

  1. Zurada, Jacek M. “Artificial Neural Systems.” New Yrok: W est Publishing Co 1 (1995): 992.