Archive for the ‘Yapay Sinir Ağlari’ Category

Hebb Öğrenme Kuralı

May 25, 2009

Hebb öğrenme kuralı, YSA’ larda, en eski ve en basit öğrenme kuralıdır. Eğer birbirine bağlı iki nöron, aynı anda aynı işarete sahipse, bu nöronlar arasındaki ağırlık değeri artırılır.

Algoritması

0. Tüm ağırlıkları ilkle:

w(i)=0        (i=1 to n)

1. Her bir eğitim vektörü (s) ve hedef vektörü (t) için  2 -4 işlemlerini yap:

2. Giriş birimlerine eğitim vektörlerini al

x(i)=s(i)        (i=1 to n)

3. Çıkış birimlerine hedef vektörlerini al

y=t

4. Ağırlıkları güncelle:

w(i)_yeni=w(i)_eski+x(i)*y      (i=1 to n)

b_yeni=b_eski+y

Şimdi bir örnek üzerinden algoritmamızı işletelim. Bu örnekte AND fonksiyonunu, bipolar (yani 1 ve -1) temsille öğrenebilen bir Hebb Ağı geliştireceğiz.

x1 x2 b t
1  1  1  1
1 -1 1 -1
-1 1 1 -1
-1 -1 1 -1

Bu sinir ağının yapısından bahsedelim ilk önce. Bu ağ iki girişi (x1 ve x2) ve bir bias ve de bir çıkışı olan bir sinir ağıdır. Üç tane ağırlık bağlantısı (w1, w2, w3) vardır o halde.

Herşeyden önce ağırlıkların hepsine birden o  değerini atayalım.
(w1=0, w2=0, w3=0)

Şimdi ilk eğitim setimizi girelim ağa. (yani x1=1, x2=1 ve b=1 ve de t=1 olan eğitim setini)

x1 x2 b t w1 w2 w3
1   1  1 1  0   0   0

w1_yeni=w1_eski+x1*y

w1_yeni=0+1*1
w1_yeni=1

w2_yeni=0+1*1
w2_yeni=1

b_yeni=b_eski+y
b_yeni=1

Ağırlıklarımızın yeni değerlerini bulduktan sonra, ikinci eğitim vektörü içinde de aynı işlem yapılır.
Sonra üçüncü ve daha sonra da dördüncü eğitim seti için hesaplama yapılır.

Eğitim bittiği vakit w1=2, w2=2 ve b=-2 olmaldır.  Şimdi test edelim:

x1=1, x2=-1 olsun… Çıkış nöronuna net girdi=x1*w1+x2*w2+b  ise:
f_net=((1*2)+(-1*2)+(1*-2))=-2

f(f_net)= Eğer f_net>=0 ise 1; f_net<0 ise -1 dir. O halde çıkış değerimiz -1 olacaktır.

Bu problemi bir de polar (1 ve 0) değerler ile çözün bakalım.
Sonuca ulaşacak mısınız? Kolay gelsin.