Senin, 07 Juni 2010

JST

149
JARINGAN SYARAF TIRUAN
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.
Gambar 8.1 Susunan syaraf manusia.
Gambar 8.1 menunjukkan susunan syaraf pada manusia. Setiap sel syaraf
(neuron) akan memiliki satu inti sel, inti sel ini nanti yang akan bertukan untuk
melakukan pemrosesan informasi. Informasi yang datang akan diterima oleh
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 datang dan
diterima oleh dendrit akan dijumlahkan dan dikirim melalui axon ke dendrit akhir
yang bersentuhan dengan dendrit dari neuron yang lain. Informasi ini akan
diterima oleh neuron lain jika memenuhi batasan tertentu, yang sering dikenal
dengan nama nilai ambang (threshold). Pada kasus ini, neuron tersebut
dikatakan teraktivasi. Hubungan antar neuron terjadi secara adaptif, artinya
struktur hubungan tersebut terjadi secara dinamis. Otak manusia selalu memiliki
kemampuan untuk belajar dengan melakukan adaptasi.
8.2 SEJARAH
Mulai dari ditemukannya, jaringan syaraf tiruan telah mengalami tahap-tahap
perkembangan, antara lain:
􀂔 Pada tahun 1940-an, para ilmuwan menemukan bahwa psikologi dari otak
sama dengan mode pemrosesan yang dilakukan oleh peralatan komputer.
Sel-1
(Neuron-1)
Sel-2
(Neuron-2)
Inti Sel
(Neucleus)
Dendrit Axon
Synapsis
Dendrit
8
150
􀂔 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.
8.3 KOMPONEN JARINGAN SYARAF
Ada beberapa tipe jaringan syaraf, namun demikian, hampir semuanya memiliki
komponen-komponen yang sama. Seperti halnya otak manusia, jaringan syaraf
juga terdiri-dari beberapa neuron, dan ada hubungan antara neuron-neuron
tersebut. Neuron-neuron tersebut akan mentransformasikan informasi yang
diterima melalui sambungan keluarnya menuju ke neuron-neuron yang lain. Pada
jaringan syaraf, hubungan ini dikenal dengan nama bobot. Informasi tersebut
disimpan pada suatu nilai tertentu pada bobot tersebut. Gambar 8.2
menunjukkan struktur neuron pada jaringan syaraf.
Gambar 8.2 Struktur neuron jaringan syaraf.
Σ Fungsi aktivasi
Output
bobot
bobot
Input dari
neuronneuron
yang lain
Output ke
neuronneuron
yang lain
151
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.
Gambar 8.3 Jaringan syaraf dengan 3 lapisan.
Gambar 8.3 bukanlah struktur umum jaringan syaraf. Beberapa jaringan syaraf
ada juga yang tidak memiliki lapisan tersembunyi, dan ada juga jaringan syaraf
dimana neuron-neuronnya disusun dalam bentuk matriks.
8.4 ARSITEKTUR JARINGAN
Seperti telah dijelaskan sebelumnya bahwa neuron-neuron dikelompokkan dalan
lapisan-lapisan. Umumnya, neuron-neuron yang terletak pada lapisan yang sama
akan memiliki keadaan yang sama. Faktor terpenting dalam menentukan
kelakuan suatu neuron adalah fungsi aktivasi dan pola bobotnya. Pada setiap
lapisan yang sama, neuron-neuron akan memiliki fungsi aktivasi yang sama.
Nilai input
Neuron-neuron pada
lapisan input
Neuron-neuron pada
lapisan tersembunyi
Neuron-neuron pada
lapisan output
Nilai output
152
Apabila neuron-neuron dalam suatu lapisan (misalkan lapisan tersembunyi) akan
dihubungkan dengan neuron-neuron pada lapisan yang lain (misalkan lapisan
output), maka setiap neuron pada lapisan tersebut (misalkan lapisan
tersembunyi) juga harus dihubungkan dengan setiap lapisan pada lapisan lainnya
(misalkan lapisan output).
Ada beberapa arsitektur jaringan syaraf, antara lain:
a. Jaringan dengan lapisan tunggal (single layer net)
Jaringan dengan lapisan tunggal hanya memiliki satu lapisan dengan bobot-bobot
terhubung. Jaringan ini hanya menerima input kemudian secara langsung akan
mengolahnya menjadi output tanpa harus melalui lapisan tersembunyi (Gambar
8.4). Pada Gambar 8.4 tersebut, lapisan input memiliki 3 neuron, yaitu X1, X2 dan
X3. Sedangkan pada lapisan output memiliki 2 neuron yaitu Y1 dan Y2. Neuronneuron
pada kedua lapisan saling berhubungan. Seberapa besar hubungan antara
2 neuron ditentukan oleh bobot yang bersesuaian. Semua unit input akan
dihubungkan dengan setiap unit output.
Gambar 8.4 Jaringan syaraf dengan lapisan tunggal.
b. Jaringan dengan banyak lapisan (multilayer net)
Jaringan dengan banyak lapisan memiliki 1 atau lebih lapisan yang terletak
diantara lapisan input dan lapisan output (memiliki 1 atau lebih lapisan
tersembunyi), seperti terlihat pada Gambar 8.5. Umumnya, ada lapisan bobotbobot
yang terletak antara 2 lapisan yang bersebelahan. Jaringan dengan banyak
lapisan ini dapat menyelesaikan permasalahan yang lebih sulit daripada lapisan
dengan lapisan tunggal, tentu saja dengan pembelajaran yang lebih rumit.
Namun demikian, pada banyak kasus, pembelajaran pada jaringan dengan
banyak lapisan ini lebih sukses dalam menyelesaikan masalah.
Nilai input
Lapisan Input
Matriks bobot
Lapisan Output
Nilai output
w11
X1 X2 X3
Y1 Y2
w12
w21 w22 w31 w32
153
Gambar 8.5 Jaringan syaraf dengan banyak lapisan.
c. Jaringan dengan lapisan kompetitif (competitive layer net)
Umumnya, hubungan antar neuron pada lapisan kompetitif ini tidak diperlihatkan
pada diagram arsitektur. Gambar 8.6 menunjukkan salah satu contoh arsitektur
jaringan dengan lapisan kompetitif yang memiliki bobot -η.
Gambar 8.6 Jaringan syaraf dengan lapisan kompetitif.
8.5 FUNGSI AKTIVASI
Ada beberapa fungsi aktivasi yang sering digunakan dalam jaringan syaraf tiruan,
antara lain:
a. Fungsi Undak Biner (Hard Limit)
Jaringan dengan lapisan tunggal sering menggunakan fungsi undak (step
function) untuk mengkonversikan input dari suatu variabel yang bernilai
kontinu ke suatu output biner (0 atau 1) (Gambar 8.7).
Nilai input
Lapisan Input
Matriks bobot
pertama
Lapisan Tersembunyi
Nilai output
v11
X1 X2 X3
Z1 Z2
v12
v21 v22 v31 v32
Matriks bobot kedua
Y Lapisan Output
w1 w2
A1 Am
Ai Aj



-η -η

1
1 1
1
154
Fungsi undak biner (hard limit) dirumuskan sebagai:
⎩ ⎨ ⎧
>

=
1, jika x 0
0, jika x 0
y
Gambar 8.7 Fungsi aktivasi: Undak Biner (hard limit).
b. Fungsi Undak Biner (Threshold)
Fungsi undak biner dengan menggunakan nilai ambang sering juga disebut
dengan nama fungsi nilai ambang (threshold) atau fungsi Heaviside (Gambar
8.8).
Fungsi undak biner (dengan nilai ambang θ) dirumuskan sebagai:
⎩ ⎨ ⎧

<
=
θ
θ
1, jika x
0, jika x
y
Gambar 8.8 Fungsi aktivasi: Undak Biner (threshold).
c. Fungsi Bipolar (Symetric Hard Limit)
Fungsi bipolar sebenarnya hampir sama dengan fungsi undak biner, hanya saja
output yang dihasilkan berupa 1, 0 atau –1 (Gambar 8.9).
Fungsi Symetric Hard Limit dirumuskan sebagai:
⎪⎩
⎪⎨ ⎧
− <
=
>
=
1, jika x 0
0, jika x 0
1, jika x 0
y
Gambar 8.9 Fungsi aktivasi: Bipolar (symetric hard limit).
0
1
y
x
0
1
y
θ x
0
1
y
x
-1
155
d. Fungsi Bipolar (dengan threshold)
Fungsi bipolar sebenarnya hampir sama dengan fungsi undak biner dengan
threshold, hanya saja output yang dihasilkan berupa 1, 0 atau –1 (Gambar
8.10).
Fungsi bipolar (dengan nilai ambang θ) dirumuskan sebagai:
⎩ ⎨ ⎧
− <

=
θ
θ
1, jika x
1, jika x
y
Gambar 8.10 Fungsi aktivasi: Bipolar (threshold).
e. Fungsi Linear (identitas)
Fungsi linear memiliki nilai output yang sama dengan nilai inputnya (Gambar
8.11).
Fungsi linear dirumuskan sebagai:
y = x
Gambar 8.11 Fungsi aktivasi: Linear (identitas).
f. Fungsi Saturating Linear
Fungsi ini akan bernilai 0 jika inputnya kurang dari –½, dan akan bernilai 1
jika inputnya lebih dari ½. Sedangkan jika nilai input terletak antara –½ dan
½, maka outpunya akan bernilai sama dengan nilai input ditambah ½ (Gambar
8.12).
Fungsi saturating linear dirumuskan sebagai:
⎪⎩
⎪⎨

≤ −
+ − ≤ ≤

=
0; jika x 0,5
x 0,5; jika 0,5 x 0,5
1; jika x 0,5
y
0
1
y
x
-1
θ
0
1
y
x
-1
-1 1
156
Gambar 8.12 Fungsi aktivasi: Saturating Linear
g. Fungsi Symetric Saturating Linear
Fungsi ini akan bernilai -1 jika inputnya kurang dari –1, dan akan bernilai 1
jika inputnya lebih dari 1. Sedangkan jika nilai input terletak antara –1 dan 1,
maka outpunya akan bernilai sama dengan nilai inputnya (Gambar 8.13).
Fungsi symetric saturating linear dirumuskan sebagai:
⎪⎩
⎪⎨

− ≤ −
− ≤ ≤

=
1; jika x 1
x; jika 1 x 1
1; jika x 1
y
Gambar 8.13 Fungsi aktivasi: Symetric Saturating Linear.
h. Fungsi Sigmoid Biner.
Fungsi ini digunakan untuk jaringan syaraf yang dilatih dengan menggunakan
metode backpropagation. Fungsi sigmoid biner memiliki nilai pada range 0
sampai 1. Oleh karena itu, fungsi ini sering digunakan untuk jaringan syaraf
yang membutuhkan nilai output yang terletak pada interval 0 sampai 1.
Namun, fungsi ini bisa juga digunakan oleh jaringan syaraf yang nilai
outputnya 0 atau 1 (Gambar 8.14).
Fungsi sigmoid biner dirumuskan sebagai:
1 e x
1
y f(x)
+ −σ
= =
dengan: f'(x) = σf(x)[1 − f(x)]
0
1
y
-0,5 0,5 x
0
1
y
-1 1 x
-1
157
Gambar 8.14 Fungsi aktivasi: Sigmoid Biner.
i. Fungsi Sigmoid Bipolar
Fungsi sigmoid bipolar hampir sama dengan fungsi sigmoid biner, hanya saja
output dari fungsi ini memiliki range antara 1 sampai –1 (Gambar 8.15).
Fungsi sigmoid bipolar dirumuskan sebagai:
x
x
1 e
1 e
y f(x)


+

= =
dengan: [1 f(x)][1 f(x)]
2
f'(x) = + −
σ
Fungsi ini sangat dekat dengan fungsi hyperbolic tangent. Keduanya memiliki
range antara –1 sampai 1. Untuk fungsi hyperbolic tangent, dirumuskan
sebagai:
x x
x x
e e
e e
y f(x)


+

= =
atau 2x
2x
1 e
1 e
y f(x)


+

= =
dengan: f'(x) = [1 + f(x)][1 − f(x)]
Gambar 8.15 Fungsi aktivasi: Sigmoid Bipolar.
-10 -8 -6 -4 -2 0 2 4 6 8 10
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
x
y
σ=0,5
σ=1
σ=2
-10 -8 -6 -4 -2 0 2 4 6 8 10
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
x
y
σ=0,5
σ=1
σ=2
158
8.6 PROSES PEMBELAJARAN
Pada otak manusia, informasi yang dilewatkan dari satu neuron ke neuron yang
lainnya berbentuk rangsangan listrik melalui dendrit. Jika rangsangan tersebut
diterima oleh suatu neuron, maka neuron tersebut akan membangkitkan output
ke semua neuron yang berhubungan dengannya sampai informasi tersebut
sampai ke tujuannya yaitu terjadinya suatu reaksi. Jika rangsangan yang diterima
terlalu halus, maka output yang dibangkitkan oleh neuron tersebut tidak akan
direspon. Tentu saja sangatlah sulit untuk memahami bagaimana otak manusia
bisa belajar. Selama proses pembelajaran, terjadi perubahan yang cukup berarti
pada bobot-bobot yang menghubungkan antar neuron. Apabila ada rangsangan
yang sama dengan rangsangan yang telah diterima oleh neuron, maka neuron
akan memberikan reaksi dengan cepat. Namun apabila kelak ada rangsangan
yang berbeda dengan apa yang telah diterima oleh neuron, maka neuron akan
segera beradaptasi untuk memberikan reaksi yang sesuai.
Jaringan syaraf akan mencoba untuk mensimulasikan kemampuan otak manusia
untuk belajar. Jaringan syaraf tiruan juga tersusun atas neuron0neuron dan
dendrit. Tidak seperti model biologis, jaringan syaraf memiliki struktur yang tidak
dapat diubah, dibangun oleh sejumlah neuron, dan memiliki nilai tertentu yang
menunjukkan seberapa besar koneksi antara neuron (yang dikenal dengan nama
bobot). Perubahan yang terjadi selama proses pembelajaran adalah perubahan
nilai bobot. Nilai bobot akan bertambah, jika informasi yang diberikan oleh
neuron yang bersangkutan tersampaikan, sebaliknya jika informasi tidak
disampaikan oleh suatu neuron ke neuron yang lain, maka nilai bobot yang
menghubungkan keduanya akan dikurangi. Pada saat pembelajaran dilakukan
pada input yang berbeda, maka nilai bobot akan diubah secara dinamis hingga
mencapai suatu nilai yang cukup seimbang. Apabila nilai ini telah tercapai
mengindikasikan bahwa tiap-tiap input telah berhubungan dengan output yang
diharapkan.
a. Pembelajaran terawasi (supervised learning)
Metode pembelajaran pada jaringan syaraf disebut terawasi jika output yang
diharapkan telah diketahui sebelumnya.
Contoh: andaikan kita memiliki jaringan syaraf yang akan digunakan untuk
mengenali pasangan pola, misalkan pada operasi AND:
Input target
0 0 0
0 1 0
1 0 0
1 1 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.
159
b. Pembelajaran tak terawasi (unsupervised learning)
Pada metode pembelajaran yang tak terawasi ini tidak memerlukan target output.
Pada metode ini, tidak dapat ditentukan hasil yang seperti apakah yang
diharapkan selama proses pembelajaran. Selama proses pembelajaran, nilai
bobot disusun dalam suatu range tertentu tergantung pada nilai input yang
diberikan. Tujuan pembelajaran ini adalah mengelompokkan unit-unit yang
hampir sama dalam suatu area tertentu. Pembelajaran ini biasanya sangat cocok
untuk pengelompokan (klasifikasi) pola.
8.7 PEMBELAJARAN TERAWASI (SUPERVISED LEARNING)
A. 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’
(on) pada saat yang sama, maka bobot antara keduanya dinaikkan. Apabila data
direpresentasikan secara bipolar, maka perbaikan bobotnya adalah:
wi(baru) = wi(lama) + xi*y
dengan:
wi : bobot data input ke-i;
xi : input data ke-i.
y : output data.
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. Inisialisasi semua bobot:
wij = 0; dengan i=1,2,...,n; dan j=1,2,...,m.
1. Untuk setiap pasangan input-output (s-t), lakukan 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 8.1:
Misalkan kita ingin membuat jaringan syaraf untuk melakukan pembelajaran
terhadap fungsi OR dengan input dan target bipolar sebagai berikut:
160
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.
Arsitektur jaringan untuk contoh 8.1.
Gambar 8.16 Arsitektur jaringan contoh 8.1.
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
y_in F(y_in) y
x1
x2
1
b
w2
w1
Σxw+b
161
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).
Gambar 8.17 Pembatasan linear dengan perceptron.
Garis pemisah antara daerah positif dan daerah nol memiliki pertidaksamaan:
w1x1 + w2x2 + b > θ
Sedangkan garis pemisah antara daerah negatif dengan daerah nol memiliki
pertidaksamaan:
w1x1 + w2x2 + b < -θ
Misalkan kita gunakan pasangan vektor input s dan vektor output sebagai
pasangan vektor yang akan dilatih.
Algoritma:
0. Inisialisasi semua bobot dan bias:
(untuk sederhananya set semua bobot dan bobot bias sama dengan nol).
Set learning rate: α (0 < α ≤ 1).
(untuk sederhananya set sama dengan 1).
1. Selama kondisi berhenti bernilai false, lakukan langkah-langkah sebagai
berikut:
(i). Untuk setiap pasangan pembelajaran s-t, kerjakan:
a. Set input dengan nilai sama dengan vektor input:
xi = si;
x1
x2
+
-
-
+
daerah
positif
daerah
negatif
daerah
nol
162
b. Hitung respon untuk unit output:
= +Σ
i
y _ in b xiwi
⎪⎩
⎪⎨

− <
− ≤ ≤
>
=
θ
θ θ
θ
1, jika y _ in
0, jika y _ in
1, jika y _ in
y
c. Perbaiki bobot dan bias jika terjadi error:
Jika y ≠ t maka:
wi(baru) = wi(lama) + α*t*xi
b(baru) = b(lama) + α*t
jika tidak, maka:
wi(baru) = wi(lama)
b(baru) = b(lama)
(ii). Tes kondisi berhenti: jika tidak terjadi perubahan bobot pada (i) maka
kondisi berhenti TRUE, namun jika masih terjadi perubahan maka kondisi
berhenti FALSE.
Algoritma di atas bisa digunakan baik untuk input biner maupun bipolar, dengan θ
tertentu, dan bias yang dapat diatur. Pada algoritma tersebut bobot-bobot yang
diperbaiki hanyalah bobot-bobot yang berhubungan dengan input yang aktif (xi ≠
0) dan bobot-bobot yang tidak menghasilkan nilai y yang benar.
Contoh 8.2:
Misalkan kita ingin membuat jaringan syaraf untuk melakukan pembelajaran
terhadap fungsi AND dengan input biner dan target bipolar sebagai berikut:
Input Bias Target
1 1 1 1
1 0 1 -1
0 1 1 -1
0 0 1 -1
Arsitektur jaringan untuk contoh 8.2 terlihat pada Gambar 8.18.
Gambar 8.18 Arsitektur jaringan contoh 8.2.
Bobot awal : w = [0,0 0,0]
Bobot bias awal : b = [0,0]
Learning rate (alfa): 0,8
Threshold (tetha) : 0,5
y_in F(y_in) y
x1
x2
1
b
w2
w1
Σxw+b
163
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
164
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
165
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
--------------------
166
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:
167
b = -2,4 + 0,8 * -1,0 = -3,2
Data ke-4
y_in = -3,2 + 0,0 + 0,0 = -3,2
Hasil aktivasi = -1 (y_in < -0,5)
Target = -1
Epoh ke-8
--------------------
Data ke-1
y_in = -3,2 + 0,8 + 1,6 = -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 = 1,6 + 0,8 * 1,0 * 1,0 = 2,4
Bobot bias baru:
b = -3,2 + 0,8 * 1,0 = -2,4
Data ke-2
y_in = -2,4 + 1,6 + 0,0 = -0,8
Hasil aktivasi = -1 (y_in < -0,5)
Target = -1
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 = 1,6 + 0,8 * -1,0 * 0,0 = 1,6
w2 = 2,4 + 0,8 * -1,0 * 1,0 = 1,6
Bobot bias baru:
b = -2,4 + 0,8 * -1,0 = -3,2
Data ke-4
y_in = -3,2 + 0,0 + 0,0 = -3,2
Hasil aktivasi = -1 (y_in < -0,5)
Target = -1
Epoh ke-9
--------------------
Data ke-1
y_in = -3,2 + 1,6 + 1,6 = 0,0
Hasil aktivasi = 0 (-0,5 < y_in <0,5)
Target = 1
Bobot baru:
w1 = 1,6 + 0,8 * 1,0 * 1,0 = 2,4
w2 = 1,6 + 0,8 * 1,0 * 1,0 = 2,4
Bobot bias baru:
b = -3,2 + 0,8 * 1,0 = -2,4
Data ke-2
y_in = -2,4 + 2,4 + 0,0 = 0,0
Hasil aktivasi = 0 (-0,5 < y_in <0,5)
Target = -1
Bobot baru:
w1 = 2,4 + 0,8 * -1,0 * 1,0 = 1,6
w2 = 2,4 + 0,8 * -1,0 * 0,0 = 2,4
Bobot bias baru:
b = -2,4 + 0,8 * -1,0 = -3,2
168
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, w1 = 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 x1 + 2,4 x2 – 3,2 > 0,5
Sedangkan garis yang membatasi daerah negatif dengan daerah nol memenuhi
pertidaksamaan:
1,6 x1 + 2,4 x2 – 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:
Δwi = α(t – y_in)*xi;
169
dengan:
x = vektor input.
y_in = input jaringan ke unit output Y.
Σ=
=
n
i 1
y _ in xi *wi
t = target (output).
Nilai w baru diperoleh dari nilai w lama ditambah dengan Δw,
wi = wi + Δwi
Contoh 8.3:
Akan dibentuk jaringan syaraf untuk operasi OR (Tabel 8.1).
Tabel 8.1. Operasi OR
x1 x2
Target (t)
x1 OR x2
0
0
1
1
0
1
0
1
0
1
1
1
Ada 2 input (x1 dan x2) 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.
Gambar 8.19 Arsitektur jaringan pada Contoh 8.3.
Karena target yang diharapkan berbentuk biner, maka fungsi aktivasi yang
digunakan adalah fungsi undak biner, dengan θ = 0,5. Learning rate yang
digunakan adalah α = 0,2. Bobot awal yang dipilih w1 = 0,1 dan w2 = 0,3. Disini
nilai error (δ) diperoleh dari nilai t-y.
Pada Epoh pertama:
􀂃 Data ke-1 :
ο x11 = 0; x12 = 0; t1 = 0.
ο w1 = 0,1 dan w2 = 0,3.
ο a11 = x11w1 + x12w2 = 0*0,1 + 0*0,3 = 0.
ο y11 = 0, karena a11 = 0 ≤ 0,5.
ο δ11 = t1 – y11 = 0 – 0 = 0.
ο w1 = w1 + α*x11*δ11 = 0,1 + 0,2*0*0 = 0,1.
ο w2 = w2 + α*x12*δ11 = 0,3 + 0,2*0*0 = 0,3.
􀂃 Data ke-2 :
ο x21 = 0; x22 = 1; t2 = 1.
y_in F(y_in) y
x1
x2
w2
w1
Σxw
170
ο w1 = 0,1 dan w2 = 0,3.
ο a12 = x21w1 + x22w2 = 0*0,1 + 1*0,3 = 0,3.
ο y12 = 0, karena a12 = 0,3 ≤ 0,5.
ο δ12 = t2 – y12 = 1 – 0 = 1.
ο w1 = w1 + α*x21*δ12 = 0,1 + 0,2*0*1 = 0,1.
ο w2 = w2 + α*x22*δ12 = 0,3 + 0,2*1*1 = 0,5.
􀂃 Data ke-3 :
ο x31 = 1; x32 = 0; t3 = 1.
ο w1 = 0,1 dan w2 = 0,5.
ο a13 = x31w1 + x32w2 = 1*0,1 + 0*0,5 = 0,1.
ο y13 = 0, karena a13 = 0,1 ≤ 0,5.
ο δ13 = t3 – y13 = 1 – 0 = 1.
ο w1 = w1 + α*x31*δ13 = 0,1 + 0,2*1*1 = 0,3.
ο w2 = w2 + α*x32*δ13 = 0,5 + 0,2*0*1 = 0,5.
􀂃 Data ke-4 :
ο x41 = 1; x42 = 1; t4 = 1.
ο w1 = 0,3 dan w2 = 0,5.
ο a14 = x41w1 + x42w2 = 1*0,3 + 1*0,5 = 0,8.
ο y14 = 1, karena a14 = 0,8 > 0,5.
ο δ14 = t4 – y14 = 1 – 1 = 0.
ο w1 = w1 + α*x41*δ14 = 0,3 + 0,2*1*0 = 0,3.
ο w2 = w2 + α*x42*δ14 = 0,5 + 0,2*0*0 = 0,5.
Pada Epoh kedua:
􀂃 Data ke-1 :
ο x11 = 0; x12 = 0; t1 = 0.
ο w1 = 0,3 dan w2 = 0,5.
ο a21 = x11w1 + x12w2 = 0*0,3 + 0*0,5 = 0.
ο y21 = 0, karena a21 = 0 ≤ 0,5.
ο δ21 = t1 – y21 = 0 – 0 = 0.
ο w1 = w1 + α*x11*δ21 = 0,3 + 0,2*0*0 = 0,3.
ο w2 = w2 + α*x12*δ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.
Tabel 8.2. Hasil pembelajaran sampai epoh ke-4.
Epoh x Bobot Awal Bobot Akhir 1 x2 t
w1 w2
a y δ w1 w2
0 0 0 0,1 0,3 0 0 0,0 0,1 0,3
0 1 1 0,1 0,3 0,3 0 1,0 0,1 0,5
1 0 1 0,1 0,5 0,1 0 1,0 0,3 0,5
1
1 1 1 0,3 0,5 0,8 1 0,0 0,3 0,5
0 0 0 0,3 0,5 0 0 0,0 0,3 0,5
0 1 1 0,3 0,5 0,5 0 1,0 0,3 0,7
1 0 1 0,3 0,7 0,3 0 1,0 0,5 0,7
2
1 1 1 0,5 0,7 1,2 1 0,0 0,5 0,7
0 0 0 0,5 0,7 0 0 0,0 0,5 0,7
0 1 1 0,5 0,7 0,7 1 0,0 0,5 0,7
1 0 1 0,5 0,7 0,5 0 1,0 0,7 0,7
3
1 1 1 0,7 0,7 1,4 1 0,0 0,7 0,7
0 0 0 0,7 0,7 0 0 0,0 0,7 0,7
0 1 1 0,7 0,7 0,7 1 0,0 0,7 0,7
4
1 0 1 0,7 0,7 0,7 1 0,0 0,7 0,7
171
1 1 1 0,7 0,7 1,4 1 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:
1 e x
1
f(x)
+ −
=
Arsitektur jaringan backpropagation seperti terlihat pada Gambar 8.20.
Gambar 8.20 Arsitektur jaringan backpropagation.
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 (Xi, i=1,2,3,...,n) menerima sinyal xi dan
meneruskan sinyak tersebut ke semua unit pada lapisan yang ada
di atasnya (lapisan tersembunyi).
b. Tiap-tiap unit tersembunyi (Zi, j=1,2,3,...,p) menjumlahkan sinyalsinyal
input terbobot:
Σ=
= +
n
i 1
z _ inj v0j xivij
gunakan fungsi aktivasi untuk menghitung sinyal outputnya:
X1
X2
X3
Y1
Y2
Y3
Z1
Z2
v11
v12
v21
v22
v31
v32
w11
w12
w13
w21
w22
w23
172
zj = f(z_inj)
dan kirimkan sinyal tersebut ke semua unit di lapisan atasnya (unitunit
output).
c. Tiap-tiap unit output (Yk, k=1,2,3,...,m) menjumlahkan sinyalsinyal
input terbobot.
Σ=
= +
p
i 1
y _ink w0k ziwjk
gunakan fungsi aktivasi untuk menghitung sinyal outputnya:
yk = f(y_ink)
dan kirimkan sinyal tersebut ke semua unit di lapisan atasnya (unitunit
output).
Backpropagation
d. Tiap-tiap unit output (Yk, k=1,2,3,...,m) menerima target pola yang
berhubungan dengan pola input pembelajaran, hitung informasi
errornya:
δk = (tk – yk) f’(y_ink)
kemudian hitung koreksi bobot (yang nantinya akan digunakan
untuk memperbaiki nilai wjk):
Δwjk = α δk zj
hitung juga koreksi bias (yang nantinya akan digunakan untuk
memperbaiki nilai w0k):
Δw0k = α δk
kirimkan δk ini ke unit-unit yang ada di lapisan bawahnya.
e. Tiap-tiap unit tersembunyi (Zj, j=1,2,3,...,p) menjumlahkan delta
inputnya (dari unit-unit yang berada pada lapisan di atasnya):
Σ=
=
m
k 1
δ _inj δkwjk
kalikan nilai ini dengan turunan dari fungsi aktivasinya untuk
menghitung informasi error:
δj = δ_inj f’(z_inj)
kemudian hitung koreksi bobot (yang nantinya akan digunakan
untuk memperbaiki nilai vij):
Δvjk = α δj xi
hitung juga koreksi bias (yang nantinya akan digunakan untuk
memperbaiki nilai v0j):
173
Δv0j = α δj
f. Tiap-tiap unit output (Yk, k=1,2,3,...,m) memperbaiki bias dan
bobotnya (j=0,1,2,...,p):
wjk(baru) = wjk(lama) + Δwjk
Tiap-tiap unit tersembunyi (Zj, j=1,2,3,...,p) memperbaiki bias dan
bobotnya (i=0,1,2,...,n):
vij(baru) = vij(lama) + Δvij
2. Tes kondisi berhenti,
Contoh 8.4:
Akan dibentuk jaringan syaraf untuk operasi XOR. Ada 2 input (X1 dan X2) dengan
1 output (target T). Arsitektur jaringan (Gambar 8.21) terdiri-dari:
􀁄 1 lapisan input,
􀁄 1 lapisan tersembunyi dengan 4 neuron, fungsi aktivasi yang digunakan
pada setiap neuron pada lapisan ini adalah fungsi sigmoid (z= z _ in 1 e
1
+ −
).
􀁄 1 lapisan output dengan 1 neuron, fungsi aktivasi yang digunakan pada
neuron di lapisan ini adalah fungsi sigmoid (y= 1 e y _ in
1
+ −
).
Bobot awal yang menghubungkan neuron-neuron pada lapisan input dan lapisan
tersembunyi (v11, v12, v21, v22) dan bobot bias v01 dan v02 dipilih secara acak.
Demikian pula bobot awal yang menghubungkan neuron-neuron pada lapisan
tersembunyi dan lapisan output (w1, w2) dan bobot bias w0 juga dipilih secara
acak.
Gambar 8.21 Arsitektur jaringan syaraf untuk backpropagation: Operasi XOR.
x1Σ=
+
2
i 1
v03 xivi3
x1
x2
1
x1Σ=
+
2
i 1
v01 xivi1
x1Σ=
+
2
i 1
v02 xivi2
Σ=
+
4
i 1
w0 xiwi
v11
1
v12
v21 v22
v01
v02
z_in1
z_in2
z1
z2
w1
w2
w0
y_in
y
x1Σ=
+
2
i 1
v04 xivi4
v23
v24
v13
v14
v03
v04
z_in3
z_in4
z3
z4
w3
w4
174
Pada inisialisasi ditetapkan:
X =
0 0
0 1
1 0
1 1
T =
0
1
1
0
Jumlah neuron pada input layer = 4
Jumlah neuron pada hidden layer = 2
Jumlah neuron pada output layer = 1
Learning rate (α) = 0,02
Maksimum Epoh = 500
Target Error = 0,01
Bobot awal (ditentukan secara acak):
􀃒 Bobot Awal input ke hidden
v =
0,9562 0,7762 0,1623 0,2886
0,1962 0,6133 0,0311 0,9711
􀃒 Bobot Awal bias ke hidden
v0 =
0,7496 0,3796 0,7256 0,1628
􀃒 Bobot Awal hidden ke output
w =
0,2280
0,9585
0,6799
0,0550
􀃒 Bobot Awal bias ke output
w0 =
0,9505
Pembelajaran:
􀁄 Epoh ke-1:
Data ke = 1
--------------------------------
Operasi pada Hidden Layer --->
> Penjumlahan terbobot:
z_in1 = v01 + v11*x11 + v21*x12
= 0,7496 + 0,9562*0 + 0,1962*0
= 0,7496
z_in2 = v02 + v12*x11 + v22*x12
= 0,3796 + 0,7762*0 + 0,6133*0
= 0,3796
175
z_in3 = v03 + v13*x11 + v23*x12
= 0,7256 + 0,1623*0 + 0,0311*0
= 0,7256
z_in4 = v04 + v14*x11 + v24*x12
= 0,1628 + 0,2886*0 + 0,9711*0
= 0,1628
> Pengaktifan:
0,6791
1 e
1
z
1 0,7496 =
+
=

0,5938
1 e
1
z
2 0,3796 =
+
=

0,6738
1 e
1
z
3 0,7256 =
+
=

1 0,5406
1 e
2
z
4 0,1628 − =
+
=

Operasi pada Output Layer --->
> Perkalian:
y_in = w0 + w1*z1 + w2*z2 + w3*z3 + w4*z4
= 0,9505 + 0,2280*0,6791 + 0,9585*0,5938 + 0,6799*0,6738 +
0,0550*0,5406
= 2,1623
> Pengaktifan:
0,8968
1 e
1
y
2,1623
=
+
=

Error = 0 – 0,8968 = -0,8968
Jumlah Kuadrat Error = (-0,8968)2 = 0,80428
⎥ ⎥⎦

⎢ ⎢⎣

⎟ ⎟⎠

⎜ ⎜⎝ ⎛
+
− ⎟
⎟⎠

⎜ ⎜⎝

+
= −
1 −y _ in −y _ in
1 e
1
* 1
1 e
1
δ (T y) *
0,08299
1 e
1
* 1
1 e
1
(0 0,8968) *
2,1623 2,1623
= −
⎥ ⎥⎦

⎢ ⎢⎣

⎟ ⎟⎠

⎜ ⎜⎝

+
− ⎟
⎟⎠

⎜ ⎜⎝

+
= −
− −
δ
Δw1 = α *δ * z1
Δw1 = 1*(−0,08299)* 0,6791 = −0,05636
Δw2 = α *δ * z2
Δw2 = 1*(−0,08299) * 0,5936 = −0,04928
Δw3 = α *δ * z3
176
Δw3 = 1*(−0,08299)* 0,6738 = −0,05592
Δw4 = α *δ * z4
Δw4 = 1*(−0,08299)* 0,5406 = −0,04486
Δw0 = α *δ
Δw0 = 1*(−0,08299) = -0,08299
δin1 = δ *w1 = −0,08299 * 0,2280 = −0,01893
δin2 = δ *w2 = −0,08299 * 0,9585 = −0,07955
δin3 = δ *w3 = −0,08299 * 0,6799 = −0,05642
δin4 = δ *w4 = −0,08299 * 0,0550 = −0,00456
⎥ ⎥⎦

⎢ ⎢⎣

⎟ ⎟


⎜ ⎜


+
− ⎟



⎜ ⎜


+
=
1 in1 −z _ in1 −z _ in1
1 e
1
* 1
1 e
1
δ δ *
0,00412
1 e
1
* 1
1 e
1
0,01893 *
1 0,6791 0,6791 = −
⎥ ⎥⎦

⎢ ⎢⎣

⎟ ⎟⎠

⎜ ⎜⎝

+
− ⎟
⎟⎠

⎜ ⎜⎝

+
= −
− −
δ
⎥ ⎥⎦

⎢ ⎢⎣

⎟ ⎟


⎜ ⎜


+
− ⎟



⎜ ⎜


+
=
2 in2 −z _ in2 −z _ in2
1 e
1
* 1
1 e
1
δ δ *
0,01919
1 e
1
* 1
1 e
1
0,07955 *
2 0,5938 0,5938 = −
⎥ ⎥⎦

⎢ ⎢⎣

⎟ ⎟⎠

⎜ ⎜⎝

+
− ⎟
⎟⎠

⎜ ⎜⎝

+
= −
− −
δ
⎥ ⎥⎦

⎢ ⎢⎣

⎟ ⎟


⎜ ⎜


+
− ⎟



⎜ ⎜


+
=
3 in3 −z _ in3 −z _ in3
1 e
1
* 1
1 e
1
δ δ *
0,01240
1 e
1
* 1
1 e
1
0,05642 *
3 0,6738 0,6738 = −
⎥ ⎥⎦

⎢ ⎢⎣

⎟ ⎟⎠

⎜ ⎜⎝

+
− ⎟
⎟⎠

⎜ ⎜⎝

+
= −
− −
δ
⎥ ⎥⎦

⎢ ⎢⎣

⎟ ⎟


⎜ ⎜


+
− ⎟



⎜ ⎜


+
=
4 in4 −z _ in4 −z _ in4
1 e
1
* 1
1 e
1
δ δ *
0,00113
1 e
1
* 1
1 e
1
0,00456 *
4 0,5406 0,5406 = −
⎥ ⎥⎦

⎢ ⎢⎣

⎟ ⎟⎠

⎜ ⎜⎝

+
− ⎟
⎟⎠ ⎞
⎜ ⎜⎝

+
= −
− −
δ
Δv11 = α *δ1 * x11 = 1*(−0,00412) * 0 = 0
demikian juga Δv12=Δv13=Δv14=Δv21=Δv22=Δv23=Δv24,=0.
Δv01 = α *δ1 = 1*(−0,00412) = −0,00412
Δv02 = α *δ2 = 1*(−0,01919) = −0,01919
Δv03 = α *δ3 = 1*(−0,01240) = −0,01240
Δv04 = α *δ 4 = 1*(−0,00113) = −0,00113
v11 = v11 + Δv11 = 0,9562 + 0 = 0,9562
v12 = v12 + Δv12 = 0,7762 + 0 = 0,7762
177
v13 = v13 + Δv13 = 0,1623 + 0 = 0,1623
v14 = v14 + Δv14 = 0,2886 + 0 = 0,2886
v21 = v21 + Δv21 = 0,1962 + 0 = 0,1962
v22 = v22 + Δv22 = 0,6133 + 0 = 0,6133
v23 = v23 + Δv23 = 0,0311 + 0 = 0,0311
v24 = v24 + Δv24 = 0,9711 + 0 = 0,9711
v01 = v01 + Δv01 = 0,7496 – 0,00412 = 0,7455
v02 = v02 + Δv02 = 0,3796 – 0,01919 = 0,3604
v03 = v03 + Δv03 = 0,7256 – 0,01240 = 0,7132
v04 = v04 + Δv04 = 0,1628 – 0,00113 = 0,1617
w1 = w1 + Δw1 = 0,2280 – 0,05636 = 0,1717
w2 = w2 + Δw2 = 0,9585 – 0,04928 = 0,9092
w3 = w3 + Δw3 = 0,6799 – 0,05592 = 0,6239
w4 = w4 + Δw4 = 0,0550 – 0,04486 = 0,0101
w0 = w0 + Δw0 = 0,9505 – 0,08299 = 0,8675
Pada data kedua, juga dilakukan operasi-operasi yang sama dengan
menggunakan bobot-bobot akhir hasil pengolahan data pertama ini sebagai
bobot-bobot awalnya. Proses ini dilakukan secara berulang sampai pada
maksimum epoh (1500) atau kuadrat error < target error (0,01).
Berikut adalah bobot akhir setelah epoh ke-898:
􀃒 Bobot Akhir input ke hidden
v =
5,8716 3,6067 3,4877 -0,0704
-4,8532 2,8028 -5,1943 0,7636
􀃒 Bobot Akhir bias ke hidden
v0 =
2,4618 -0,3884 -1,4258 -0,6994
􀃒 Bobot Akhir hidden ke output
w =
-7,0997
3,5782
6,9212
-0,7503
􀃒 Bobot Akhir bias ke output
w0 =
0,6571
Gambar 8.22 menunjukkan grafik penurunan Mean Square Error (MSE) pada
setiap epoh, mulai dari epoh pertama sampai epoh ke-898.
178
0 100 200 300 400 500 600 700 800 900
0
0.05
0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
Grafik MSE tiap epoh
Epoh
MSE
Gambar 8.22 Grafik penurunan Mean Square Error (MSE) sampai epoh ke-898.
Sekarang kita akan melakukan pengujian terhadap data: x=[0 1]
􀃒 Operasi pada hidden layer:
z_in1 = v01 + (v11*x1)+ (v21*x2)
= 2,4618 + (5,8716*0) + (-4,8532*1)
= -2,3914
0,0838
1 e
1
z f( 2,3914)
1 2,3914 =
+
= − =
z_in2 = v02 + (v12*x1)+ (v22*x2)
= -0,3884 + (3,6067*0) + (2,8028*1)
= 2,4144
0,9179
1 e
1
z f(2,4144)
2 2,4144 =
+
= =

z_in3 = v03 + (v13*x1)+ (v23*x2)
= -1,4258 + (3,4877*0) + (-5,1943*1)
= -6,6201
0,0013
1 e
1
z f( 6,6201)
3 6,6201 =
+
= − =
z_in4 = v04 + (v14*x1)+ (v24*x2)
= -0,6994 + (-0,0704*0) + (0,7636*1)
= 0,0642
0,5160
1 e
1
z f(0,0642)
4 0,0642 =
+
= =

􀃒 Operasi pada output layer:
y_in = w0 + z1*w1 + z2*w2 + z3*w3 + z4*w4.
= 0,6571 + (0,0838*-7,0997) + (0,9179*3,5782) +
179
(0,0013*6,9212) + (0,5160*-0,7503)
= 2,9684
0,9511
1 e
1
z f(2,9684)
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:
= Σ
i
y _inj xi *wij
􀀡 Tentukan aktivasi dari setiap unit output:
⎪⎩
⎪⎨

− <
=
>
=
1; y _in 0
0; y _in 0
1; y _in 0
y
j
j
j
j
(untuk target bipolar)
Contoh 8.5:
Misalkan kita memiliki matriks P sebagai input yang hendak dilakukan
pembelajaran, dengan target T. Fungsi aktivasi yang digunakan adalah fungsi
bipolar.
Input (s) Target (t)
-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
180
1 -1 -1 1 -1 1 1 -1
-1 1 1 1 1 1 1 -1
Arsitektur jaringan seperti terlihat pada Gambar 8.23.
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 = 1,00
w12 = 0,00 + 1,00 = -1,00
w21 = 0,00 + 1,00 = 1,00
w22 = 0,00 + 1,00 = -1,00
w31 = 0,00 + -1,00 = -1,00
w32 = 0,00 + -1,00 = 1,00
w41 = 0,00 + 1,00 = 1,00
w42 = 0,00 + 1,00 = -1,00
w51 = 0,00 + 1,00 = 1,00
w52 = 0,00 + 1,00 = -1,00
w61 = 0,00 + -1,00 = -1,00
w62 = 0,00 + -1,00 = 1,00
Data ke-2
w11 = 1,00 + 1,00 = 2,00
w12 = -1,00 + 1,00 = -2,00
w21 = 1,00 + 1,00 = 2,00
w22 = -1,00 + 1,00 = -2,00
w31 = -1,00 + -1,00 = -2,00
w32 = 1,00 + -1,00 = 2,00
w41 = 1,00 + 1,00 = 2,00
w42 = -1,00 + 1,00 = -2,00
w51 = 1,00 + -1,00 = 0,00
w52 = -1,00 + -1,00 = 0,00
x1
x2
x3
x4
x5
x6
Σxiwi1
Σxiwi2
y_in1
y_in2
y1
y2
181
w61 = -1,00 + 1,00 = 0,00
w62 = 1,00 + 1,00 = 0,00
Data ke-3
w11 = 2,00 + 1,00 = 3,00
w12 = -2,00 + 1,00 = -3,00
w21 = 2,00 + -1,00 = 1,00
w22 = -2,00 + -1,00 = -1,00
w31 = -2,00 + 1,00 = -1,00
w32 = 2,00 + 1,00 = 1,00
w41 = 2,00 + 1,00 = 3,00
w42 = -2,00 + 1,00 = -3,00
w51 = 0,00 + 1,00 = 1,00
w52 = 0,00 + 1,00 = -1,00
w61 = 0,00 + -1,00 = -1,00
w62 = 0,00 + -1,00 = 1,00
Data ke-4
w11 = 3,00 + -1,00 = 2,00
w12 = -3,00 + -1,00 = -2,00
w21 = 1,00 + 1,00 = 2,00
w22 = -1,00 + 1,00 = -2,00
w31 = -1,00 + -1,00 = -2,00
w32 = 1,00 + -1,00 = 2,00
w41 = 3,00 + 1,00 = 4,00
w42 = -3,00 + 1,00 = -4,00
w51 = 1,00 + -1,00 = 0,00
w52 = -1,00 + -1,00 = 0,00
w61 = -1,00 + -1,00 = -2,00
w62 = 1,00 + -1,00 = 2,00
Data ke-5
w11 = 2,00 + 1,00 = 1,00
w12 = -2,00 + 1,00 = -1,00
w21 = 2,00 + 1,00 = 1,00
w22 = -2,00 + 1,00 = -1,00
w31 = -2,00 + -1,00 = -1,00
w32 = 2,00 + -1,00 = 1,00
w41 = 4,00 + -1,00 = 5,00
w42 = -4,00 + -1,00 = -5,00
w51 = 0,00 + 1,00 = -1,00
w52 = 0,00 + 1,00 = 1,00
w61 = -2,00 + 1,00 = -3,00
w62 = 2,00 + 1,00 = 3,00
Data ke-6
w11 = 1,00 + 1,00 = 0,00
w12 = -1,00 + 1,00 = 0,00
w21 = 1,00 + -1,00 = 2,00
w22 = -1,00 + -1,00 = -2,00
w31 = -1,00 + 1,00 = -2,00
w32 = 1,00 + 1,00 = 2,00
w41 = 5,00 + -1,00 = 6,00
w42 = -5,00 + -1,00 = -6,00
w51 = -1,00 + 1,00 = -2,00
w52 = 1,00 + 1,00 = 2,00
w61 = -3,00 + 1,00 = -4,00
w62 = 3,00 + 1,00 = 4,00
182
Data ke-7
w11 = 0,00 + -1,00 = 1,00
w12 = 0,00 + -1,00 = -1,00
w21 = 2,00 + 1,00 = 1,00
w22 = -2,00 + 1,00 = -1,00
w31 = -2,00 + 1,00 = -3,00
w32 = 2,00 + 1,00 = 3,00
w41 = 6,00 + -1,00 = 7,00
w42 = -6,00 + -1,00 = -7,00
w51 = -2,00 + 1,00 = -3,00
w52 = 2,00 + 1,00 = 3,00
w61 = -4,00 + -1,00 = -3,00
w62 = 4,00 + -1,00 = 3,00
Data ke-8
w11 = 1,00 + 1,00 = 0,00
w12 = -1,00 + 1,00 = 0,00
w21 = 1,00 + -1,00 = 2,00
w22 = -1,00 + -1,00 = -2,00
w31 = -3,00 + -1,00 = -2,00
w32 = 3,00 + -1,00 = 2,00
w41 = 7,00 + -1,00 = 8,00
w42 = -7,00 + -1,00 = -8,00
w51 = -3,00 + -1,00 = -2,00
w52 = 3,00 + -1,00 = 2,00
w61 = -3,00 + -1,00 = -2,00
w62 = 3,00 + -1,00 = 2,00
Testing:
􀀡 Kita gunakan vektor input pertama: x = [-1-1 1-1-1 1]
* Penjumlahan terbobot ke-1 (y_in1) = -12 ------> (-1)
* Penjumlahan terbobot ke-2 (y_in2) = 12 ------> (1)
􀀡 Vektor di luar vektor input: x = [-1-1 1 1-1-1]
* Penjumlahan terbobot ke-1 (y_in1) = 8 ------> (1)
* Penjumlahan terbobot ke-2 (y_in2) = -8 ------> (-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).
Gambar 8.24 Huruf A, sebagai matriks 9x7.
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥


⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢


− − − − −
− − − − −
− − − − −
− − − − −
− − − − −
− − − − −
− − − − −
− − − −
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 1 1
183
Gambar 8.25 Huruf A sebagai matriks 5x3.
Apabila komponen vektor bernilai 1, menandakan bahwa kotak yang diwakilinya
berwarna hitam, sedangkan apabila vektor bernilai –1, menandakan bahwa kotak
yang diwakilinya berwarna putih.
Vektor yang bersesuaian dengan Gambar 8.21 adalah:
-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 –1 1
Sedangkan vektor yang bersesuaian dengan Gambar 8.22 adalah:
-1 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).
Gambar 8.26 Pasangan karakter A, B dan H.
Pada langkah awal, set semua komponen pada matriks bobot (63x15) sama
dengan nol. Dengan menggunakan algoritma Hebb, hitung perubahan bobot:
wij(baru) = wij(lama) + xi*yj;
(i=1,2,...,63; dan j=1,2,...,15)
dengan x adalah vektor input dengan 63 komponen dan y adalah vektor target
dengan 15 komponen. matriks bobot akhir dengan ukuran 63x15 yang diperoleh
adalah:
w =
3 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1
1 1 -1 -1 1 -1 -1 -1 -3 -1 1 -1 -1 3 -3
-1 3 -3 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 3 -3 1 -1 1 1 1 -1 1 -1 1 1 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
1 -3 3 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1
3 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1
-3 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
⎥ ⎥ ⎥ ⎥ ⎥ ⎥


⎢ ⎢ ⎢ ⎢ ⎢ ⎢





− −
1 1 1
1 1 1
1 1 1
1 1 1
1 1 1
184
-1 3 -3 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 3 -3 3 3 3 1 3 -3 3 3 -1 1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
1 1 -1 3 -3 3 3 3 1 3 -3 3 3 -1 1
1 1 -1 3 -3 3 3 3 1 3 -3 3 3 -1 1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
1 1 -1 -1 1 -1 -1 -1 -3 -1 1 -1 -1 3 -3
-1 -1 1 1 -1 1 1 1 3 1 -1 1 1 -3 3
1 1 -1 3 -3 3 3 3 1 3 -3 3 3 -1 1
3 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1
3 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1
3 -1 1 1 -1 1 1 1 -1 1 -1 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 -1 1 -1 -1 -1 1
-1 -1 1 1 -1 1 1 1 3 1 -1 1 1 -3 3
1 1 -1 3 -3 3 3 3 1 3 -3 3 3 -1 1
-3 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1
-3 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1
-3 1 -1 -1 1 -1 -1 -1 1 -1 1 -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 1 -1 1 1 1 -1
-1 -1 1 1 -1 1 1 1 3 1 -1 1 1 -3 3
1 1 -1 3 -3 3 3 3 1 3 -3 3 3 -1 1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
1 1 -1 3 -3 3 3 3 1 3 -3 3 3 -1 1
1 1 -1 3 -3 3 3 3 1 3 -3 3 3 -1 1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
1 1 -1 -1 1 -1 -1 -1 -3 -1 1 -1 -1 3 -3
-1 -1 1 1 -1 1 1 1 3 1 -1 1 1 -3 3
1 1 -1 3 -3 3 3 3 1 3 -3 3 3 -1 1
1 1 -1 -1 1 -1 -1 -1 -3 -1 1 -1 -1 3 -3
1 1 -1 -1 1 -1 -1 -1 -3 -1 1 -1 -1 3 -3
1 1 -1 -1 1 -1 -1 -1 -3 -1 1 -1 -1 3 -3
1 1 -1 -1 1 -1 -1 -1 -3 -1 1 -1 -1 3 -3
-1 -1 1 -3 3 -3 -3 -3 -1 -3 3 -3 -3 1 -1
-1 -1 1 1 -1 1 1 1 3 1 -1 1 1 -3 3
F. Bidirectional Associative Memory (BAM)
Bidirectional Associative Memory (BAM) adalah model jaringan syaraf yang
memiliki 2 lapisan dan terhubung penuh dari satu lapisan ke lapisan yang lainnya.
Pada jaringan ini dimungkinkan adanya hubungan timbal balik antara lapisan
input dan lapisan output. Namun demikian, bobot yang menghubungkan antara
antara satu neuron (A) di satu lapisan dengan neuron (B) di lapisan lainnya akan
sama dengan bobot yang menghubungkan neuron (B) ke neuron (A). Bisa
185
dikatakan bahwa, matriks bobot yang menghubungkan neuron-neuron pada
lapisan output ke lapisan input sama dengan transpose matriks bobot neuronneuron
yang menghubungkan lapisan input ke lapisan output. Arsitektur jaringan
untuk 3 neuron pada lapisan input dan 2 neuron pada lapisan output seperti
terlihat pada Gambar 8.27.
Gambar 8.27 Arsitektur jaringan Bidirectional Associative Memory.
(i) BAM Diskret.
Pada BAM diskret ada 2 kemungkinan tipe data, yaitu biner dan bipolar. Matriks
bobot awal dibuat sedemikian rupa sehingga dapat menyimpan pasangan vektor
input dan vektor output s(p)-t(p), dengan p=1,2,3,...,P.
􀃒 Untuk vektor input biner, matriks bobot ditentukan sebagai:
= Σ − −
p
wij (2 * si(p) 1)(2 * ti(p) 1)
Sedangkan fungsi aktivasi yang digunakan adalah:
􀂃 Untuk lapisan output:
⎪⎩
⎪⎨

<
=
>
=
0; jika y _in 0
y ; jika y _in 0
1; jika y _in 0
y
j
j j
j
j
􀂃 Untuk lapisan input:
⎪⎩
⎪⎨

<
=
>
=
0; jika x _in 0
x ; jika x _ in 0
1; jika x _ in 0
x
i
i i
i
i
􀃒 Sedangkan untuk vektor input bipolar, matriks bobot ditentukan
sebagai:
= Σ
p
wij (si(p) * ti(p))
Sedangkan fungsi aktivasi yang digunakan adalah:
􀂃 Untuk lapisan output:
⎪⎩
⎪⎨

− <
=
>
=
θ
θ
θ
j
j j
j
j
1; jika y _ in
y ; jika y _in
1; jika y _in
y
x1 x2 x3
y1 y2
3 neuron pada
lapisan input
2 neuron pada
lapisan output
186
􀂃 Untuk lapisan input:
⎪⎩
⎪⎨

− <
=
>
=
θ
θ
θ
i
i i
i
i
1; jika x _ in
x ; jika x _in
1; jika x _in
x
Dengan catatan bahwa input input hasil olahan pada jaringan (x_ini atau y_inj)
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.
Gambar 8.28 Matriks 3x3 untuk BAM.
Kita bisa membawa tiap-tiap matriks menjadi satu bentuk vektor dengan elemenelemennya
berupa bilangan biner -1 atau 1, sebagai berikut:
O : 1 1 1 1 –1 1 1 1 1 ---> -1 1
X : 1 –1 1 –1 1 –1 1 -1 1 ---> 1 1
Matriks bobot:
[ ]
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥


⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢











− =
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥


⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢


= = −
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
w(untuk p 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
w(untuk p 2)
(-1,1) (1,1)
187
W = w(untuk p=1) + w(untuk p=2)
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥


⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢






=
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥


⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢


− −
− −
− −
− −
+
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥


⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢











=
0 2
2 0
0 2
2 0
2 0
2 0
0 2
2 0
0 2
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
W
Matriks bobot tersebut menghubungkan antara neuron-neuron di lapisan input ke
neuron-neuron yang ada di lapisan output. Sedangkan matriks bobot yang
menghubungkan antara neuron-neuron di lapisan output ke neuron-neuron yang
ada di lapisan input adalan WT.
⎥⎦

⎢⎣
⎡ − − − −
=
2 0 2 0 0 0 2 0 2
0 2 0 2 2 2 0 2 0
WT
Kita bisa menguji bobot tersebut. Misalkan kita cobakan vektor input pertama
yang mewakili Huruf O, maka output yang diperoleh adalah:
[ ] [ 10 8]
0 2
2 0
0 2
2 0
2 0
2 0
0 2
2 0
0 2
y _in1 x1 *W 1 1 1 1 1 1 1 1 1 * = −
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥


⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢






= = −
Karena (y_in1(1)=–10 <> 0, maka y1(2)=1),
maka nilai y1 = [-1 1], sama dengan target yang diharapkan.
Untuk vektor input kedua yang mewakili Huruf X, maka output yang diperoleh
adalah:
[ ] [10 8]
0 2
2 0
0 2
2 0
2 0
2 0
0 2
2 0
0 2
y _in1 x1 *W 1 1 1 1 1 1 1 1 1 * =
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥


⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢






= = − − − −
Karena (y_in2(1)=10 > 0, maka y2(1)=1) dan (y_in2(2)=8 > 0, maka y2(2)=1),
maka nilai y2 = [1 1], sama dengan target yang diharapkan.
188
Sekarang apabila dibalik, y digunakan sebagai input untuk mendapatkan x.
Misalkan kita cobakan vektor input pertama y1 = [-1 1], maka output yang
diperoleh adalah:
⎥⎦

⎢⎣
⎡ − − − −
= = −
2 0 2 0 0 0 2 0 2
0 2 0 2 2 2 0 2 0
x _in y *WT [ 1 1]*
1 1
= [2 2 2 2 −2 2 2 2 2] ⇒ [1 1 1 1 −1 1 1 1 1]
Outputnya sama dengan target, yaitu Huruf O.
Untuk vektor input kedua yaitu y2 = [1 1], maka output yang diperoleh adalah:
⎥⎦

⎢⎣
⎡ − − − −
= =
2 0 2 0 0 0 2 0 2
0 2 0 2 2 2 0 2 0
x _ in y *WT [1 1]*
2 2
= [2 −2 2 −2 2 −2 2 −2 2] ⇒ [1 −1 1 −1 1 −1 1 −1 1]
Outputnya sama dengan target, yaitu Huruf X.
Algoritma
0. Inisialisasi bobot (untuk menyimpan sekumpulan P vektor).
Inisialisasi semua aktivasi sama dengan 0.
1. Untuk tiap-tiap input, kerjakan:
a (1). Berikan input pola x ke lapisan X (kita set aktivasi lapisan X sebagai
pola input)
a (2). Berikan input pola y ke lapisan Y (salah satu dari vektor input tersebut
biasanya diset sebagai vektor nol)
b. Kerjakan jika aktivasi-aktivasi tersebut belum konvergen:
(i). Perbaiki setiap unit aktivasi di lapisan Y:
Hitung:
= Σ
i
y _inj wij * xi
Hitung:
yj = f(y _inj)
Berikan informasi tersebut ke lapisan X.
(ii). Perbaiki setiap unit aktivasi di lapisan X:
Hitung:
= Σ
j
x _ini wij * xj
Hitung:
xi = f(x _ini)
Berikan informasi tersebut ke lapisan Y.
(iii). Tes kekonvergenan. Jika vektor x dan y telah mencapai keadaan
stabil, maka iterasi berhenti, jika tidak demikian lanjutkan iterasi.
189
G. Learning Vector Quantization (LVQ)
Learning Vector Quantization (LVQ) adalah suatu metode untuk melakukan
pembelajaran pada lapisan kompetitif yang terawasi. Suatu lapisan kompetitif
akan secara otomatis belajar untuk mengklasifikasikan vektor-vektor input.
Kelas-kelas yang didapatkan sebagai hasil dari lapisan kompetitif ini hanya
tergantung pada jarak antara vektor-vektor input. Jika 2 vektor input mendekati
sama, maka lapisan kompetitif akan meletakkan kedua vektor input tersebut ke
dalam kelas yang sama.
Algoritma
1. Tetapkan: W, MaxIter, Eps, α.
2. Masukkan:
ο input x(m,n);
ο m = jumlah input,
ο n = jumlah data
ο target(1,n).
3. Tetapkan kondisi awal:
ο epoh=0;
ο err=1.
4. Kerjakan jika: (epoch eps)
a. epoh = epoh+1;
b. Kerjakan untuk i=1 sampai n
i. Tentukan J sedemikian hingga ║x-wj║ minimum
ii. Perbaiki wj dengan ketentuan:
ο Jika T = Cj maka:
wj
(baru)=wj(lama)+ α (x-wj(lama))
ο Jika T ≠ Cj maka:
wj
(baru)=wj(lama)- α (x-wj(lama))
c. Kurangi nilai α.
Contoh 8.8:
Misalkan diketahui 10 input vektor dalam 2 kelas sebagai berikut:
1. (1, 0, 0, 0, 1, 0) 1
2. (0, 1, 1, 1, 1, 0) 2
3. (0, 0, 1, 0, 0, 1) 1
4. (0, 0, 1, 0, 1, 0) 1
5. (0, 1, 0, 0, 0, 1) 1
6. (1, 0, 1, 0, 1, 1) 1
7. (0, 0, 1, 1, 0, 0) 2
8. (0, 1, 0, 1, 0, 0) 2
9. (1, 0, 0, 1, 0, 1) 2
10. (0, 1, 1, 1, 1, 1) 2
Dua input pertama akan dijadikan sebagai inisialisasi bobot:
190
Vektor (w) Kelas
1. (1, 0, 0, 0, 1, 0) 1
2. (0, 1, 1, 1, 1, 0) 2
Sedangkan 4 input sisanya:
Vektor (x) Kelas
1. (0, 0, 1, 0, 0, 1) 1
2. (0, 0, 1, 0, 1, 0) 1
3. (0, 1, 0, 0, 0, 1) 1
4. (1, 0, 1, 0, 1, 1) 1
5. (0, 0, 1, 1, 0, 0) 2
6. (0, 1, 0, 1, 0, 0) 2
7. (1, 0, 0, 1, 0, 1) 2
8. (0, 1, 1, 1, 1, 1) 2
akan digunakan sebagai data yang akan dilatih. Arsitektur jaringan syaraf pada
contoh 8.8 ini seperti terlihat pada Gambar 8.29.
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 – w11) = 1 + 0,05*(0-1) = 0,9500;
w12 = w12 + α*(x12 – w12) = 0 + 0,05*(0-0) = 0,0000;
x1
x2
x3
x4
x5
x6
║x-w1║
║x-w2║
F1
F2
y_in1
y_in2
y1
y2
191
w13 = w13 + α*(x13 – w13) = 0 + 0,05*(1-0) = 0,0500;
w14 = w14 + α*(x14 – w14) = 0 + 0,05*(0-0) = 0,0000;
w15 = w15 + α*(x15 – w15) = 1 + 0,05*(0-1) = 0,9500;
w16 = w16 + α*(x16 – w16) = 0 + 0,05*(1-0) = 0,0500;
Jadi
w1 = (0,9500 0,0000 0,0500 0,0000 0,9500 0,0500)
􀀡 Data ke-2: (0, 0, 1, 0, 1, 0)
Jarak pada:
* bobot ke-1 =
= (0 − 0,95)2 + (0 − 0)2 + (1 − 0,05)2 + (0 − 0)2 + (1 − 0,95)2 + (0 − 0,05)2
= 1,3454.
* bobot ke-2 =
= (0 − 0)2 + (0 − 1)2 + (1 − 1)2 + (0 − 1)2 + (1 − 1)2 + (0 − 0)2
= 1,4142.
Jarak terkecil pada bobot ke-1
Target data ke-2= 1
Bobot ke- 1 baru:
w11 = w11 + α*(x21 – w11) = 0,95 + 0,05*(0-0,95) = 0,9025;
w12 = w12 + α*(x22 – w12) = 0,00 + 0,05*(0-0,00) = 0,0000;
w13 = w13 + α*(x23 – w13) = 0,05 + 0,05*(1-0,05) = 0,0975;
w14 = w14 + α*(x24 – w14) = 0,00 + 0,05*(0-0,00) = 0,0000;
w15 = w15 + α*(x25 – w15) = 0,95 + 0,05*(1-0,95) = 0,9525;
w16 = w16 + α*(x26 – w16) = 0,05 + 0,05*(0-0,05) = 0,0475;
Jadi
w1 = (0,9025 0,0000 0,0975 0,0000 0,9525 0,0475)
􀀡 Data ke-3: (0, 1, 0, 0, 0, 1)
Jarak pada:
* bobot ke-1 =
= (0 − 0,9025)2 + (1 − 0)2 + (0 − 0,0975)2 + (0 − 0)2 + (0 − 0,9525)2 + (1 − 0,0475)2
= 1,9075
* bobot ke-2 =
= (0 − 0)2 + (1 − 1)2 + (0 − 1)2 + (0 − 1)2 + (0 − 1)2 + (1 − 0)2
= 2,000.
Jarak terkecil pada bobot ke-1
Target data ke-3= 1
Bobot ke- 1 baru:
w11 = w11 + α*(x31 – w11) = 0,9025 + 0,05*(0-0,9025) = 0,8574;
w12 = w12 + α*(x32 – w12) = 0,0000 + 0,05*(0-0,0000) = 0,0500;
w13 = w13 + α*(x33 – w13) = 0,0975 + 0,05*(1-0,0975) = 0,0926;
w14 = w14 + α*(x34 – w14) = 0,0000 + 0,05*(0-0,0000) = 0,0000;
w15 = w15 + α*(x35 – w15) = 0,9525 + 0,05*(1-0,9525) = 0,9049;
w16 = w16 + α*(x36 – w16) = 0,0475 + 0,05*(0-0,0475) = 0,0951;
Jadi:
w1 = (0,8574 0,0500 0,0926 0,0000 0,9049 0,0951)
􀀡 Data ke-4: (1, 0, 1, 0, 1, 1)
Jarak pada:
192
* 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 – w11) = 0,8574 + 0,05*(1-0,8574) = 0,8645;
w12 = w12 + α*(x42 – w12) = 0,0500 + 0,05*(0-0,0500) = 0,0475;
w13 = w13 + α*(x43 – w13) = 0,0926 + 0,05*(1-0,0926) = 0,1380;
w14 = w14 + α*(x44 – w14) = 0,0000 + 0,05*(0-0,0000) = 0,0000;
w15 = w15 + α*(x45 – w15) = 0,9049 + 0,05*(1-0,9049) = 0,9096;
w16 = w16 + α*(x46 – w16) = 0,0951 + 0,05*(1-0,0951) = 0,1404;
Jadi:
w1 = (0,8645 0,0475 0,1380 0,0000 0,9096 0,1404)
􀀡 Data ke-5: (0, 0, 1, 1, 0, 0)
Jarak pada:
* bobot ke-1 =
= (0 − 0,8645)2 + (0 − 0,0475)2 + (1 − 0,1380)2 + (1 − 0)2 + (0 − 0,9096)2 + (0 − 0,1404)2
= 1,8275
* bobot ke-2 =
= (0 − 0)2 + (0 − 1)2 + (1 − 1)2 + (1 − 1)2 + (0 − 1)2 + (0 − 0)2
= 1,4142.
Jarak terkecil pada bobot ke-2
Target data ke-5= 2
Bobot ke- 2 baru:
w21 = w21 + α*(x51 – w21) = 0 + 0,05*(1-0) = 0,0000;
w22 = w22 + α*(x52 – w22) = 1 + 0,05*(0-1) = 0,9500;
w23 = w23 + α*(x53 – w23) = 1 + 0,05*(1-1) = 1,0000;
w24 = w24 + α*(x54 – w24) = 1 + 0,05*(0-1) = 1,0000;
w25 = w25 + α*(x55 – w25) = 1 + 0,05*(1-1) = 0,9500;
w26 = w26 + α*(x56 – w26) = 0 + 0,05*(1-0) = 0,0000;
Jadi:
w2 = (0,0000 0,9500 1,0000 1,0000 0,9500 0,0000)
􀀡 Data ke-6: (0, 1, 0, 1, 0, 0)
Jarak pada:
* bobot ke-1 =
= (0 − 0,8645)2 + (1 − 0,0475)2 + (0 − 0,1380)2 + (1 − 0)2 + (0 − 0,9096)2 + (0 − 0,1404)2
= 1,8764
* bobot ke-2 =
= (0 − 0)2 + (1 − 0,9500)2 + (0 − 1)2 + (1 − 1)2 + (0 − 0,9500)2 + (0 − 0)2
= 1,3802.
Jarak terkecil pada bobot ke-2
Target data ke-6= 2
Bobot ke- 2 baru:
w21 = w21 + α*(x61 – w21) = 0,0000 + 0,05*(0-0,0000) = 0,0000;
193
w22 = w22 + α*(x62 – w22) = 0,9500 + 0,05*(1-0,9500) = 0,9525;
w23 = w23 + α*(x63 – w23) = 1,0000 + 0,05*(0-1,0000) = 0,9500;
w24 = w24 + α*(x64 – w24) = 1,0000 + 0,05*(1-1,0000) = 1,0000;
w25 = w25 + α*(x65 – w25) = 0,9500 + 0,05*(0-0,9500) = 0,9025;
w26 = w26 + α*(x66 – w26) = 0,0000 + 0,05*(0-0,0000) = 0,0000;
Jadi:
w2 = (0,0000 0,9525 0,9500 1,0000 0,9025 0,0000)
􀀡 Data ke-7: (1, 0, 0, 1, 0, 1)
Jarak pada:
* bobot ke-1 =
= (1 − 0,8645)2 + (0 − 0,0475)2 + (0 − 0,1380)2 + (1 − 0)2 + (0 − 0,9096)2 + (1 − 0,1404)2
= 1,6143
* bobot ke-2 =
= (1 − 0)2 + (0 − 0,9525)2 + (0 − 0,9500)2 + (1 − 1)2 + (0 − 0,9025)2 + (1 − 0)2
= 2,1504
Jarak terkecil pada bobot ke-1
Target data ke-7= 2
Bobot ke- 1 baru:
w11 = w11 - α*(x71 – w11) = 0,8645 - 0,0266*(1-0,8645) = 0,8577;
w12 = w12 - α*(x72 – w12) = 0,0475 - 0,0266*(0-0,0475) = 0,0499;
w13 = w13 - α*(x73 – w13) = 0,1380 - 0,0266*(0-0,1380) = 0,1449;
w14 = w14 - α*(x74 – w14) = 0,0000 - 0,0266*(1-0,0000) = -0,0500;
w15 = w15 - α*(x75 – w15) = 0,9096 - 0,0266*(0-0,9096) = 0,9551;
w16 = w16 - α*(x76 – w16) = 0,1404 - 0,0266*(1-0,1404) = 0,0974;
Jadi:
w1 = (0,8577 0,0499 0,1449 -0,0500 0,9511 0,0974)
􀀡 Data ke-8: (0, 1, 1, 1, 1, 1)
Jarak pada:
* bobot ke-1 =
= (0 − 0,8577)2 + (1 − 0,0499)2 + (1 − 0,1449)2 + (1 + 0,0500)2 + (1 − 0,9551)2 + (1 − 0,0974)2
= 2,0710
* bobot ke-2 =
= (0 − 0)2 + (1 − 0,9525)2 + (1 − 0,9500)2 + (1 − 1)2 + (1 − 0,9025)2 + (1 − 0)2
= 1,0028
Jarak terkecil pada bobot ke-2
Target data ke-8= 2
Bobot ke- 2 baru:
w21 = w21 + α*(x81 – w21) = 0,0000 + 0,05*(0-0,0000) = 0,0000;
w22 = w22 + α*(x82 – w22) = 0,9525 + 0,05*(1-0,9525) = 0,9549;
w23 = w23 + α*(x83 – w23) = 0,9500 + 0,05*(0-0,9500) = 0,9525;
w24 = w24 + α*(x84 – w24) = 1,0000 + 0,05*(1-1,0000) = 1,0000;
w25 = w25 + α*(x85 – w25) = 0,9025 + 0,05*(0-0,9025) = 0,9074;
w26 = w26 + α*(x86 – w26) = 0,0000 + 0,05*(0-0,0000) = 0,0500;
Jadi:
w2 = (0,0000 0,9549 0,9525 1,0000 0,9074 0,0500)
α = α – 0,1*α = 0,05 – 0,1*0,05 = 0,045
194
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:
w1 = (0,3727 0,2161 0,6347 -0,2164 0,7981 0,4254)
w2 = (0,0000 0,7969 0,7900 1,0000 0,5869 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.
Gambar 8.30 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 8.31, 8.32 dan 8.33):
⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥


⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢


1 1 0 0 0 1 1
1 1 0 0 0 1 1
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
0 1 0 0 0 1 0
0 0 1 0 1 0 0
0 0 0 1 0 0 0
195
Gambar 8.31 Pola huruf ‘A’ pada matriks 9x7.
Gambar 8.32 Pola huruf ‘B’ pada matriks 9x7.
Gambar 8.33 Pola huruf ‘H’ pada matriks 9x7.
Gambar 8.34 Pola huruf yang digunakan sebagai bobot .
Matrik yang akan dilatih adalah transformasi Gambar 8.31, 8.32, dan 8.33 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 vertor output (target):
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 8.34.
196
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 8.35.
Gambar 8.35 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.
Contoh 8.10:
Kita memiliki data tentang beberapa pola karakter A, B dan H dengan
mengunakan tulisan tangan seperti terlihat pada Gambar 8.36. Kita akan
198
menggunakan Metode LVQ untuk melatih pola-pola yang ada, sehingga nantinya
kalo ada pola baru, kita dapat menentukan pola tersebut termasuk dalam kelas
mana.
Gambar 8.36 Pola huruf A, B, H dengan tulisan tangan.
Sebelum kita melatih pola-pola yang telah ada, terlebih dahulu akan kita lakukan
preprosesing sebagai berikut:
􀃒 Penyederhanaan pola citra karakter dengan melakukan deteksi tepi. Deteksi
tepi ini dilakukan untuk menghilangkan tepi-tepi citra yang tidak berisi garisgaris
penyusun citra pola karakter. Deteksi tepi dilakukan dengan
menggunakan operator Sobel. Selama proses deteksi tepi ini dilakukan
penelusuran gambar secara vertikal dan horisontal sambil melihat apakah
terjadi perubahan warna secara mendadak yang melebihi suatu harga antara 2
titik yang berdekatan.
􀃒 Setelah disederhanakan, setiap citra pola karakter dibagi menjadi matriks
berukuran mxn (m baris, n kolom). Pada contoh ini, matriks yang terjadi
berukuran 8x7. Setiap elemen matriks berisi 10x10 piksel. Lihat Gambar 8.37.
Setiap kotak (elemen) kita lakukan penelusuran. Jika ditemukan nilai 1 (ada
piksel) dalam jumlah tertentu (dalam contoh ini > 10 piksel), maka kita beri
nilai 1 pada kotak tersebut. Namun jika tidak demikian, kita beri nilai 0 untuk
kotak tersebut. Dari sini kita peroleh matriks berukuran 8x7, dengan tiap
elemen bernilai 1 atau 0. Kemudian, matriks tersebut kita bawa ke bentuk
vektor dengan ukuran mn (56 elemen). Karena setiap pola berupa vektor
berukuran 56 elemen, maka apabila kita punya 60 pola, maka sekarang kita
memiliki matriks berukuran 60x56.
1
2
3
8
1 2 3 7
199
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
200
-0,040 0,608 0,178
-0,040 0,828 0,032
-0,024 0,422 0,716
-0,017 -0,058 0,198
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,000 0,000
0,000 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 terhadap bobot ke-
Pola 1 2 3
Jarak
terdekat
dengan
bobot ke-
Dikenali
sebagai
huruf
3,6943 3,3908 2,8775 3 H
201
3,1688 3,3245 2,9300 3 H
3,6657 2,8964 3,6568 2 B
3,2154 3,3497 3,7467 1 A
4,1239 2,6657 2,8438 2 B
3,5281 3,8501 2,5597 3 H
2,8987 3,3070 3,5529 1 A
4,1124 2,5066 3,0339 2 B
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.
8.8 UNSUPERVISED LEARNING (JARINGAN KOHONEN)
Jaringan kohonen ini pertama kali diperkenalkan oleh Prof. Teuvo Kohonen pada
tahun 1982. Pada jaringan ini, suatu lapisan yang berisi neuron-neuron akan
menyusun dirinya sendiri berdasarkan input nilai tertentu dalam suatu kelompok
yang dikenal dengan istilah cluster. Selama proses penyusunan diri, cluster yang
memiliki vektor bobot paling cocok dengan pola input (memiliki jarak yang paling
dekat) akan terpilih sebagai pemenang. Neuron yang menjadi pemenang beserta
neuron-neuron tetangganya akan memperbaiki bobot-bobotnya.
Algoritma
0. Inisialisasi bobot: wij.
Set parameter-parameter tetangga.
Set parameter learning rate.
1. Kerjakan jika kondisi berhenti bernilai FALSE:
a. Untuk setiap vektor input x, kerjakan:
202
􀃒 Untuk setiap j, hitung:
= Σ −
i
2
D(J) (wij xi)
􀃒 Tentukan J, sedemikian hingga D(J) minimum.
􀃒 Untuk setiap unit j dengan spesifikasi tetangga tertentu, dan untuk setiap
i:
wij(baru) = wij(lama) + α(xi – wij(lama))
b. Perbaiki learning rate.
c. Kurangi radius ke-tetangga-an pada waktu-waktu tertentu.
d. Tes kondisi berhenti.
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
203
* bobot ke-2 = (0,50 – 0,2)2 + (0,50 – 0,2)2 = 0,1800
Jarak terkecil pada bobot ke-1
Bobot ke- 1 baru:
w11 = 0,26 + 0,6(0,2 – 0,26) = 0,224
w12 = 0,26 + 0,6(0,2 – 0,26) = 0,224
Data ke- 3
Jarak pada:
* bobot ke-1 = (0,224 – 0,3)2 + (0,224 – 0,1)2 = 0,0212
* bobot ke-2 = (0,5 – 0,3)2 + (0,5 – 0,1)2 = 0,2000
Jarak terkecil pada bobot ke-1
Bobot ke- 1 baru:
w11 = 0,224 + 0,6(0,3 – 0,224) = 0,2696
w12 = 0,224 + 0,6(0,1 – 0,224) = 0,1496
Data ke- 4
Jarak pada:
* bobot ke-1 = (0,2696 – 0,5)2 + (0,1496 – 0,3)2 = 0,0757
* bobot ke-2 = (0,5 – 0,5)2 + (0,5 – 0,3)2 = 0,0400
Jarak terkecil pada bobot ke-2
Bobot ke- 2 baru:
w21 = 0,5 + 0,6(0,5 – 0,5) = 0,5000
w22 = 0,5 + 0,6(0,3 – 0,5) = 0,3800
Data ke- 5
Jarak pada:
* bobot ke-1 = (0,2696 – 0,4)2 + (0,1496 – 0,4)2 = 0,0797
* bobot ke-2 = (0,5 – 0,4)2 + (0,38 – 0,4)2 = 0,0104
Jarak terkecil pada bobot ke-2
Bobot ke- 2 baru:
w21 = 0,5 + 0,6(0,4 – 0,5) = 0,4400
w22 = 0,38 + 0,6(0,4 – 0,38) = 0,3920
Data ke- 6
Jarak pada:
* bobot ke-1 = (0,2696 – 0,2)2 + (0,1496 – 0,4)2 = 0,0675
* bobot ke-2 = (0,44 – 0,2)2 + (0,392 – 0,4)2 = 0,0577
Jarak terkecil pada bobot ke-2
Bobot ke- 2 baru:
w21 = 0,44 + 0,6(0,2 – 0,44) = 0,2960
w22 = 0,392 + 0,6(0,4 – 0,392) = 0,3968
α = 0,5*0,6 = 0,3
Nilai bobot akhir setelah epoh ke-10 adalah:
w =
0,2190 0,3424
0,1351 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
204
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.

Tidak ada komentar:

Posting Komentar