MT
tarno@ilkom.unsri.ac.id
Pengantar
Learning vector quantization (LVQ) adalah model untuk
melakukan pembelajaran lapisan kompetitif yang terawasi.
Lapisan kompetitif secara otomatis belajar
mengklasifikasikan vektor-vektor input dalam kelas-kelas.
2 (dua) vektor yang sama, lapisan kompetitif akan
meletakkan keduan vektor input pada kelas yang sama.
Algoritma
1. Tetapkan:
Bobot (w)
Maksimum epoh (MaxEpoh)
Error minimum yang diharapkan ( atau “epsilon”)
Learning rate ()
2. Masukkan:
Input : x (m,n)
Target : T (1,n)
3. Tetapkan kondisi awal:
Epoh : 0
Error : 0.01
Algoritma
4. Kerjakan jika: (epoh<MaxEpoh) atau ( > )
Epoh = epoh+1
Kerjakan untuk i = 1 sampai n
I. Tentukan J sedemikian hingga minimum (sebut
sebagai Cj)
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))
Kurangi nilai
Sample Training
1. Terdapat 10 (sepuluh) input vektor dalam dua kelas sbb:
No. Vector Input Target (Class)
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, 1, 0, 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
Sample Training
2. 2 (dua) vektor input pertama dijadikan inisialisasi bobot:
No. Vector Input (w) Target (Class)
1. ( 1, 0, 0, 0, 1, 0) 1
2. ( 0, 1, 1, 1, 1, 0) 2
jadi :
w11= 1, w12=0, w13=0, w14= 0, w15=1, w16=0
w21= 0, w22=1, w23=1, w24= 1, w25=1, w26=0
sedangkan 8 vektor input yang lain dijadikan sebagai data
training jaringan lvq dengan arsitektur jaringan sbb:
Arsitektur Jaringan LVQ
Training
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), Target = 1
Jarak pada kelas 1:
Jarak terkecil pada bobot kelas 1 (Cj =1), Target data ke-2= 1, jadi (Cj=T)
Bobot baru adalah
w11 = w11 + (x1 – w11) = 1 + 0,05 (1-1) = 0,95
w12 = w12 + (x1 – w12) = 0 + 0,05 (0-0) = 0,00
w13 = w13 + (x1 – w13) = 0 + 0,05 (1-0) = 0,05
w14 = w14 + (x1 – w14) = 0 + 0,05 (0-0) = 0,00
w15 = w15 + (x1 – w15) = 1 + 0,05 (0-1) = 0,95
w16 = w16 + (x1 – w16) = 0 + 0,05 (1-0) = 0,05
Jadi:
w1 = (0,95 0,00 0,05 0,00 0,95 0,05)
Training
data ke-3 ( 0, 1, 0, 0, 0, 1), Target = 1
Jarak pada kelas 1:
Jarak terkecil pada bobot kelas 1 (Cj =1), Target data ke-2= 1, jadi (Cj=T)
Bobot baru adalah
w11 = w11 + (x1 – w11) = 1 + 0,05 (1-1) = 0,95
w12 = w12 + (x1 – w12) = 0 + 0,05 (0-0) = 0,00
w13 = w13 + (x1 – w13) = 0 + 0,05 (1-0) = 0,05
w14 = w14 + (x1 – w14) = 0 + 0,05 (0-0) = 0,00
w15 = w15 + (x1 – w15) = 1 + 0,05 (0-1) = 0,95
w16 = w16 + (x1 – w16) = 0 + 0,05 (1-0) = 0,05
Jadi:
w1 = (0,95 0,00 0,05 0,00 0,95 0,05)
inisialisasi
Bobot awal (ditentukan secara acak/random)
Bobot awal bias ke hidden (v0)
v01 = 0,7496; v02 = 0,3796; v03 = 0,7256; v04 = 0,1628
Bobot awal hidden ke output (wjk)
w1 = 0,2280
w2 = 0,3796
w3 = 0,6799
w4 = 0,0550
Bobot awal bias ke output (w0)
w0 = 0,9505
Fase I : Forward Propagations
Fase ini meliputi :
Tiap-tiap sinyal masukan (Xi, i=1,2,3,...,n) dipropagasikan ke-hidden layer
Tiap-tiap unit hidden layer (Zj, j=1,2,3,...,p) menjumlahkan sinyal-sinyal input
terbobot:
zj = f(net)= f(z_inj)
dan kirimkan sinyal tersebut ke semua unit dilapisan atasnya (unit-unit
output).
Tiap-tiap unit output (Yk, k=1,2,3,...,m) menjumlahkan sinyal-sinyal input
terbobot:
Fase I : Forward Propagations
Fase ini meliputi :
Tiap-tiap sinyal masukan (Xi, i=1,2,3,...,n) dipropagasikan ke-hidden layer
Tiap-tiap unit hidden layer (Zj, j=1,2,3,...,p) menjumlahkan sinyal-sinyal input
terbobot:
zj = f(net)= f(z_inj)
dan kirimkan sinyal tersebut ke semua unit dilapisan atasnya (unit-unit
output).
Tiap-tiap unit output (Yk, k=1,2,3,...,m) menjumlahkan sinyal-sinyal input
terbobot:
Fase I : Forward Propagations
gunakan fungsi aktivasi untuk menghitung sinyal outputnya:
yk = f(net)= f(y_ink)
dan kirimkan sinyal tersebut ke semua unit dilapisan atasnya (unit-unit
output).
Training
Epoch ke-1: Data ke-1 (x1=0, x2=0)
Z_in1 = v01 + V11*x1 + v21+x2
= 0,7496 + 0,9562*0 + 0,1962*0
= 0,7496 + 0 + 0 = 0,7496
Z_in2 = v02 + V12*x1 + v22+x2
= 0,3796 + 0,7762*0 + 0,6133*0
= 0,3796 + 0 + 0 = 0,3796
Z_in2 = v02 + V12*x1 + v22+x2
= 0,3796 + 0,7762*0 + 0,6133*0
= 0, 3796 + 0 + 0 = 0, 3796
Z_in2 = v02 + V12*x1 + v22+x2
= 0,3796 + 0,7762*0 + 0,6133*0
= 0, 3796 + 0 + 0 = 0, 3796
Fase II : Back Propagations
Fase ini meliputi :
Tiap-tiap unit output (Yk, i=1,2,3,...,m) menerima target pola yang terhubung
dengan pola input pembelajaran, hitung informasi error-nya:
k = (tk – yk) f’(y_ink)
Kemudian hitung koreksi bobot (yang nantinya akan digunakan untuk
memperbaiki nilai wjk):
Dwjk = k zj
Hitung juga koreksi bias (yang nantinya akan digunakan untuk memperbaiki
nilau w0k):
Dw0k = k
kirimkan k ini ke unit-unit yang ada dilapisan bawahnya
Fase II : Back Propagations
Tiap-tiap unit tersembunyi (Zj, i=1,2,3,...,p) menjumlahkan delta inputnya
(dari unit-unit yang berada pada lapisan diatasnya):
kalikan nilai _inj dengan turunan dari fungsi aktivasinya untuk menghitung
informasi error:
j = _injf’(z_inj)
hitung koreksi bobot (yang nantinya akan digunakan untuk memperbaiki
nilai vij):
Dvjk = j xi
hitung koreksi bias (yang nantinya akan digunakan untuk memperbaiki v0j):
Dv0j = j
Fase II : Back Propagations
Tiap-tiap unit output (Yk, i=1,2,3,...,m) memperbaiki bias dan bobotnya
(j=0,1,2,...,p):