Wednesday, January 18, 2012

çevrimiçi öğrenme-1:perceptron

Benim kullandığım algoritma şöyle:

for t=1...T
receive (x_t,y_t)
make a prediction f=w^T*x_t
if y_t*f update w: w = w + s_t*y_t*x_t (s_t:step size)
end
end



Bu algoritmaya 'regularizer' (düzenleyici?) katmak istersek şöyle yapmamız gerekir:

for t=1...T
receive (x_t,y_t)
make a prediction f=w^T*x_t
if y_t*f update w: w = (1-s_t)w + s_t*y_t*x_t (s_t:step size)
end
end

Neden bu düzenleyici etkisine ihtiyaç duyuyoruz. Tahminimce şöyle: başarım oranı düşük sınıflarda algoritma çok hata yapar. Çok hata demek w'ya çok terim eklemek demek (güncelleme adımında). Olay nihayet w'nun tahmininde hata yapılan örneklerin ortalamasına yakınsaması, hatta 'norm'nun büyümesi (pozitif ve negatif örnek sayıları arasında fark var bizim deneylerde) anlamına gelir. Düzenleyici etkisi ise w'nun normunu belli bir büyüklükte tutar.

No comments:

Post a Comment