Sunday, December 21, 2014

Metode Hebbian

JARINGAN SYARAF TIRUAN
METODE HEBBIAN


A.     Jaringan Syaraf Tiruan
Jaringan syaraf adalah merupakan salah sat representasi buatan dari otak  manusia yang selalu mencoba untuk mensimulasikan proses pembelajaran pada otak manusia tersebut. Istilah buatan disini digunakan karena jaringan syaraf ini di implementasikan dengan menggunakan program komputer yang mampu menyelesaikan sejumlah proses perhitungan selama proses pembelajaran.
1.1  Otak Manusia
Otak manusia berisi jutaan sel syaraf yang bertugas untuk memproses informasi. Tiap-tiap sel bekerja seperti suatu prosesor sederhana dan saling berinteraksi sehingga mendukung kemampuan kerja otak manusia seperti yang terlihat pada gambar 1.1 berikut ini.
Gambar 1.1 Susunan Syaraf Manusia

Gambar tersebut menunjukkan susunan syaraf pada manusia. Setiap sel syaraf (neuron) akan memiliki satu inti sel, inti sel ini nanti yang akan bertugas untuk melakukan pemrosesan informasi. informasi yang datang akan diterima oelh dendrit. Selain menerima informasi, dendrit juga menyertai axon sebagai keluaran dari suatu pemrosesan informasi. informasi hasil olahan ini akan menjadi masukan bagi neuron lain yang mana antar dendrit kedua sel tersebut dipertemukan dengan synapsis. Informasi yang dikirimkan antar neuron ini berupa rangsangan yang dilewatkan melalui dendrit. Informasi yang dikirimkan antar neuron ini diterima dendrit akan dijumlahkan dandikirim melalui axon ke dendrit akhir yang bersentuhan dengan dendrit dari neuron yang lain. Hubungan antar neuron terjadi secara adapti, artinya struktur hubungan tersebut terjadi secara dinamis. Otak manusia selalu memiliki kemampuan untuk belajar dengan melakukan adaptasi.

B.     Metode Hebbian
2.1  Sejarah Hebbian
Aturan Hebb merupakan salah satu hukum pembelajaran jaringan neural yang pertama dikemukakan oleh Donald Hebb (1949). Hebb lahir di chester, Nova Scotia pada pergantian abad.
Isinya menyangkut kemungkinan mekanisme modifikasi sinaptik dalam otak yang kemudian digunakan untuk melatih jaringan syaraf tiruan. Pada tahun 1949 Hebb merangkum hasil peneliian yang telah dilakukannya selama 20 tahun kedalam bku yang berjudul “The Organization of Behavior”, yang pada intinya mengatakan bahwa perilaku dapat dijelaskan melalui aksi-aksi neuron.
Ide yang paling terkenal didalam buku Hebb diatas adalah sebuah postulat yang kemudian dikenal dengan nama metode belajar Hebb “Jika axon sebuah sel A cukup dekat untuk bisa mengeksitasi sel B dan secara berulang atau terus menerus melakukan penembakan, beberapa proses atau perubahan metabolisme akan terjadi pada satu atau kedua sel, sehingga efisiensi sel A sebagai salah satu sel penembak B akan meningkat”. Walaupun Hebb tidak pernah memberikan bukti fisiologis yang signifikan mengenai teorinya, namun penelitian-penelitian selanjutnya menunjukkan bahwa sejumlah sel menunjukkan pola belajar Hebbian.
2.2  Asosiator Linier
Hukum pembelajaran Hebb dapat diimplementasikan pada berbagai arsitektur jaringan neural. Salah satu arsitektur jaringan neural yang sederhana adalah asosiator linear seperti terlihat pada gambar berikut
Gambar 2.2 Assosiator Linier
Keluaran vektor a dihitung dari vektor masukan p  :
­
Asosiator linear merupakan contoh dari jaringan neural yang dinamakan memori asosiatif (associative memory)
Memori asosiatif didesain untuk mempelajari Q pasang vektor contoh masukan / keluaran
{ p1, t1}, p2, t2}, ..., {pq, tq }
Dengan kata lain, jika jaringan menerima input p = pq maka harus menghasilkan keluaran a = tq, dengan q = 1,2 ... , Q. Jika masukan sedikit berubah (mis., p = p + d), maka keluaran juga sedikit berubah (mis., a = tq + e).
2.3  Aturan Hebb (Hebb Rule)
Hebb Rule adalah metode pembelajaran yang paling sederhana. Pada metode ini pembelajaran dilakukan dengan cara memperbaiki nilai bobot sedemikian rupa sehingga jika ada 2 neuron yang terhubung, dan keduanya pada kondisi hidup pada saat yang sama, maka bobot antara keduanya dinaikkan. Apabila data direpresentasikan secara bipolar, maka perbaikan bobotnya adalah :
w1 (baru) = w1(lama) + x1*y
Keterangan :
W1 = bobot data input ke – i
X1 =input data ke – i
Y = output data
Misalkan kita akan menggunakan pasangan vektor input s dan vektor output sebagai pasangan vektor yang akan dilatih, sedangkan vektor yang hendak digunakan untuk testing adalah vektor x.
Terdapat juga aturan Hebb dengan supervisi (supervised Hebb Rule), dimana pada persamaannya, keluaran aktual digantikan dengan keluaran target. Persamaannya :
Dengan tiq adalah elemen ke – i dari vektor target t ke – q. Untuk memudahkan learning rate diset bernilai 1.
Representasi dalam bentuk matriks :
2.3  Algoritma Hebb
Inisialisasi semua bobot
 Wij = 0 ; dengan i = 1,2,...n; dan j=1,2,...,m
Untuk setiap pasangan input-outpt (s-t), lakukanlah langkah-langkah sebagai berikut
a.    Set input dengan nilai sama dengan vektor input :
Xi = si ; (i = 1,2...,n)
b.    Set output dengan nilai sama dengan vektor output :
Yj = tj ; (j=1,2,...m)
c.    Perbaiki bobot :
Wij(baru) = wij(lama) + xi*yj ;
(i=1,2,...,n ; dan j = 1,2,...,m). Dengan catatan bahwa nilai bias selalu 1.
Contoh soal :
1.    Buatlah model Hebb untuk menyelesaikan fungsi logika AND dengan input output dan output biner
x1
x2
y
1
1
1
1
0
0
0
1
0
0
0
0
           
            Solusi
x1
x2
b
t
∆w1
∆w2
∆wb
∂w1
∂w2
∂wb
1
1
1
1
1
1
1
1
1
1
1
0
1
0
0
0
0
1
1
1
0
1
1
0
0
0
0
1
1
1
0
0
1
0
0
0
0
1
1
1

            Bobot baru jaringan hasil training :
       w1 = 1
       w2 = 1
       wb = 1

masukan dan keluaran biner
w1
w2
net = ∑(xi*wi) + wb
Y = f(net) = 1, jika net ≥ 0
Y = f(net) = 0, jika net < 0
1
1
(1 . 1) + (1 . 1) + 1
1
1
0
(1 . 1) + (0 . 1) + 1
1 seharusnya 0
0
1
(0 . 1) + (1 . 1) + 1
1 seharusnya 0
0
0
  (0 . 1) + (0 . 1) + 1
1        seharusnya 0

Pola tidak dikenali oleh jaringan.
Contoh Soal Fungsi OR
1.      Misalkan kita ingin membuat jaringan syaraf tiruan untuk melakukan pembelajaran terhadap fungsi OR dengan input dan target bipolar sebagai berikut
Input       Bias       Target
-1 -1        1          -1
-1 1         1          1
 1 -1        1          1
 1 1         1          1
Bobot awal dan bobot bias kita set=0.

­­­­­
X =
-1 -1
-1 1
1 -1
1 1
T =
-1
1
1
1
Bobot awal =
w =
0
0
b = 0
Perubahan bobot:
Data ke-1
w1 = 0 + 1 = 1
w2 = 0 + 1 = 1
b = 0 - 1 = -1
Data ke-2
w1 = 1 - 1 = 0
w2 = 1 + 1 = 2
b = -1 + 1 = 0
Data ke-3
w1 = 0 + 1 = 1
w2 = 2 - 1 = 1
b = 0 + 1 = 1
Data ke-4
w1 = 1 + 1 = 2
w2 = 1 + 1 = 2
b = 1 + 1 = 2
Kita bisa melakukan pengetesan terhadap salah satu data yang ada, misal kita
ambil x=[-1 –1].
Y = 2 + (-1*2) + (-1*2) = -2

2.4  Aplikasi
Berikut ini ditunjukkan penggunaan aturan Hebb secara praktis, yaitu oada masalah pengenalan pola yang sangat disederhanakan. Untuk masalah ini digunakan jenis khusus dari memori asosiatif – autoassociative memory. Pada autoassociative memory vektor keluaran yang diinginkan sama dengan vektor input (yaitu tq = pq). Disini autoassociative memory digunakan untuk menyimpan satu set pola dan pola tersebut akan dipanggil kembali, termasuk dengan mengunakan masukan yang rusak. Pola yang disimpan adalah sebagai berikut :
 
Yang merupakan vektor input sekaligus target. Vektor-vektor tersebut mereprenstasikan bilangan (0,1,2) dalam kisi 6 x 5. Digit ini harus dikonversi manjadi vektor, untuk dijadikanpola contoh bagi jaringan. Setiap kotak putih direpresentasikan dengan “-1” dan kotak hitam direpresentasikan dengan “1”. Selanjutnya untuk membuat vektor input, kisi 6 x 5 tersebut dibaca perkolom. Sebagai contoh, vektor pola pertama adalah
P1 = [-1 1 1 1 1 -1 1-1 -1 -1 -1 1 1 -1 ... 1 -1]t
Vektor P1 adalah untuk digit “0”. P2 untuk “1” dan P3 untuk “2”. Dengan menggunakan aturan Hebb, bobot matriks dihitung.
Perhatikan bahwa pq menggantikan posisi tq, karena ini adalah autoassociative memory).
Karena hanya ada elemen – elemen vektor yang memiliki dua kemungkinan nilai “-1” dan “1” maka fungsi transfer linier digantikan dengan fungsi transfer symetrical hard limit.
Contoh soal :
Akan dicoba untuk mengenali huruf A, B atau H yang direpresentasikan dengan menggunakan kode 0 dan 1 pada matriks berukuran 9X7 seperti terlihat pada gambar 2.4

Gambar 2.4.1 Pemetaan huruf pada matriks 9x7
Pada Gambar 8.30 tersebut, kode 1 menunjukkan suatu kotak berwarna hitam, sedangkan kode 0 menunjukkan suatu kotak berwarna putih. Untuk mempermudah dalam mengimplementasikannya, matriks 9x7 tersebut dibawa ke bentuk vektor 63 kolom. Pada Gambar 8.30 tersebut vektor yang bersesuaian adalah:

0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 1 1

Misalkan ada 15 data yang akan dilatih, yaitu 5 data A, 5 data B, dan 5 data H, sebagai berikut (Gambar 2.4.2, 2.4.3 dan 2.4.4):

      
Gambar 2.4.2 Pola Huruf A pada matriks 9x7

      
Gambar 2.4.3 Pola Huruf B pada matriks 9x7

Gambar 2.4.4 Pola Huruf H pada matriks 9x7

Gambar 2.4.5 Pola huruf yang digunakan sebagai bobot
Matriks yang dilatih yaitu :
P=[1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1;
0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 1 1;
0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1;
0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1;
0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1;
1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 0;
1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1;
1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 1 1 1 0;
1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 1 1 1 0;
1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0;
1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1;
1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1;
1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1;
1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1;
1 1 1 0 1 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 0 1 1 1];
Dengan vektor output
T=[1 1 1 1 1 2 2 2 2 2 3 3 3 3 3];
Angka 1 menunjukkan kelas A, angka 2 menunjukkan kelas B, dan angka 3
menunjukkan kelas H. Sedangkan untuk matriks bobot diperoleh dari transformasi dari Gambar 2.4.5
w=[0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 1 1;
1 0 1 1 1 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0;
1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1 1];
Sebagai nilai awal dipilih learning rate (α=0,05), dengan pengurangan sebesar
0,1*α; dan maksimum epoh (MaxEpoh=30).
Epoh ke-1:
Data ke-1:

P1 = (1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1);

Jarak pada:
* Bobot ke-1 = 5,9161
* Bobot ke-2 = 4,7958
* Bobot ke-3 = 4,4721
Jarak terkecil pada bobot ke-3
Target data ke-1= 1
Bobot ke- 3 baru (w3):
1,0000 1,0000 -0,0500 -0,0500 -0,0500 1,0000 1,0000 1,0000 ...
1,0500 0,0000 0,0000 0,0000 1,0500 1,0000 1,0000 1,0500 ...
0,0000 0,0000 0,0000 1,0500 1,0000 1,0000 1,0500 0,0000 ...
0,0000 0,0000 1,0500 1,0000 1,0000 1,0500 1,0500 1,0500 ...
1,0500 1,0500 1,0000 1,0000 1,0000 1,0000 1,0000 1,0000 ...
1,0000 1,0000 1,0000 1,0500 0,0000 0,0000 0,0000 1,0500 ...
1,0000 1,0000 1,0500 0,0000 0,0000 0,0000 1,0500 1,0000 ...
1,0000 1,0500 0,0000 0,0000 0,0000 1,0500 1,0000
α = 0,0450
α Data ke-2:
P2 = (0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 1 1);
Jarak pada
* Bobot ke-1 = 3,3166
* Bobot ke-2 = 5,5678
* Bobot ke-3 = 5,7228
Jarak terkecil pada bobot ke-1
Target data ke-2= 1
Bobot ke-1 baru (w1):
0,0000 0,0000 0,0000 1,0000 0,0000 0,0000 0,0000 0,0000 ...
0,0000 1,0000 0,0000 1,0000 0,0000 0,0000 0,0000 0,9550 ...
0,0450 0,0000 0,0450 0,9550 0,0000 0,0000 0,9550 0,0450 ...
0,0000 0,0450 0,9550 0,0000 0,0000 1,0000 1,0000 1,0000 ...
1,0000 1,0000 0,0000 0,0000 1,0000 0,9550 0,9550 0,9550 ...
1,0000 0,0000 0,0000 1,0000 0,0000 0,0000 0,0000 1,0000 ...
0,0000 1,0000 1,0000 0,0000 0,0000 0,0000 1,0000 1,0000 ...
1,0000 1,0000 0,0000 0,0000 0,0000 1,0000 1,0000
α = 0,0405
Proses tersebut diteruskan untuk data ke-3 sampai data ke-15, kemudian dilanjutkan epoh ke-2 sampai ke-30, untuk setiap data dengan menggunakan cara yang sama. Setelah mencapai epoh yang ke-30 diperoleh bobot akhir: 197
w1 =
-0,0297 -0,0297 -0,0140 1,0297 -0,0140 -0,0297 -0,0297 0,0000 ...
0,0113 1,0297 0,0000 1,0297 0,0113 0,0000 0,0000 0,9010 ...
0,0990 0,0000 0,0990 0,9010 0,0000 0,0443 0,9044 0,0513 ...
0,0000 0,0513 0,9044 0,0443 0,0443 0,9557 0,9080 0,9080 ...
0,9080 0,9557 0,0443 0,1330 0,9590 0,9375 0,9375 0,9375 ...
0,9590 0,1330 0,1330 0,8670 0,0000 0,0000 0,0000 0,8670 ...
0,1330 1,0297 0,8670 0,0000 0,0000 0,0000 0,8670 1,0297 ...
1,0000 0,8670 -0,0140 0,0000 -0,0140 0,8670 1,0000
w2 =
1,0000 0,1358 1,0217 1,0217 1,0217 0,1014 -0,0005 1,0000 ...
0,8858 0,0000 0,0000 0,0000 0,9203 0,0797 1,0000 0,0000 ...
0,0000 0,0000 0,0000 0,0244 0,9756 1,0000 0,0244 0,0244 ...
0,0244 0,0244 0,9203 0,0553 0,9733 0,0712 0,9570 0,9570 ...
0,9570 0,0903 -0,0322 1,0000 0,0185 0,0185 0,0185 0,0185 ...
0,9097 0,0506 1,0000 0,0000 0,0000 0,0000 0,0000 0,0291 ...
0,9709 1,0000 0,8858 0,0000 0,0000 0,0000 0,0345 0,9655 ...
0,9733 0,1464 1,0322 1,0322 1,0322 0,9978 -0,0005
w3=
1,0000 0,9823 -0,0504 -0,0504 -0,0504 0,9823 1,0000 1,0000 ...
1,0327 0,0000 0,0000 0,0000 1,0327 1,0000 1,0000 1,0327 ...
0,0194 0,0194 0,0194 1,0327 1,0000 1,0000 1,0327 0,0194 ...
0,0194 0,0194 1,0327 1,0000 1,0000 1,0327 1,0132 1,0132 ...
1,0132 1,0327 1,0000 1,0000 1,0000 0,9806 0,9806 0,9806 ...
1,0000 1,0000 1,0000 1,0504 0,0177 0,0177 0,0177 1,0504 ...
1,0000 1,0000 1,0327 0,0000 0,0000 0,0000 1,0327 1,0000 ...
1,0000 1,0327 0,0000 0,0000 0,0000 1,0327 1,0000
Apabila kita ingin melakukan testing input:
X = (0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 1);
Yang bersesuaian dengan gambar 2.4.5
Gambar 2.4.5 Pola huruf yang digunakan sebagai tes
maka kita cari terlebih dahulu jarak input tersebut dengan kedua bobot. Nomor dari bobot dengan jarak yang terpendek akan menjadi kelasnya.
Jarak pada:
* bobot ke-1 = 0,0693
* bobot ke-2 = 1,7655
* bobot ke-3 = 2,2446
Jarak terkecil pada bobot ke-1. Sehingga input tersebut termasuk dalam kelas A.


*artikel metode hebbian di dapat dari berbagai blog
















Share: