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