Just Share
Just Share
Jaringan syaraf adalah merupakan salah satu representasi buatan dari otak
manusia yang selalu mencoba untuk mensimulasikan proses pembelajaran pada
otak manusia tersebut. Istilah buatan disini digunakan karena jaringan syaraf ini
diimplementasikan dengan menggunakan program komputer yang mampu
menyelesaikan sejumlah proses perhitungan selama proses pembelajaran.
8.1 OTAK MANUSIA
Otak manusia berisi berjuta-juta sel syaraf yang bertugas untuk memproses
informasi. Tiap-tiap sel bekerja seperti suatu prosesor sederhana. Masing-masing
sel tersebut saling berinteraksi sehingga mendukung kemampuan kerja otak
manusia.
Sel-1
(Neuron-1)
Inti Sel
(Neucleus)
Dendrit
Dendrit
Axon
Synapsis
Sel-2
(Neuron-2)
149
Pada tahun 1943, McCulloch dan Pitts merancang model formal yang
pertama kali sebagai perhitungan dasar neuron.
Pada tahun 1949, Hebb menyatakan bahwa informasi dapat disimpan
dalam koneksi-koneksi dan mengusulkan adanya skema pembelajaran
untuk memperbaiki koneksi-koneksi antar neuron tersebut.
Pada tahun 1954, Farley dan Clark mensetup model-model untuk relasi
adaptif stimulus-respon dalam jaringan random.
Pada tahun 1958, Rosenblatt mengembangkan kosep dasar tentang
perceptron untuk klasifikasi pola.
Pada tahun 1960, Widrow dan Hoff mengembangkan ADALINE untuk
kendali adaptif dan pencocokan pola yang dilatih dengan aturan
pembelajaran Least Mean Square (LMS).
Pada tahun 1974, Werbos memperkenalkan algoritma backpropagation
untuk melatih perceptron dengan banyak lapisan.
Pada tahun 1975, Little dan Shaw menggambarkan jaringan syaraf dengan
menggunakan model probabilistik.
Pada tahun 1982, Kohonen mengembangkan metode pembelajaran
jaringan syaraf yang tidak terawasi (unsupervised learning) untuk
pemetaan.
Pada tahun 1982, Grossberg mengembangkan teori jaringan yang
diinspirasi oleh perkembangan psikologi. Bersama Carpenter, mereka
mengenalkan sejumlah arsitektur jaringan, antara lain: Adaptive
Resonance Theory (ART), ART2, dan ART3.
Pada tahun 1982, Hopfield mengembangkan jaringan syaraf reccurent
yang dapat digunakan untuk menyimpan informasi dan optimasi.
Pada tahun 1985, algoritma pembelajaran dengan menggunakan mesin
Boltzmann yang menggunakan model jaringan syaraf probabilistik mulai
dikembangkan.
Pada tahun 1987, Kosko mengembangkan jaringan Adaptive Bidirectional
Associative Memory (BAM).
Pada tahun 1988, mulai dikembangkan fungsi radial basis.
bobot
Output
Output ke
neuronneuron
yang lain
150
Jika kita lihat, neuron buatan ini sebenarnya mirip dengan sel neuron biologis.
Neuron-neuron buatan tersebut bekerja dengan cara yang sama pula dengan
neuron-neuron biologis. Informasi (disebut dengan: input) akan dikirim ke
neuron dengan bobot kedatangan tertentu. Input ini akan diproses oleh suatu
fungsi perambatan yang akan menjumlahkan nilai-nilai semua bobot yang yanag
datang. Hasil penjumlahan ini kemudian akan dibandingkan dengan suatu nilai
ambang (threshold) tertentu melalui fungsi aktivasi setiap neuron. Apabila input
tersebut melewati suatu nilai ambang tertentu, maka neuron tersebut akan
diaktifkan, tapi kalau tidak, maka neuron tersebut tidak akan diaktifkan. Apabila
neuron tersebut diaktifkan, maka neuron tersebut akan mengirimkan output
melalui bobot-bobot outputnya ke semua neuron yang berhubungan dengannya.
Demikian seterusnya.
Pada jaringan syaraf, neuron-neuron akan dikumpulkan dalam lapisan-lapisan
(layer) yang disebut dengan lapisan neuron (neuron layers). Biasanya neuronneuron pada satu lapisan akan dihubungkan dengan lapisan-lapisan sebelum dan
sesudahnya (kecuali lapisan input dan lapisan output). Informasi yang diberikan
pada jaringan syaraf akan dirambatkan lapisan ke lapisan, mulai dari lapisan
input sampai ke lapisan output melalui lapisan yang lainnya, yang sering dikenal
dengan nama lapisan tersembunyi (hidden layer). Tergantung pada algoritma
pembelajarannya, bisa jadi informasi tersebut akan dirambatkan secara mundur
pada jaringan. Gambar 8.3 menunjukkan jaringan syaraf dengan 3 lapisan.
Nilai input
Neuron-neuron pada
lapisan input
Neuron-neuron pada
lapisan tersembunyi
Neuron-neuron pada
lapisan output
Nilai output
151
Nilai input
X1
w 11
X2
w 12
w 21
Y1
w 22
w 31
Y2
X3
Lapisan Input
w 32
Matriks bobot
Lapisan Output
Nilai output
152
Nilai input
X1
v 11
X2
v 12
v 21
v 22
v 31
X3
Lapisan Input
v 32
Matriks bobot
pertama
Z1
Z2
Lapisan Tersembunyi
w1
w2
Lapisan Output
Nilai output
A1
Am
-
-
-
-
1
Ai
Aj
153
y
1
y
1
y 0, jika x 0
1, jika x 0
y
1
x
-1
154
y
1
-1
y
1
-1
1 x
-1
155
y
1
-0,5
0,5
y x;
jika 1 x 1
1; jika x 1
y
1
-1
-1
1
1 e x
156
1
0.9
0.8
=0,5
=2
0.7
0.6
=1
0.5
0.4
0.3
0.2
0.1
0
-10
-8
-6
-4
-2
0
x
10
1 ex
1 e x
[1 f(x)][1 f(x)]
2
Fungsi ini sangat dekat dengan fungsi hyperbolic tangent. Keduanya memiliki
range antara 1 sampai 1. Untuk fungsi hyperbolic tangent, dirumuskan
sebagai:
y f(x)
ex e x
ex e x
atau y f(x)
1 e 2 x
1 e 2x
=0,5
=2
0.4
0.2
=1
0
-0 . 2
-0 . 4
-0 . 6
-0 . 8
-1
-1 0
-8
-6
-4
-2
0
x
10
157
target
0
0
0
1
Pada proses pembelajaran, satu pola input akan diberikan ke satu neuron pada
lapisan input. Pola ini akan dirambatkan di sepanjang jaringan syaraf hingga
sampai ke neuron pada lapisan output. Lapisan output ini akan membangkitkan
pola output yang nantinya akan dicocokkan dengan pola output targetnya.
Apabila terjadi perbedaan antara pola output hasil pembelajaran dengan pola
target, maka disini akan muncul error. Apabila nilai error ini masih cukup besar,
mengindikasikan bahwa masih perlu dilakukan lebih banyak pembelajaran lagi.
158
Misalkan kita gunakan pasangan vektor input s dan vektor output sebagai
pasangan vektor yang akan dilatih. Sedangkan vektor yang hendak digunakan
untuk testing adalah vektor x.
Algoritma
0.
1.
(i=1,2,...,n)
(j=1,2,...,m)
c. Perbaiki bobot:
w ij(baru) = w ij(lama) + x i*y j;
(i=1,2,...,n; dan j=1,2,...,m)
dengan catatan bahwa nilai bias selalu 1.
Contoh 8.1:
Misalkan kita ingin membuat jaringan syaraf untuk melakukan pembelajaran
terhadap fungsi OR dengan input dan target bipolar sebagai berikut:
159
x1
w1
y_in
xw+b
x2
F(y_in)
w2
b
1
= 1
= 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
160
Kita bisa melakukan pengetesan terhadap salah satu data yang ada, misal kita
ambil x=[-1 1].
Y = 2 + (-1*2) + (-1*2) = -2
B. Perceptron
Perceptron juga termasuk salah satu bentuk jaringan syaraf yang sederhana.
Perceptron biasanya digunakan untuk mengklasifikasikan suatu tipe pola tertentu
yang sering dikenal dengan pemisahan secara linear. Pada dasarnya, perceptron
pada jaringan syaraf dengan satu lapisan memiliki bobot yang bisa diatur dan
suatu nilai ambang (threshold). Algoritma yang digunakan oleh aturan perceptron
ini akan mengatur parameter-parameter bebasnya melalui proses pembelajaran.
Nilai threshold () pada fungsi aktivasi adalan non negatif. Fungsi aktivasi ini
dibuat sedemikian rupa sehingga terjadi pembatasan antara daerah positif dan
daerah negatif (Gambar 8.17).
x2
+
+
daerah
negatif
daerah
positif
daerah
nol
x1
161
xiwi
i
jika y _ in
1,
y 0, jika y _ in
1,
jika y _ in
x1
w1
y_in
xw+b
x2
F(y_in)
w2
b
1
w = [0,0 0,0]
b = [0,0]
0,8
0,5
162
Epoh ke-1
-------------------Data ke-1
y_in = 0,0 + 0,0 + 0,0 = 0,0
Hasil aktivasi = 0 (-0,5 < y_in <0,5)
Target
= 1
Bobot baru:
w1 = 0,0 + 0,8 * 1,0 * 1,0 = 0,8
w2 = 0,0 + 0,8 * 1,0 * 1,0 = 0,8
Bobot bias baru:
b = 0,0 + 0,8 * 1,0 = 0,8
Data ke-2
y_in = 0,8 + 0,8 + 0,0 = 1,6
Hasil aktivasi = 1 (y_in >0,5)
Target
= -1
Bobot baru:
w1 = 0,8 + 0,8 * -1,0 * 1,0 = 0,0
w2 = 0,8 + 0,8 * -1,0 * 0,0 = 0,8
Bobot bias baru:
b = 0,8 + 0,8 * -1,0 = 0,0
Data ke-3
y_in = 0,0 + 0,0 + 0,8 = 0,8
Hasil aktivasi = 1 (y_in >0,5)
Target
= -1
Bobot baru:
w1 = 0,0 + 0,8 * -1,0 * 0,0 = 0,0
w2 = 0,8 + 0,8 * -1,0 * 1,0 = 0,0
Bobot bias baru:
b = 0,0 + 0,8 * -1,0 = -0,8
Data ke-4
y_in = -0,8 + 0,0 + 0,0 = -0,8
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Epoh ke-2
-------------------Data ke-1
y_in = -0,8 + 0,0 + 0,0 = -0,8
Hasil aktivasi = -1 (y_in < -0,5)
Target
= 1
Bobot baru:
w1 = 0,0 + 0,8 * 1,0 * 1,0 = 0,8
w2 = 0,0 + 0,8 * 1,0 * 1,0 = 0,8
Bobot bias baru:
b = -0,8 + 0,8 * 1,0 = 0,0
Data ke-2
y_in = 0,0 + 0,8 + 0,0 = 0,8
Hasil aktivasi = 1 (y_in >0,5)
Target
= -1
Bobot baru:
w1 = 0,8 + 0,8 * -1,0 * 1,0 = 0,0
w2 = 0,8 + 0,8 * -1,0 * 0,0 = 0,8
Bobot bias baru:
b = 0,0 + 0,8 * -1,0 = -0,8
163
Data ke-3
y_in = -0,8 + 0,0 + 0,8 = 0,0
Hasil aktivasi = 0 (-0,5 < y_in <0,5)
Target
= -1
Bobot baru:
w1 = 0,0 + 0,8 * -1,0 * 0,0 = 0,0
w2 = 0,8 + 0,8 * -1,0 * 1,0 = 0,0
Bobot bias baru:
b = -0,8 + 0,8 * -1,0 = -1,6
Data ke-4
y_in = -1,6 + 0,0 + 0,0 = -1,6
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Epoh ke-3
-------------------Data ke-1
y_in = -1,6 + 0,0 + 0,0 = -1,6
Hasil aktivasi = -1 (y_in < -0,5)
Target
= 1
Bobot baru:
w1 = 0,0 + 0,8 * 1,0 * 1,0 = 0,8
w2 = 0,0 + 0,8 * 1,0 * 1,0 = 0,8
Bobot bias baru:
b = -1,6 + 0,8 * 1,0 = -0,8
Data ke-2
y_in = -0,8 + 0,8 + 0,0 = 0,0
Hasil aktivasi = 0 (-0,5 < y_in <0,5)
Target
= -1
Bobot baru:
w1 = 0,8 + 0,8 * -1,0 * 1,0 = 0,0
w2 = 0,8 + 0,8 * -1,0 * 0,0 = 0,8
Bobot bias baru:
b = -0,8 + 0,8 * -1,0 = -1,6
Data ke-3
y_in = -1,6 + 0,0 + 0,8 = -0,8
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Data ke-4
y_in = -1,6 + 0,0 + 0,0 = -1,6
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Epoh ke-4
-------------------Data ke-1
y_in = -1,6 + 0,0 + 0,8 = -0,8
Hasil aktivasi = -1 (y_in < -0,5)
Target
= 1
Bobot baru:
w1 = 0,0 + 0,8 * 1,0 * 1,0 = 0,8
w2 = 0,8 + 0,8 * 1,0 * 1,0 = 1,6
Bobot bias baru:
b = -1,6 + 0,8 * 1,0 = -0,8
164
Data ke-2
y_in = -0,8 + 0,8 + 0,0 = 0,0
Hasil aktivasi = 0 (-0,5 < y_in <0,5)
Target
= -1
Bobot baru:
w1 = 0,8 + 0,8 * -1,0 * 1,0 = 0,0
w2 = 1,6 + 0,8 * -1,0 * 0,0 = 1,6
Bobot bias baru:
b = -0,8 + 0,8 * -1,0 = -1,6
Data ke-3
y_in = -1,6 + 0,0 + 1,6 = 0,0
Hasil aktivasi = 0 (-0,5 < y_in <0,5)
Target
= -1
Bobot baru:
w1 = 0,0 + 0,8 * -1,0 * 0,0 = 0,0
w2 = 1,6 + 0,8 * -1,0 * 1,0 = 0,8
Bobot bias baru:
b = -1,6 + 0,8 * -1,0 = -2,4
Data ke-4
y_in = -2,4 + 0,0 + 0,0 = -2,4
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Epoh ke-5
-------------------Data ke-1
y_in = -2,4 + 0,0 + 0,8 = -1,6
Hasil aktivasi = -1 (y_in < -0,5)
Target
= 1
Bobot baru:
w1 = 0,0 + 0,8 * 1,0 * 1,0 = 0,8
w2 = 0,8 + 0,8 * 1,0 * 1,0 = 1,6
Bobot bias baru:
b = -2,4 + 0,8 * 1,0 = -1,6
Data ke-2
y_in = -1,6 + 0,8 + 0,0 = -0,8
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Data ke-3
y_in = -1,6 + 0,0 + 1,6 = -0,0
Hasil aktivasi = 0 (-0,5 < y_in <0,5)
Target
= -1
Bobot baru:
w1 = 0,8 + 0,8 * -1,0 * 0,0 = 0,8
w2 = 1,6 + 0,8 * -1,0 * 1,0 = 0,8
Bobot bias baru:
b = -1,6 + 0,8 * -1,0 = -2,4
Data ke-4
y_in = -2,4 + 0,0 + 0,0 = -2,4
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Epoh ke-6
--------------------
165
Data ke-1
y_in = -2,4 + 0,8 + 0,8 = -0,8
Hasil aktivasi = -1 (y_in < -0,5)
Target
= 1
Bobot baru:
w1 = 0,8 + 0,8 * 1,0 * 1,0 = 1,6
w2 = 0,8 + 0,8 * 1,0 * 1,0 = 1,6
Bobot bias baru:
b = -2,4 + 0,8 * 1,0 = -1,6
Data ke-2
y_in = -1,6 + 1,6 + 0,0 = -0,0
Hasil aktivasi = 0 (-0,5 < y_in <0,5)
Target
= -1
Bobot baru:
w1 = 1,6 + 0,8 * -1,0 * 1,0 = 0,8
w2 = 1,6 + 0,8 * -1,0 * 0,0 = 1,6
Bobot bias baru:
b = -1,6 + 0,8 * -1,0 = -2,4
Data ke-3
y_in = -2,4 + 0,0 + 1,6 = -0,8
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Data ke-4
y_in = -2,4 + 0,0 + 0,0 = -2,4
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Epoh ke-7
-------------------Data ke-1
y_in = -2,4 + 0,8 + 1,6 = -0,0
Hasil aktivasi = 0 (-0,5 < y_in <0,5)
Target
= 1
Bobot baru:
w1 = 0,8 + 0,8 * 1,0 * 1,0 = 1,6
w2 = 1,6 + 0,8 * 1,0 * 1,0 = 2,4
Bobot bias baru:
b = -2,4 + 0,8 * 1,0 = -1,6
Data ke-2
y_in = -1,6 + 1,6 + 0,0 = -0,0
Hasil aktivasi = 0 (-0,5 < y_in <0,5)
Target
= -1
Bobot baru:
w1 = 1,6 + 0,8 * -1,0 * 1,0 = 0,8
w2 = 2,4 + 0,8 * -1,0 * 0,0 = 2,4
Bobot bias baru:
b = -1,6 + 0,8 * -1,0 = -2,4
Data ke-3
y_in = -2,4 + 0,0 + 2,4 = 0,0
Hasil aktivasi = 0 (-0,5 < y_in <0,5)
Target
= -1
Bobot baru:
w1 = 0,8 + 0,8 * -1,0 * 0,0 = 0,8
w2 = 2,4 + 0,8 * -1,0 * 1,0 = 1,6
Bobot bias baru:
166
167
Data ke-3
y_in = -3,2 + 0,0 + 2,4 = -0,8
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Data ke-4
y_in = -3,2 + 0,0 + 0,0 = -3,2
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Epoh ke-10
-------------------Data ke-1
y_in = -3,2 + 1,6 + 2,4 = 0,8
Hasil aktivasi = 1 (y_in >0,5)
Target
= 1
Data ke-2
y_in = -3,2 + 1,6 + 0,0 = -1,6
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Data ke-3
y_in = -3,2 + 0,0 + 2,4 = -0,8
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Data ke-4
y_in = -3,2 + 0,0 + 0,0 = -3,2
Hasil aktivasi = -1 (y_in < -0,5)
Target
= -1
Pada epoh ke-10 ini sudah tidak terjadi perubahan bobot, sehingga proses
pembelajaran dihentikan. Hasil akhir diperoleh:
Nilai bobot, w 1 = 1,6; dan w2 = 2,4.
Bobot bias, b = -3,2.
Dengan demikian garis yang membatasi daerah positif dengan daerah nol
memenuhi pertidaksamaan:
1,6 x 1 + 2,4 x 2 3,2 > 0,5
Sedangkan garis yang membatasi daerah negatif dengan daerah nol memenuhi
pertidaksamaan:
1,6 x 1 + 2,4 x 2 3,2 < -0,5
C. Delta Rule
Pada delta rule akan mengubah bobot yang menghubungkan antara jaringan
input ke unit output (y_in) dengan nilai target (t). Hal ini dilakukan untuk
meminimalkan error selama pelatihan pola. Delta rule untuk memperbaiki bobot
ke-i (untuk setiap pola) adalah:
w i = (t y_in)*xi;
168
dengan:
x
=
y_in =
vektor input.
input jaringan ke unit output Y.
n
y _ in
xi * wi
i 1
target (output).
x1
0
0
1
1
Ada 2 input (x 1 dan x 2) dengan 1 output (target t). Arsitektur jaringan terdiri-dari
1 lapisan input dan satu lapisan output (Gambar 8.19). Hanya ada 1 neuron pada
lapisan output.
x1
w1
y_in
F(y_in)
xw
x2
w2
169
Data ke-3 :
x 31 = 1; x 32 = 0; t3 = 1.
w 1 = 0,1 dan w 2 = 0,5.
a13 = x 31w 1 + x 32w 2 = 1*0,1 + 0*0,5 = 0,1.
y 13 = 0, karena a13 = 0,1 0,5.
13 = t 3 y 13 = 1 0 = 1.
w 1 = w 1 + *x 31*13 = 0,1 + 0,2*1*1 = 0,3.
w 2 = w 2 + *x 32*13 = 0,5 + 0,2*0*1 = 0,5.
Data ke-4 :
x 41 = 1; x 42 = 1; t4 = 1.
w 1 = 0,3 dan w 2 = 0,5.
a14 = x 41w 1 + x 42w 2 = 1*0,3 + 1*0,5 = 0,8.
y 14 = 1, karena a14 = 0,8 > 0,5.
14 = t 4 y 14 = 1 1 = 0.
w 1 = w 1 + *x 41*14 = 0,3 + 0,2*1*0 = 0,3.
w 2 = w 2 + *x 42*14 = 0,5 + 0,2*0*0 = 0,5.
Pada Epoh kedua:
Data ke-1 :
x 11 = 0; x 12 = 0; t1 = 0.
w 1 = 0,3 dan w 2 = 0,5.
a21 = x 11w 1 + x 12w 2 = 0*0,3 + 0*0,5 = 0.
y 21 = 0, karena a21 = 0 0,5.
21 = t 1 y 21 = 0 0 = 0.
w 1 = w 1 + *x 11*21 = 0,3 + 0,2*0*0 = 0,3.
w 2 = w 2 + *x 12*21 = 0,5 + 0,2*0*0 = 0,5.
Demikian seterusnya. Hasil akhir, dengan Err=0 tercapai pada Epoh ke-4. Hasil
selengkapnya terlihat pada Tabel 8.2.
Epoh
x1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
w1
w2
w1
w2
0
0
0,1
0,3
0
0
0,0
0,1
0,3
1
1
0,1
0,3
0,3
0
1,0
0,1
0,5
0
1
0,1
0,5
0,1
0
1,0
0,3
0,5
1
1
0,3
0,5
0,8
1
0,0
0,3
0,5
0
0
0,3
0,5
0
0
0,0
0,3
0,5
1
1
0,3
0,5
0,5
0
1,0
0,3
0,7
0
1
0,3
0,7
0,3
0
1,0
0,5
0,7
1
1
0,5
0,7
1,2
1
0,0
0,5
0,7
0
0
0,5
0,7
0
0
0,0
0,5
0,7
1
1
0,5
0,7
0,7
1
0,0
0,5
0,7
0
1
0,5
0,7
0,5
0
1,0
0,7
0,7
1
1
0,7
0,7
1,4
1
0,0
0,7
0,7
0
0
0,7
0,7
0
0
0,0
0,7
0,7
1
1
0,7
0,7
0,7
1
0,0
0,7
0,7
0
1
0,7
0,7
0,7
1
0,0
0,7
0,7
170
0,7
0,7
1,4
0,0
0,7
0,7
D. Backpropagation
Backpropagation merupakan algoritma pembelajaran yang terawasi dan biasanya
digunakan oleh perceptron dengan banyak lapisan untuk mengubah bobot-bobot
yang terhubung dengan neuron-neuran yang ada pada lapisan tersembunyinya.
Algoritma backpropagation menggunakan error output untuk mengubah nilai
bobot-bobotnya dalam arah mundur (backward). Untuk mendapatkan error ini,
tahap perambatan maju (forward propagation) harus dikerjakan terlebih dahulu.
Pada saat perambatan maju, neuron-neuron diaktifkan dengan menggunakan
fungsi aktivasi sigmoid, yaitu:
f(x)
1
1 e x
X1
Y1
v 11
w 11
v 12
Z1
X2
w 12
w 13
v 21
v 22
Y2
w 21
Z2
w 22
v 31
X3
w 23
v 32
Y3
Algoritma backpropagation:
Inisialisasi bobot (ambil bobot awal dengan nilai random yang cukup kecil).
Kerjakan langkah-langkah berikut selama kondisi berhenti bernilai FALSE:
1. Untuk tiap-tiap pasangan elemen yang akan dilakukan pembelajaran,
kerjakan:
Feedforward:
a. Tiap-tiap unit input (X i, i=1,2,3,...,n) menerima sinyal x i dan
meneruskan sinyak tersebut ke semua unit pada lapisan yang ada
di atasnya (lapisan tersembunyi).
b. Tiap-tiap unit tersembunyi (Z i, j=1,2,3,...,p) menjumlahkan sinyalsinyal input terbobot:
n
z _ in j v0 j
xivij
i 1
171
zj = f(z_in j)
dan kirimkan sinyal tersebut ke semua unit di lapisan atasnya (unitunit output).
c. Tiap-tiap unit output (Y k , k=1,2,3,...,m) menjumlahkan sinyalsinyal input terbobot.
p
y _ ink w0k
ziw jk
i 1
_ inj
k w jk
k 1
172
v 0j = j
f.
).
1 e z _ in
y _ in
).
Bobot awal yang menghubungkan neuron-neuron pada lapisan input dan lapisan
tersembunyi (v 11, v 12, v 21, v 22) dan bobot bias v0 1 dan v0 2 dipilih secara acak.
Demikian pula bobot awal yang menghubungkan neuron-neuron pada lapisan
tersembunyi dan lapisan output (w 1, w 2) dan bobot bias w0 juga dipilih secara
acak.
2
v01x1
xivi1
z1
z_in 1
w1
i 1
v11
x1
v12
v13
v02x1
v14
xivi2
w2
i 1
v21
z2
z_in 2
v22
v03x1
xivi3
z3
i 1
i 1
w4
v24
v0 1
v0 2
v0 3
1
v0 4
xiwi
z_in 3
v23
x2
w0
w3
y_in
v04x1
xivi4
z_in 4
z4
w0
i 1
173
0,1628
z_in2 =
=
=
174
z_in3 =
=
=
z_in4 =
=
=
> Pengaktifan:
z1
z2
z3
z4
1
1e
0,7496
1
1e
0,3796
1
1e
0,7256
2
1 e 0,1628
0,6791
0,5938
0,6738
1 0,5406
=
=
=
> Pengaktifan:
1
y
1e
2,1623
0,8968
1
1
* 1
(T1 y) *
y _ in
y _ in
1 e
1 e
1
1
* 1
0,08299
(0 0,8968) *
1 e 2,1623
1 e 2,1623
w1 * * z1
w1 1 * (0,08299) * 0,6791 0,05636
w2 * * z2
w2 1 * (0,08299) * 0,5936 0,04928
w3 * * z3
175
1
1 in1 *
z _ in1
1 e
1
* 1
z _ in1
1 e
1
1
* 1
0,00412
1 0,01893 *
1 e 0,6791
1 e 0,6791
1
2 in2 *
z _ in2
1 e
1
* 1
z _ in2
1 e
1
1
* 1
0,01919
2 0,07955 *
1 e 0,5938
1 e 0,5938
1
3 in3 *
z _ in3
1 e
1
* 1
z _ in3
1 e
1
1
* 1
0,01240
3 0,05642 *
0,6738
0,6738
1 e
1 e
1
4 in4 *
z _ in4
1 e
1
* 1
z _ in4
1 e
1
4 0,00456 *
0,5406
1 e
1
* 1
1 e 0,5406
0,00113
v 11 = v 11 + v 11 = 0,9562 + 0 = 0,9562
v 12 = v 12 + v 12 = 0,7762 + 0 = 0,7762
176
v 13
v 14
v 21
v 22
v 23
v 24
v0 1
v0 2
v0 3
v0 4
w1
w2
w3
w4
w0
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
v 13 + v 13 = 0,1623 + 0 = 0,1623
v 14 + v 14 = 0,2886 + 0 = 0,2886
v 21 + v 21 = 0,1962 + 0 = 0,1962
v 22 + v 22 = 0,6133 + 0 = 0,6133
v 23 + v 23 = 0,0311 + 0 = 0,0311
v 24 + v 24 = 0,9711 + 0 = 0,9711
v0 1 + v0 1 = 0,7496 0,00412 =
v0 2 + v0 2 = 0,3796 0,01919 =
v0 3 + v0 3 = 0,7256 0,01240 =
v0 4 + v0 4 = 0,1628 0,00113 =
w 1 + w 1 = 0,2280 0,05636
w 2 + w 2 = 0,9585 0,04928
w 3 + w 3 = 0,6799 0,05592
w 4 + w 4 = 0,0550 0,04486
w0 + w0 = 0,9505 0,08299
=
=
=
=
=
0,7455
0,3604
0,7132
0,1617
0,1717
0,9092
0,6239
0,0101
0,8675
-0,0704
0,7636
-0,6994
177
G ra fik M S E t ia p e p o h
0 .4 5
0 .4
0 .3 5
0 .3
MSE
0 .2 5
0 .2
0 .1 5
0 .1
0 .0 5
0
0
100
200
300
400
500
600
700
800
900
E poh
Gambar 8.22 Grafik penurunan Mean Square Error (MSE) sampai epoh ke-898.
z1 f(2,3914)
z_in2 =
=
=
1
1 e 2,4144
0,9179
z3 f(6,6201)
z_in4 =
=
=
0,0838
z2 f(2,4144)
z_in3 =
=
=
1
1 e2,3914
1
6,6201
0,0013
1e
z4 f(0,0642)
1
1e
0,0642
0,5160
=
=
178
(0,0013*6,9212) + (0,5160*-0,7503)
2,9684
z f(2,9684)
0,9511
1 e 2,9684
Misalkan kita ambil threshold = 0,5; artinya jika nilai y 0,5 maka output yang
diberikan adalah 1, namun jika nilai y < 0,5 maka output yang diberikan adalah
0. Dengan demikian output dari x=[0 1] adalah 1 (karena 0,9511>0,5). Sesuai
dengan target yang diharapkan.
E. Heteroassociative Memory
Jaringan syaraf associative memory adalah jaringan yang bobot-bobotnya
ditentukan sedemikian rupa sehingga jaringan tersebut dapat menyimpan
kumpulan pengelompokan pola. Masing-masing kelompok merupakan pasangan
vektor (s(p),t(p)) dengan p=1,2,...,P. Tiap-tiap vektor s(p) memiliki n komponen,
dan tiap-tiap t(p) memiliki m komponen. Bobot-bobot tersebut dapat ditentukan
dengan menggunakan Hebb rule atau delta rule. Jaringan ini nanti akhirnya akan
mendapatkan vektor output yang sesuai dengan vektor inputnya (x) yang
merupakan salah satu vektor s(p) atau merupakan vektor lain di luar s(p).
Algoritma pembelajaran yang biasa digunakan oleh jaringan ini adalah Hebb rule
dan delta rule.
Algoritma:
0. Inisialisasi bobot dengan menggunakan Hebb rule atau delta rule.
1. Untuk setiap vektor input, kerjakan:
Set input dengan nilai sama dengan vektor input:
Hitung input jaringan ke unit output:
y _ in j
xi * wij
i
y j 0;
y _ in j 0
1; y _ in 0
j
Contoh 8.5:
Misalkan kita memiliki matriks P sebagai input yang hendak dilakukan
pembelajaran, dengan target T. Fungsi aktivasi yang digunakan adalah fungsi
bipolar.
-1
-1
-1
1
-1
-1
Input (s)
-1 1 -1 -1 1
-1 1 -1 1 1
1 -1 -1 -1 1
-1 1 -1 1 1
-1 1 1 -1 1
1 -1 1 -1 1
Target (t)
-1 1
-1 1
-1 1
-1 1
1 -1
1 -1
179
1 -1 -1
-1 1 1
1 -1
1 1
1
1
1 -1
1 -1
y_in 1
y1
y_in 2
y2
x3
x4
x iw i2
x5
x6
Gambar 8.23 Arsitektur jaringan contoh 8.5.
Bobot awal (w)
0 0
0 0
0 0
0 0
0 0
0 0
Proses pembelajaran:
Perubahan bobot
Data ke-1
w11 =
0,00 + 1,00
w12 =
0,00 + 1,00
w21 =
0,00 + 1,00
w22 =
0,00 + 1,00
w31 =
0,00 + -1,00
w32 =
0,00 + -1,00
w41 =
0,00 + 1,00
w42 =
0,00 + 1,00
w51 =
0,00 + 1,00
w52 =
0,00 + 1,00
w61 =
0,00 + -1,00
w62 =
0,00 + -1,00
=
=
=
=
=
=
=
=
=
=
=
=
1,00
-1,00
1,00
-1,00
-1,00
1,00
1,00
-1,00
1,00
-1,00
-1,00
1,00
Data ke-2
w11 =
1,00
w12 = -1,00
w21 =
1,00
w22 = -1,00
w31 = -1,00
w32 =
1,00
w41 =
1,00
w42 = -1,00
w51 =
1,00
w52 = -1,00
=
=
=
=
=
=
=
=
=
=
2,00
-2,00
2,00
-2,00
-2,00
2,00
2,00
-2,00
0,00
0,00
+
+
+
+
+
+
+
+
+
+
1,00
1,00
1,00
1,00
-1,00
-1,00
1,00
1,00
-1,00
-1,00
180
w61 =
w62 =
-1,00 +
1,00 +
1,00 =
1,00 =
0,00
0,00
Data ke-3
w11 =
2,00
w12 = -2,00
w21 =
2,00
w22 = -2,00
w31 = -2,00
w32 =
2,00
w41 =
2,00
w42 = -2,00
w51 =
0,00
w52 =
0,00
w61 =
0,00
w62 =
0,00
+
+
+
+
+
+
+
+
+
+
+
+
1,00
1,00
-1,00
-1,00
1,00
1,00
1,00
1,00
1,00
1,00
-1,00
-1,00
=
=
=
=
=
=
=
=
=
=
=
=
3,00
-3,00
1,00
-1,00
-1,00
1,00
3,00
-3,00
1,00
-1,00
-1,00
1,00
Data ke-4
w11 =
3,00
w12 = -3,00
w21 =
1,00
w22 = -1,00
w31 = -1,00
w32 =
1,00
w41 =
3,00
w42 = -3,00
w51 =
1,00
w52 = -1,00
w61 = -1,00
w62 =
1,00
+
+
+
+
+
+
+
+
+
+
+
+
-1,00
-1,00
1,00
1,00
-1,00
-1,00
1,00
1,00
-1,00
-1,00
-1,00
-1,00
=
=
=
=
=
=
=
=
=
=
=
=
2,00
-2,00
2,00
-2,00
-2,00
2,00
4,00
-4,00
0,00
0,00
-2,00
2,00
Data ke-5
w11 =
2,00
w12 = -2,00
w21 =
2,00
w22 = -2,00
w31 = -2,00
w32 =
2,00
w41 =
4,00
w42 = -4,00
w51 =
0,00
w52 =
0,00
w61 = -2,00
w62 =
2,00
+
+
+
+
+
+
+
+
+
+
+
+
1,00
1,00
1,00
1,00
-1,00
-1,00
-1,00
-1,00
1,00
1,00
1,00
1,00
=
=
=
=
=
=
=
=
=
=
=
=
1,00
-1,00
1,00
-1,00
-1,00
1,00
5,00
-5,00
-1,00
1,00
-3,00
3,00
Data ke-6
w11 =
1,00
w12 = -1,00
w21 =
1,00
w22 = -1,00
w31 = -1,00
w32 =
1,00
w41 =
5,00
w42 = -5,00
w51 = -1,00
w52 =
1,00
w61 = -3,00
w62 =
3,00
+
+
+
+
+
+
+
+
+
+
+
+
1,00
1,00
-1,00
-1,00
1,00
1,00
-1,00
-1,00
1,00
1,00
1,00
1,00
=
=
=
=
=
=
=
=
=
=
=
=
0,00
0,00
2,00
-2,00
-2,00
2,00
6,00
-6,00
-2,00
2,00
-4,00
4,00
181
Data ke-7
w11 =
0,00
w12 =
0,00
w21 =
2,00
w22 = -2,00
w31 = -2,00
w32 =
2,00
w41 =
6,00
w42 = -6,00
w51 = -2,00
w52 =
2,00
w61 = -4,00
w62 =
4,00
+
+
+
+
+
+
+
+
+
+
+
+
-1,00
-1,00
1,00
1,00
1,00
1,00
-1,00
-1,00
1,00
1,00
-1,00
-1,00
=
=
=
=
=
=
=
=
=
=
=
=
1,00
-1,00
1,00
-1,00
-3,00
3,00
7,00
-7,00
-3,00
3,00
-3,00
3,00
Data ke-8
w11 =
1,00
w12 = -1,00
w21 =
1,00
w22 = -1,00
w31 = -3,00
w32 =
3,00
w41 =
7,00
w42 = -7,00
w51 = -3,00
w52 =
3,00
w61 = -3,00
w62 =
3,00
+
+
+
+
+
+
+
+
+
+
+
+
1,00
1,00
-1,00
-1,00
-1,00
-1,00
-1,00
-1,00
-1,00
-1,00
-1,00
-1,00
=
=
=
=
=
=
=
=
=
=
=
=
0,00
0,00
2,00
-2,00
-2,00
2,00
8,00
-8,00
-2,00
2,00
-2,00
2,00
Testing:
Kita gunakan vektor input pertama: x = [-1-1 1-1-1
* Penjumlahan terbobot ke-1 (y_in1) = -12 ------>
* Penjumlahan terbobot ke-2 (y_in2) = 12 ------>
Vektor di luar vektor input: x = [-1-1 1 1-1-1]
* Penjumlahan terbobot ke-1 (y_in1) = 8
------>
* Penjumlahan terbobot ke-2 (y_in2) = -8 ------>
1]
(-1)
(1)
(1)
(-1)
Contoh 8.6:
Misalkan x adalah vektor dengan 63 komponen yang merepresentasikan pola
karakter 2 dimensi (9x7) (Gambar 8.24). Sedangkan y adalah vektor dengan 15
komponen yang juga merepresentasikan pola karakter 2 dimensi (5x3) (Gambar
8.25).
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1 1
1 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
182
1 1
1
1
1
1
1
1
1
1 1
1 1
1
Kita ingin mencocokkan pola karakter A, B dan H dalam matriks 9x7 dengan
pasangannya yaitu pola karakter A, B, dan H dalam matriks 5x3 (Gambar 8.26).
-1
1
3
3
3
-1
-3
-1
1
-1
-1
-1
1
-1
-3
-3
-3
1
3
1
-1
1
1
1
1
-1
1
1
1
-3
-1
1
-1
-3
-3
-3
-1
1
-1
-1
-1
3
1
-1
1
3
3
3
1
-1
1
1
1
-3
-1
1
-1
-3
-3
-3
1
-1
1
1
1
-3
-1
1
-1
-3
-3
-3
1
-1
1
1
1
-3
-1
1
-1
-3
-3
-3
-1
-3
-1
-1
-1
-1
1
-1
1
-1
-1
-1
1
-1
1
1
1
-3
-1
1
-1
-3
-3
-3
-1
1
-1
-1
-1
3
1
-1
1
3
3
3
1
-1
1
1
1
-3
-1
1
-1
-3
-3
-3
1 1 -1
-1 3 -3
1 1 -1
1 1 -1
1 1 -1
-3 1 -1
-1 -1 1
1 1 -1
-1 -1 1
-3 1 -1
-3 1 -1
-3 1 -1
183
-1
1
1
-1
-1
-1
-1
-1
1
1
-1
-1
-1
-1
1
-1
1
3
3
3
3
1
-1
1
-3
-3
-3
-3
-1
-1
1
-1
-1
-1
-1
-1
1
1
-1
-1
-1
-1
1
-1
1
1
1
1
1
-1
-1
3
-3
1
-1
-1
-1
-1
-1
1
1
-1
-1
-1
-1
1
-1
1
-1
-1
-1
-1
-3
-1
1
1
1
1
1
3
-1
1
-1
-1
-1
-1
-1
1
1
-1
-1
-1
-1
1
-1
1
1
1
1
1
-1
-1
-3
3
-1
1
1
1
1
1
-1
-1
1
1
1
1
-1
1
-1
1
1
1
1
3
1
-1
-1
-1
-1
-1
-3
1
-1
1
1
1
1
1
-1
-1
1
1
1
1
-1
1
-1
-1
-1
-1
-1
1
1
1
-1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
1
1
1
1
-1
1
3
-1
-1
-1
-1
1
1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
-1
-1
-1
-1
-3
1
-1
1
-3
3
3
3
3
3
-3
-3
3
3
3
3
1
-1
-3
-1
-1
-1
-1
1
-1
-3
1
1
1
1
-1
-1
-3
3
3
3
3
3
-3
-3
3
3
3
3
1
-1
-3
1
1
1
1
3
-1
1
-1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
1
1
1
1
-1
1
3
-1
-1
-1
-1
1
1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
-1
-1
-1
-1
-3
1
1
-1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
1
1
1
1
-1
1
3
-1
-1
-1
-1
1
1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
-1
-1
-1
-1
-3
1
1
-1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
1
1
1
1
-1
1
3
-1
-1
-1
-1
1
1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
-1
-1
-1
-1
-3
1
-1
1
1
-1
-1
-1
-1
-1
1
1
-1
-1
-1
-1
-3
3
1
-1
-1
-1
-1
1
3
1
1
1
1
1
-1
3
1
-1
-1
-1
-1
-1
1
1
-1
-1
-1
-1
-3
3
1
-3
-3
-3
-3
-1
3
1
-1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
1
1
1
1
-1
1
3
-1
-1
-1
-1
1
1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
-1
-1
-1
-1
-3
1
-1
1
-3
3
3
3
3
3
-3
-3
3
3
3
3
1
-1
-3
-1
-1
-1
-1
1
-1
-3
1
1
1
1
-1
-1
-3
3
3
3
3
3
-3
-3
3
3
3
3
1
-1
-3
1
1
1
1
3
-1
1
-1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
1
1
1
1
-1
1
3
-1
-1
-1
-1
1
1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
-1
-1
-1
-1
-3
1
1
-1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
1
1
1
1
-1
1
3
-1
-1
-1
-1
1
1
3
-3
-3
-3
-3
-3
3
3
-3
-3
-3
-3
-1
1
3
-1
-1
-1
-1
-3
1
1
-1
-1
1
1
1
1
1
-1
-1
1
1
1
1
3
-3
-1
1
1
1
1
-1
-3
-1
-1
-1
-1
-1
1
-3
-1
1
1
1
1
1
-1
-1
1
1
1
1
3
-3
-1
3
3
3
3
1
-3
-1
1
1
-1
-1
-1
-1
-1
1
1
-1
-1
-1
-1
-3
3
1
-1
-1
-1
-1
1
3
1
1
1
1
1
-1
3
1
-1
-1
-1
-1
-1
1
1
-1
-1
-1
-1
-3
3
1
-3
-3
-3
-3
-1
3
184
x1
x3
y2
y1
3 neuron pada
lapisan input
2 neuron pada
lapisan output
y j y j; jika y _ in j 0
0; jika y _ in 0
j
(si(p) * ti(p))
p
y j y j; jika y _ inj
1; jika y _ in
j
185
Dengan catatan bahwa input input hasil olahan pada jaringan (x_in i atau y_in j)
sama dengan nilai thresholdnya (), maka fungsi aktivasi akan menghasilkan nilai
sama dengan nilai sebelumnya.
(ii) BAM kontinu
BAM kontinu akan mentransformasikan input secara lebih halus dan kontinu ke
kawasan output dengan nilai yang terletak pada range [0,1]. Fungsi aktivasi yang
digunakan adalah fungsi sigmoid.
Contoh 8.7:
Misalkan kita memiliki 2 matriks 3x3 yang mewakili bilangan huruf O dan X. Tiap
matriks berhubungan dengan kode bipolar seperti terlihat pada Gambar 8.28.
(-1,1)
(1,1)
1
1
1
1
1
1
1
1
1 1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
186
1 1 1 2 0
1
1
1 1
1 0 2
1
1
1 2 0
W 1 1 1
1 2 0
1 1 1 2 0
1
1 1
1 0 2
1
1
1 1 1 2 0
1
1 1
1 0 2
0 2
0 0
0 2
0 2
2
Kita bisa menguji bobot tersebut. Misalkan kita cobakan vektor input pertama
yang mewakili Huruf O, maka output yang diperoleh adalah:
0
2
0
2
y _ in1 x1 * W 1 1 1 1 1 1 1 1 1 * 2
0
2
0
2
0
0 10 8
2
0
Karena (y_in 1(1)=10 < 0, maka y1(1)=-1) dan (y_in 1(2)=8 > 0, maka y 1(2)=1),
maka nilai y 1 = [-1 1], sama dengan target yang diharapkan.
Untuk vektor input kedua yang mewakili Huruf X, maka output yang diperoleh
adalah:
0
2
0
2
y _ in1 x1 * W 1 1 1 1 1 1 1 1 1 * 2
0
2
0
2
0
0 10 8
2
0
Karena (y_in 2(1)=10 > 0, maka y 2(1)=1) dan (y_in 2(2)=8 > 0, maka y2(2)=1),
maka nilai y 2 = [1 1], sama dengan target yang diharapkan.
187
0 2
0 0
0 2
0 2
2
[2 2 2 2 2 2 2 2 2]
[1 1 1 1 1 1 1 1 1]
0 2
0 0
0 2
0 2
2
[2 2 2 2 2 2 2 2 2]
[1 1 1 1 1 1 1 1 1]
wij * xi
i
Hitung:
y j f(y _ inj)
wij * x j
j
Hitung:
xi f(x _ ini)
188
(1,
(0,
(0,
(0,
(0,
(1,
(0,
(0,
(1,
(0,
0,
1,
0,
0,
1,
0,
0,
1,
0,
1,
0,
1,
1,
1,
0,
1,
1,
0,
0,
1,
0,
1,
0,
0,
0,
0,
1,
1,
1,
1,
1,
1,
0,
1,
0,
1,
0,
0,
0,
1,
0)
0)
1)
0)
1)
1)
0)
0)
1)
1)
1
2
1
1
1
1
2
2
2
2
189
Vektor (w)
1. (1, 0, 0, 0, 1, 0)
2. (0, 1, 1, 1, 1, 0)
Kelas
1
2
1.
2.
3.
4.
5.
6.
7.
8.
(0,
(0,
(0,
(1,
(0,
(0,
(1,
(0,
Vektor
0, 1,
0, 1,
1, 0,
0, 1,
0, 1,
1, 0,
0, 0,
1, 1,
(x)
0, 0,
0, 1,
0, 0,
0, 1,
1, 0,
1, 0,
1, 0,
1, 1,
1)
0)
1)
1)
0)
0)
1)
1)
Kelas
1
1
1
1
2
2
2
2
akan digunakan sebagai data yang akan dilatih. Arsitektur jaringan syaraf pada
contoh 8.8 ini seperti terlihat pada Gambar 8.29.
x1
x2
x-w 1
y_in 1
F1
y1
x3
x4
x-w 2
y_in 2
F2
y2
x5
x6
Gambar 8.29 Arsitektur jaringan untuk contoh 8.8.
Sebagai nilai awal dipilih learning rate (=0,05), dengan pengurangan sebesar
0,1*; dan maksimum epoh (MaxEpoh=10).
Epoh ke-1:
Data ke-1: (0, 0, 1, 0, 0, 1)
Jarak pada:
* bobot ke-1 =
= (0 1)2 (0 0)2 (1 0)2 (0 0)2 (0 1)2 (1 0)2 = 2,0.
* bobot ke-2 =
= (0 1)2 (0 1)2 (1 1)2 (0 1)2 (0 1)2 (1 0)2 = 2,0.
Jarak terkecil pada bobot ke-1
Target data ke-1= 1
Bobot ke- 1 baru:
w11 = w11 + *(x11 w 11) = 1 + 0,05*(0-1) = 0,9500;
w12 = w12 + *(x12 w 12) = 0 + 0,05*(0-0) = 0,0000;
190
+
+
+
+
0,05*(1-0)
0,05*(0-0)
0,05*(0-1)
0,05*(1-0)
0,0000
=
=
=
=
0,9500
0,0500;
0,0000;
0,9500;
0,0500;
0,0500)
0,8574;
0,0500;
0,0926;
0,0000;
0,9049;
0,0951;
191
* bobot ke-1 =
= (1 0,8574)2 (0 0,0500)2 (1 0,0926)2 (0 0)2 (1 0,9049)2 (1 0,0951)2
= 1,2938
* bobot ke-2 =
= (1 0)2 (0 1)2 (1 1)2 (0 1)2 (1 1)2 (1 0)2
= 2,000.
Jarak terkecil pada bobot ke-1
Target data ke-4= 1
Bobot ke- 1 baru:
w11 = w11 + *(x41 w 11) = 0,8574 + 0,05*(1-0,8574) =
w12 = w12 + *(x42 w 12) = 0,0500 + 0,05*(0-0,0500) =
w13 = w13 + *(x43 w 13) = 0,0926 + 0,05*(1-0,0926) =
w14 = w14 + *(x44 w 14) = 0,0000 + 0,05*(0-0,0000) =
w15 = w15 + *(x45 w 15) = 0,9049 + 0,05*(1-0,9049) =
w16 = w16 + *(x46 w 16) = 0,0951 + 0,05*(1-0,0951) =
Jadi:
w1 = (0,8645 0,0475 0,1380 0,0000 0,9096 0,1404)
0,8645;
0,0475;
0,1380;
0,0000;
0,9096;
0,1404;
192
w22
w23
w24
w25
w26
Jadi:
w2 =
=
=
=
=
=
w22
w23
w24
w25
w26
+
+
+
+
+
(0,0000
*(x62
*(x63
*(x64
*(x65
*(x66
0,9525
w 22)
w 23)
w 24)
w 25)
w 26)
=
=
=
=
=
0,9500
1,0000
1,0000
0,9500
0,0000
0,9500
+
+
+
+
+
1,0000
0,05*(1-0,9500)
0,05*(0-1,0000)
0,05*(1-1,0000)
0,05*(0-0,9500)
0,05*(0-0,0000)
0,9025
=
=
=
=
=
0,9525;
0,9500;
1,0000;
0,9025;
0,0000;
0,0000)
193
Proses tersebut diteruskan untuk epoh ke-2 sampai ke-10, untuk setiap data
dengan menggunakan cara yang sama. Setelah mencapai epoh yang ke-10
diperoleh bobot akhir:
w 1 = (0,3727
w 2 = (0,0000
0,2161
0,7969
0,6347 -0,2164
0,7900 1,0000
0,7981
0,5869
0,4254)
0,2171)
Apabila kita ingin mensimulasikan input: (0, 1, 0, 1, 1, 0), 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 0,3727)2 (1 0,2161)2 (0 0,6347)2 (1 0,2164)2 (1 0,7981)2 (0 0,4254)2
= 1,6904
* bobot ke-2 =
= (0 0)2 (1 0,7969)2 (0 0,7900)2 (1 1)2 (1 0,5869)2 (0 0,2171)2
= 0,9398
Jarak terkecil pada bobot ke-2
Sehingga input tersebut termasuk dalam kelas 2.
Contoh 8.9:
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 8.30.
0
0
0
0
0
0
1
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 0 0 0 1 0
1 1 1 1 1 0
1 1 1 1 1 0
1 0 0 0 1 0
1 0 0 0 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 8.31, 8.32 dan 8.33):
194
195
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:
P 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 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,0500
0,0000
0,0000
1,0500
1,0000
1,0000
1,0000
1,0000
1,0000
1,0000
1,0500
1,0000
0,0000
0,0000
1,0500
1,0000
1,0000
1,0500
1,0500
1,0000
0,0000
1,0500
1,0000
1,0000
1,0500
0,0000
1,0500
1,0000
1,0500
1,0000
...
...
...
...
...
...
...
= 0,0450
Data ke-2:
P 2 = (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 1,0000 0,0000 1,0000
0,0450 0,0000 0,0450 0,9550
0,0000 0,0450 0,9550 0,0000
1,0000 1,0000 0,0000 0,0000
1,0000 0,0000 0,0000 1,0000
0,0000 1,0000 1,0000 0,0000
1,0000 1,0000 0,0000 0,0000
= 0,0405
0,0000
0,0000
0,0000
0,0000
1,0000
0,0000
0,0000
0,0000
0,0000
0,0000
0,0000
1,0000
0,9550
0,0000
0,0000
1,0000
0,0000
0,0000
0,9550
1,0000
0,9550
0,0000
1,0000
1,0000
0,0000
0,9550
0,0450
1,0000
0,9550
1,0000
1,0000
...
...
...
...
...
...
...
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:
196
w1 =
-0,0297
0,0113
0,0990
0,0000
0,9080
0,9590
0,1330
1,0000
-0,0297 -0,0140
1,0297 0,0000
0,0000 0,0990
0,0513 0,9044
0,9557 0,0443
0,1330 0,1330
1,0297 0,8670
0,8670 -0,0140
1,0297 -0,0140
1,0297 0,0113
0,9010 0,0000
0,0443 0,0443
0,1330 0,9590
0,8670 0,0000
0,0000 0,0000
0,0000 -0,0140
-0,0297
0,0000
0,0443
0,9557
0,9375
0,0000
0,0000
0,8670
w2 =
1,0000
0,8858
0,0000
0,0244
0,9570
0,9097
0,9709
0,9733
0,1358 1,0217
0,0000 0,0000
0,0000 0,0000
0,0244 0,9203
0,0903 -0,0322
0,0506 1,0000
1,0000 0,8858
0,1464 1,0322
1,0217
0,0000
0,0244
0,0553
1,0000
0,0000
0,0000
1,0322
w3=
1,0000 0,9823
1,0327 0,0000
0,0194 0,0194
0,0194 0,0194
1,0132 1,0327
1,0000 1,0000
1,0000 1,0000
1,0000 1,0327
Apabila kita ingin
-0,0504 -0,0504
0,0000 0,0000
0,0194 1,0327
1,0327 1,0000
1,0000 1,0000
1,0000 1,0504
1,0327 0,0000
0,0000 0,0000
melakukan testing
1,0217
0,9203
0,9756
0,9733
0,0185
0,0000
0,0000
1,0322
-0,0504
1,0327
1,0000
1,0000
1,0000
0,0177
0,0000
0,0000
input:
-0,0297
0,0000
0,9044
0,9080
0,9375
0,0000
0,8670
1,0000
0,0000
0,9010
0,0513
0,9080
0,9375
0,8670
1,0297
...
...
...
...
...
...
...
0,1014 -0,0005
0,0797 1,0000
1,0000 0,0244
0,0712 0,9570
0,0185 0,0185
0,0000 0,0000
0,0000 0,0345
0,9978 -0,0005
1,0000
0,0000
0,0244
0,9570
0,0185
0,0291
0,9655
...
...
...
...
...
...
...
0,9823
1,0000
1,0000
1,0327
0,9806
0,0177
0,0000
1,0327
1,0000
1,0327
0,0194
1,0132
0,9806
1,0504
1,0000
...
...
...
...
...
...
...
1,0000
1,0000
1,0327
1,0132
0,9806
0,0177
1,0327
1,0000
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);
197
menggunakan Metode LVQ untuk melatih pola-pola yang ada, sehingga nantinya
kalo ada pola baru, kita dapat menentukan pola tersebut termasuk dalam kelas
mana.
1
2
3
8
198
Gambar 8.37 Matriks 8x7 dengan tiap elemen berisi 10x10 piksel.
Dari matriks berukuran 60x56 ini kita gunakan 3 baris sebagai bobot. Ketiga baris
tersebut adalah elemen matriks pada baris ke-1 (pola huruf A), baris ke-21 (pola
huruf B), dan baris ke 41 (pola huruf H). Ukuran matriks bobot bobot 56x3.
Sehingga untuk pembelajaran hanya kita lakukan pada elemen-elemen sisanya,
yaitu matriks berukuran 57x56. Vektor target berukuran 57, dengan nilai 1 yang
mewakili huruf A, nilai 2 mewakili huruf B, dan nilai 3 mewakili huruf H.
Matriks bobot setelah epoh ke-10 adalah:
W =
0,000
0,000
-0,066
0,000
0,000
0,000
0,000
0,000
0,000
0,000
-0,054
0,000
0,000
0,000
0,000
0,000
0,000
0,000
0,000
0,000
0,000
0,000
0,000
0,000
-0,016
0,214
0,191
0,016
0,974
-0,029
0,932
0,805
-0,166
0,933
0,495
0,028
0,000
0,019
0,285
0,000
0,000
0,000
0,000
0,000
0,000
-0,105
0,904
1,152
0,108
0,947
0,431
0,914
0,640
-0,293
0,910
0,524
0,939
0,884
0,228
0,733
0,000
0,000
0,000
0,000
0,000
0,000
-0,088
0,098
1,075
0,960
1,009
0,702
0,853
1,163
0,508
1,000
0,957
0,952
1,070
0,067
0,762
0,000
0,000
0,000
0,000
0,000
0,000
0,157
0,085
1,142
0,947
0,926
0,958
0,149
0,031
0,830
0,272
0,619
1,013
1,025
1,031
0,613
0,760
0,000
0,000
0,000
0,000
0,069
0,866
0,585
1,038
0,990
1,108
0,490
-0,075
0,952
0,103
0,147
0,983
1,028
1,080
0,171
0,334
0,760
0,000
0,000
0,000
-0,056
0,000
0,730
0,304
0,931
199
-0,040
-0,040
-0,024
-0,017
0,000
0,000
0,000
0,000
0,000
0,000
0,000
0,000
0,608
0,828
0,422
-0,058
0,000
0,000
0,000
0,000
0,000
0,000
0,000
0,000
0,178
0,032
0,716
0,198
0,000
0,000
0,000
0,000
0,000
0,000
0,000
0,000
Sekarang kita akan lakukan testing terhadap pola karakter yang ikut dilatih, yaitu
input data ke-2 masing-masing untuk huruf A, B dan H.
Untuk huruf A:
o Jarak terhadap bobot ke-1 = 3,0681
o Jarak terhadap bobot ke-2 = 3,0736
o Jarak terhadap bobot ke-3 = 3,4500
Jarak paling pendek adalah jarak dengan bobot ke-1, dengan demikian pola
karakter tersebut dikenali sebagai huruf A.
Untuk huruf B:
o Jarak terhadap bobot ke-1 = 3,5087
o Jarak terhadap bobot ke-2 = 2,4079
o Jarak terhadap bobot ke-3 = 3,5897
Jarak paling pendek adalah jarak dengan bobot ke-2, dengan demikian pola
karakter tersebut dikenali sebagai huruf B.
Untuk huruf H:
o Jarak terhadap bobot ke-1 = 3,3045
o Jarak terhadap bobot ke-2 = 3,9236
o Jarak terhadap bobot ke-3 = 2,1927
Jarak paling pendek adalah jarak dengan bobot ke-3, dengan demikian pola
karakter tersebut dikenali sebagai huruf H.
Kemudian kita akan melakukan testing terhadap pola karakter yang belum
dikenali (tidak ikut dilatih). Pola tersebut ada yang berupa karakter yang sama
sekali tidak ikut dilatih, dan ada pula yang merupakan modifikasi dari karakter
yang ikut dilatih dengan menghilangkan beberapa bagiannya. Hasilnya terlihat
pada Tabel 8.3:
Tabel 8.3 Hasil testing terhadap pola yang belum dikenali.
Jarak
Jarak terhadap bobot keDikenali
terdekat
sebagai
Pola
dengan
3,6943
3,3908
2,8775
bobot ke-
huruf
200
3,1688
3,3245
2,9300
3,6657
2,8964
3,6568
3,2154
3,3497
3,7467
4,1239
2,6657
2,8438
3,5281
3,8501
2,5597
2,8987
3,3070
3,5529
4,1124
2,5066
3,0339
Dari hasil pada tabel terlihat bahwa, dari 8 pola tersebut hanya 1 pola yang tidak
tepat dari dugaan, yaitu pola ke-2. Pada pola tersebut dugaan kita adalah
mendekati huruf A, namun setelah dites ternyata pola tersebut lebih mendekati
huruf H.
201
(wij xi)2
i
Contoh 8.11:
Misalkan kita ingin mengcluster data-data berikut:
X1
X2
0,10
0,10
0,20
0,20
0,30
0,10
0,50
0,30
0,40
0,40
0,20
0,40
menjadi 2 cluster. Bobot awal yang akan kita gunakan adalah matriks berukuran
2x2 dengan tiap-tiap elemen bernilai 0,5. Learning rate (=0,6) dengan tiap
kenaikan epoh akan diset 0,5x(). Maksimum epoh ditetapkan sebesar 10.
alfa ()= 0,60
MaxEpoh = 10
Pengurangan alfa = 0,50
Matriks yang akan dicluster, X:
0,10
0,10
0,20
0,20
0,30
0,10
0,50
0,30
0,40
0,40
0,20
0,40
Bobot awal:
0,50 0,50
0,50 0,50
Epoh ke- 1
-------------------Data ke- 1
Jarak pada:
* bobot ke-1 = (0,5 0,1)2 + (0,5 0,1)2 = 0,32
* bobot ke-2 = (0,5 0,1)2 + (0,5 0,1)2 = 0,32
Jarak terkecil pada bobot ke-1
Bobot ke- 1 baru:
w11 = 0,5 + 0,6(0,1 0,5) = 0,26
w12 = 0,5 + 0,6(0,1 0,5) = 0,26
Data ke- 2
Jarak pada:
* bobot ke-1 = (0,26 0,2)2 + (0,26 0,2)2 = 0,0072
202
0,2960
= 0,3968
= 0,5*0,6 = 0,3
Nilai bobot akhir setelah epoh ke-10 adalah:
w=
0,2190
0,1351
0,3424
0,3754
Misalkan kita akan melakukan testing terhadap data ketiga: [0,3 0,1] termasuk
dalam cluster mana, maka kita cari terlebih dahulu jarak data tersebut pada
bobot setiap cluster:
Jarak pada:
* bobot ke-1 = (0,2190 0,3)2 + (0,1351 0,1)2 = 0,0078
* bobot ke-2 = (0,3424 0,3)2 + (0,3754 0,1)2 = 0,0776
203
Ternyata jarak yang lebih pendek adalah jarak terhadap bobot ke-1, maka data
tersebut termasuk dalam cluster pertama.
Kita juga bisa melakukan testing terhadap data yang tidak ikut dilatih, misalkan:
[0,4 0,5] termasuk dalam cluster mana, maka seperti biasa kita cari terlebih
dahulu jarak data tersebut pada bobot setiap cluster:
Jarak pada:
* bobot ke-1 = (0,2190 0,4)2 + (0,1351 0,5)2 = 0,1997
* bobot ke-2 = (0,3424 0,4)2 + (0,3754 0,5)2 = 0,0404
Ternyata jarak yang lebih pendek adalah jarak terhadap bobot ke-2, maka data
tersebut termasuk dalam cluster kedua.
204