Anda di halaman 1dari 5

September 15, 2011

[JANS HENDRY / EE UGM, INDONESIA]

ALGORITMA HEBB UNTUK WEIGHT ADJUSTMENT

Algoritma HEBB termasuk salah satu algoritma sederhana yang digunakan sebagai pengatur bobot untuk jaringan syarat tiruan. Pengaturan bobot dengan menggunakan algoritma ini sangat sederhana. Pengaturan dilakukan secara langsung yakni dengan mengoperasikan input dan target. Hipotesis Hebb adalah Bila dua buah neuron bipolar yang saling terhubung mempunyai aktivasi output) yang sama tandanya maka bobot sambungan antara kedua neuron tersebut akan menguat. Sebaliknya, bila aktivasi keduanya berlawanan tanda maka bobot sambungan akan melemah. Dalam artikel ini kita akan membahas bagaimana algoritma ini di program menggunakan matlab dan mengenal prinsip kerjanya dari program tersebut. Sehingga kita bisa membayangkan akan digunakan untuk apa saja algoritma ini. Pada artikel berikutnya kita akan membahas jaringan assosiatif dimana bobot-bobot nya dihitung dengan pendekatan dari algoritma Hebb. Sejauh mana kah algoritma ini berhasil memberikan hasil yang kita inginkan. Perlu diingat pula bahwa perhitungan bobot-bobot pada algoritma Hebb tidak menggunakan pembelajaran, berbeda dengan aturan delta yang mensyaratkan pembelajaran untuk perhitungan bobot-bobotnya. Algoritma delta akan kita bahas pada artikel lainnya. Sebelum menyentuh program yang telah dibuat, terlebih dahulu saya menghadirkan algoritma Hebb. - Menentukan nilai bobot awal yakni w0=0, alpha (laju pembelajaran)=1 dan b (bobot bias)=1, t (target). - Menghitung perubahan bobot dengan menggunakan rumus: = = = + = + Lalu dengan menggunakan bobot akhir kita menguji dengan memberikan masukan baru. Keluaran (y_net) dirumuskan dengan: = Lalu +

di threshold menggunakan fungsi aktivasi bipolar.

Perlu saya ingatkan kembali tentang fungsi aktifasi yang kita gunakan adalah bipolar. Ketentuan untuk aktifasi bipolar adalah

September 15, 2011

[JANS HENDRY / EE UGM, INDONESIA]

Berikut ini program dengan permasalahan yang saya berikan yakni permasalahan logikal OR dan AND dengan input berupa logikal bipolar ( 1 dan -1).

A. Logikal OR Program yang dibuat terdiri dari PELATIHAN dan PENGUJIAN. Program pelatihan digunakan untuk mencari bobot menggunakan algoritm Hebb. Sementara program pengujian digunakan untuk menguji bobot tersebut terhadap input yang berbeda dengan input untuk program pelatihan. Jadi nanti akan ada dua jenis input yakni pelatihan dan pengujian.

Input pelatihan:

Target:

1 1 = 1 1 1 1 1 1 1 = 1 1 1

Input pengujian:

1 = 1 1 1

1 1 1 1

Program untuk pelatihan


clear all; close all; clc; %% initialisation (bipolar as example) disp('Pelatihan untuk menemukan Bobot'); disp(''); x=input('Tuliskan Input Pelatihan = '); t=input('Tuliskan Target = '); w_new=[0 0; 0 0;0 0; 0 0]; b=1; alpha=1; %% %% Hebb Rules for Weight Adjustment y=t'; [bar, kol]=size(x); for ii=1:bar

September 15, 2011

[JANS HENDRY / EE UGM, INDONESIA]

for jj=1:kol if ii==1 w_new(ii,jj)=alpha*x(ii,jj)*y(ii,1); b(ii)=y(ii); else w_new(ii,jj)=w_new(ii-1,jj)+alpha*x(ii,jj)*y(ii,1); b(ii)=b(ii-1)+y(ii); end end end w=w_new(end,1:end); b=b(end); disp(''); disp('Bobot Akhir'); disp(w); ujihebb

program di atas sebenarnya bisa anda modifikasi agar lebih ringkas, namun saya sengaja menghadirkan keseluruhannya agar anda bisa langsung menikmati hasilnya. Pada baris terakhir, tampak bahwa kita memanggil fungsi lain yang tugasnya untuk menguji bobot yang sudah ditemukan.

Program Pengujian
function ujihebb(alpha,w,b) % memanggil bobot disp('PENGUJIAN'); disp('=========='); disp(''); inpt=input('Masukkan Input = '); [bar,kol]=size(inpt); y_net=zeros(bar,1); for ii=1:bar y_net(ii,1)=alpha*inpt(ii,1)*w(1)+inpt(ii,2)*w(2)+b; if y_net(ii,1)>0 y(ii)=1; elseif y_net(ii,1)==0 y(ii)=0; else y(ii)=-1; end end disp(''); disp('Keluaran'); disp(''); disp(y);

September 15, 2011

[JANS HENDRY / EE UGM, INDONESIA]

Saat di eksekusi, maka pada command window anda akan diminta untuk memasukkan input pelatihan.

Jangan lupa untuk memasukkan input pelatihan dan targetnya. Dalam hal ini permasalahan kita adalah operasi logikal OR. Bila anda tekan ENTER, maka akan dihasilkan:

Nah, jika anda bisa melihat program di atas pada bagian bawah akan dipanggil fungsi pengujian untuk bobot akhir yang sudah kita temukan.

Anda harus memasukkan nilai input sebagai pengujian. Bila anda menekan ENTER, maka akan dihasilkan:

B. Logikal AND Input pelatihan: 1 1 = 1 1 1 1 1 1 1 = 1 1 1

Target:

Input pengujian:

1 1 = 1 1

1 1 1 1

September 15, 2011

[JANS HENDRY / EE UGM, INDONESIA]

Dengan menggunakan program yang sama, ketika dieksekusi akan menghasilkan:

Setelah anda memasukkan input pelatihan seperti di atas, maka tekan ENTER dan akan dihasilkan:

Lalu, anda akan dibawa ke pengujian. Jangan lupa untuk memasukkan input seperti di bawah atau anda bisa memasukkan input yang anda mau.

Bila anda menekan ENTER akan dihasilkan:

~~~ TERIMA KASIH ~~~