PENGENAL HURUF TULISAN TANGAN MENGGUNAKAN JARINGAN SARAF TIRUAN METODE LVQ (LEARNING VECTOR QUANTIZATION) By. Togu Sihombing
Tugas Ujian Sarjana 1. Penjelasan 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.
2. Algoritma Learning Vector Quantization (LVQ 1. Tetapkan bobot (W), Maksimum epoh (MaxEpoh), error minimum yang diharapkan (Eps), Learning rate () 2. Masukkan Input : x (m,n) Targetm : T (1,n) 3. Tetapkan kondisi awal Epoh =0 4. Kerjakan jika: (epoh <MaxEpoh) atau ( > eps) a. epoh = epoh + 1 b. Kerjakan untuk i =1 sampai n i. Tentukan J sedemikian hingga x w j 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)) c. Kurangi nilai
1
3. Arsitektur LVQ (Learning Vector Quantization) Pada jaringan saraf metode LVQ (Learning Vector Quantization) lapisan kompetitif akan belajar untuk menggolongkan vektor masukan dengan cara yang hampir sama dengan lapisan kompetitif sebelumnya. Lapisan linier mengubah bentuk yang kompetitif kedalam kelas lapisan yang sama. X1
x w1
X2
Y_in1
Y1
F1
X3
X4
x w2
X5
Y_in2
F2
X6
Gambar Arsitektur jaringan LVQ (Learning Vector Quantization)
Dimana :
X
= Vektor Masukan (x1…, xi…, xn)
F
= Lapisan kompetitif
Y_in
= Masukan kelapisan kompetitif
Y
= Keluaran (Output)
W
xw
= Vektor bobot untuk unit keluaran = Selisih nilai jarak Euclidean antara vektor input dengan vektor bobot untuk unit Output[3]
2
Y2
Gambar
diatas
adalah
arsitektur
jaringan
LVQ
(Learning
Vector
Quantization) yang terdiri dari 6 node lapisan masukan (Input layer), 2 node lapisan tersembunyi (Hidden layer) serta 2 node lapisan keluaran (Output layer). Lapisan input memiliki 6 node yang disimbolkan dengan nilai x1, x2, x3, x4, x5, dan x6. Pada tiap lapis masukan terlebih dahulu diberikan dua nilai bobot yang berbeda yaitu w1 dan w2. Dimana tujuan dari pemberian bobot tersebut adalah agar nilai tiap masukan memiliki penimbang (bobot) yang kemudian akan dihitung nilainya dan diselesaikan dengan persamaan yang dimiliki oleh metode LVQ (Learning Vector Quantization). Sehingga jaringan memiliki dua buah kelas yang berbeda, yaitu kelas 1 dan kelas 2. Kelas 1 memiliki bobot w1 dan kelas dua memiliki bobot w2. Keluaran dari lapisan ini akan menjadi masukan bagi lapisan tersembunyi (hidden layer) sebanyak 2 node yaitu Y_in1 dan Y_in2. Dengan menggunakan prinsip bahwa nilai paling kecil yang dihasilkan adalah pemenang dan merupakan kelas dari input tersebut maka pada lapisan keluaran (Output layer) digunakan sebuah fungsi pembanding yang berguna membandingkan dua nilai tersebut untuk dicari nilai terkecilnya. Dalam jaringan diatas fungsi pembanding tersebut dituliskan dengan simbol F1 dan F2. Nilai input yang diberikan ke lapisan masukan (Input layer) merupakan berupa vektor yang disimbolkan dengan nilai biner 0 dan 1. Jumlah dari vektor x sebagai input tergantung jumlah input yang diberikan kelapisan masukan yang berasal dari vektor ukuran m x n dan diubah menjadi vektor berukuran
1 x n.
Tujuannya adalah untuk mempermudah penentuan jumlah node pada lapisan masukan serta perhitungannya dengan metode LVQ (Learning Vector Quantization). 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
3
Dua input pertama akan dijadikan sebagai inisialisasi bobot sedangkan 8 input sisanya akan digunakan sebagai data yang akan dilatih. Sebagai nilai awal dipilih learning rate ( = 0,05) dengan pengurangan sebesar 0,1* , serta maksimum epoh (MaxEpoh = 10) a. 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 Y_in1
Jarak pada bobot ke-2 =
(0 1) 2 (0 1)2 (1 1) 2 (0 1)2 (0 1)2 (1 0) 2 2 Y_in2
0
X1
1 0
0
0
X2
x w1
2
1
F1
1 1
0
X3
1 0 0
X4
1 1
0
X5
x w2
1
2
0 1
X6
0
Gambar Arsitektur jaringan LVQ untuk tahap pembelajaran dengan input data ke-1
4
F2
Jarak terkecil terdapat pada bobot ke-1, sehingga target data ke-1 adalah data ke-1. Nilai bobot ke-1 baru : w11 = w11 + w12 = w12 + w13 = w13 + w14 = w14 + w15 = w15 + w16 = w16 +
*( x11 - w11 ) = 1 + 0,05 * (0 1) = 0,9500; *( x11 - w12 ) = 0 + 0,05 * (0 0) = 0,0000; *( x11 - w13 ) = 0 + 0,05 * (1 0 ) = 0,0500; *( x11 - w14 ) = 0 + 0,05 * (0 0) = 0,0000; *( x11 - w15 ) = 1 + 0,05 * (0 1) = 0,9500; *( x11 - 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 (0 0,95) 2 (1 0,05) 2 1,3454 Jarak pada 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 terdapat pada bobot ke-1, sehingga target data ke-2 adalah data ke-1. 0
X1
0,95 0
0
0
X2
x w1
1,3454
1
F1
1 1
X3
0,05 1 0
0
X4
1 0,95
1
x w2
1
X5
1,4142
0,05 0 0
X6 Gambar Arsitektur jaringan LVQ untuk tahap pembelajaran dengan input data ke-2
5
F2
Nilai bobot ke-1 baru : w11 = w11 + w12 = w12 + w13 = w13 + w14 = w14 + w15 = w15 + w16 = w16 +
*( x11 - w11 ) = 0,95 + 0,05 * 0 0,95 = 0,9025; *( x11 - w12 ) = 0,00 + 0,05 * (0 0) = 0,0000; *( x11 - w13 ) = 0,05 + 0,05 * (1 0,05 ) = 0, 0975; *( x11 - w14 ) = 0,00 + 0,05 * (0 0) = 0,0000; *( x11 - w15 ) = 0,95 + 0,05 * (0 0,95) = 0, 9525; *( x11 - w16 ) = 0,05 + 0,05 * (1 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 Jarak pada bobot ke-2 =
(0 0)2 (1 1) 2 (0 1)2 (0 1)2 (0 1)2 (1 0)2 2 Jarak terkecil terdapat pada bobot ke-1, sehingga target data ke-3 adalah data ke-1.
0
X1
0,9025 0
1
0
X2
x w1
1 0
X3
1,9075
1
F1
0,0975 1 0
0
X4
1 0,9525
0
0,0475 1
x w2
1
X5
2
0
X6 Gambar Arsitektur jaringan LVQ untuk tahap pembelajaran dengan input data ke-3
6
F2
Nilai bobot ke-1 baru : w11 = w11 + w12 = w12 + w13 = w13 + w14 = w14 + w15 = w15 + w16 = w16 +
*( x11 - w11 ) = 0,9025 + 0,05 *(0 – 0,9025) = 0,8547; *( x11 - w12 ) = 0,0000 + 0,05 *(0 – 0,0000) = 0,0500; *( x11 - w13 ) = 0,0975 + 0,05 *(1 – 0,0975) = 0,0926; *( x11 - w14 ) = 0,0000 + 0,05 *(0 – 0,0000) = 0,0000; *( x11 - w15 ) = 0,9525 + 0,05 *(1 – 0,9025) = 0,9049; *( x11 - w16 ) = 0,0475 + 0,05 *(0 – 0,0475) = 0,0951;
Jadi w1 = (0,8547 0,0500 0,0926
0,0000
0,9049
0,0951)
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 w2 = (0,0000 0,7969 0,7900 1,0000
0,7981
0,4254)
0,5869 0,2171)
Sehingga bentuk jaringan untuk tahap pengujian dapat digambarkan sebagai berikut :
X1
0,3727 0
X2
Y_in1
0,2161
x w1
Y1
F1
0,7969
X3
0,6347 0,7900 -0,2164
X4
1 0,7981
x w2
0,5869
X5 0,4254
Y_in2
0,2171
X6
Gambar Arsitektur jaringan LVQ untuk tahap pengujian setelah epoh ke-10
7
F2
Y2
Misalkan sebuah vektor input diambil untuk pengujian misalnya (0, 1, 0, 1, 1, 0), maka terlebih dahulu dihitung 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
Jarak pada 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.
Pengujian nilai input diatas dapat digambarkan seperti Gambar arsitektur LVQ dibawah ini :
0
X1
0,3727 0
1
X2
0,2161
x w1
1,6904
F1
0,7969 0
X3
0,6347 0,7900 -0,2164
1
X4
1 0,7981
1
X5 0,4254
0
x w2
0,5869
0,9398
0,2171
X6
Gambar Arsitektur jaringan LVQ untuk tahap pengujian
8
F2
2
4. Proses Pengenalan Huruf Proses pengenalan memanfaatkan jaringan saraf tiruan (JST) dengan komposisi Jaringan neural yang terdiri dari 3 lapisan yang terdiri dari satu input layer (256 node), satu hidden layer (52 node) dan satu output layer (52 node), yaitu sesuai dengan jumlah vektor interpretasi tulisan tangan hasil scanning menjadi vektor 16 x16 sebanyak 256 jenis dan jumlah tulisan yang digunakan sebanyak 52 buah (huruf alphabet huruf kecil a~z dan huruf besar A~Z). Urutan Input dimulai dari rangkaian dijit paling kiri menuju kanan, maka susunan input seperti terlihat pada Gambar berikut :
...
Y Z a b
24
2
3
...
253
254
255
Input ke 0
... ...
Input ke 1
25
........
1
1
0
...
A B
...
0
...
26
...
... 50
...
...
27
y z
Susunan Input Pada Jaringan Saraf
Matrik 52 x 256
Abjad
Input ke 254
...
51
Input ke 255
Gambar Susunan Input pada pengenalan huruf tulisan tangan
5. Tahap Inisialisasi Kelas - kelas yang ada pada program ini diurutkan berdasarkan huruf abjad. Dimana huruf “A” dimasukkan kedalam kelas ke-1 dan huruf “B” dimasukkan kedalam kelas ke-2 sampai kepada huruf terakhir dalam Alphabet, hingga huruf “Z” mendapat kelas ke-26. Demikian juga dengan huruf kecil (lowercase) dimasukkan kedalam kelas yang berbeda dengan huruf besar, dimana kelas
9
pertama dalam huruf kecil adalah lanjutan dari kelas untuk huruf besar. Yaitu huruf “a” mendapat kelas ke-27, huruf “b” diletakkan pada kelas ke-28 hingga huruf “z” mendapat kelas ke-56.
6. Tahap Pembelajaran Tulisan Tangan Memasukkan pola tulisan tangan yang akan diajarkan, baik yang telah tersedia berupa file bmp maupun pola tulisan tangan langsung dari hasil scanner dan diletakkan ke Form input yang tersedia pada program tulisan tangan. Kemudian pola tersebut dikonversi menjadi vektor matrik 16 x 16 agar dapat dihitung nilai bobot matriknya dengan metode LVQ (Learning Vector Quantization). Selanjutnya bobot matrik tersebut dihitung dengan aturan hitungan pada pembelajaran dengan metode LVQ (Learning Vector Quantization) dengan 10 (sepuluh) epoh untuk tiap huruf yang akan diajarkan sampai diperoleh nilai epoh terkecil untuk setiap huruf tulisan tangan. Unit terkecil yang dihasilkan akan menjadi bobot pembanding yang akan dipakai pada tahap pengujian. Disetiap pemasukan input huruf dipastikan pembelajarannya sesuai dengan dengan huruf yang kita inginkan. Tujuannya adalah
memperoleh nilai bobot terkecil yang
dimiliki oleh setiap huruf tulisan tangan. Kemudian pastikan bahwa semua huruf tulisan tangan
yang akan diajarkan telah merata seluruhnya diajarkan dalam
sistem, karena jika tidak merata akan mengakibatkan kesalahan pada bobot epoh terakhir yang kita ingini tidak sesuai. Ini disebabkan nilai dari setiap huruf pada tiap pembelajaran akan berubah jika salah satu huruf diberikan pembelajaran. Dan jika antara data masukan dengan data target sesuai maka nilai bobot baru dihitung dengan persamaan : wj (baru) = wj(lama) + (x-wj(lama))
10
Namun Jika terjadi ketidakcocokan antara data masukan dengan data target maka nilai bobot baru kemudian diperbaiki dengan persamaan : wj (baru) = wj(lama) - (x-wj(lama)) Nilai nilai bobot baru tersebut akan dihitung sampai kepada Maxepoh (maksimum epoh yang dilakukan untuk setiap huruf pembelajaran). Dalam tugas akhir ini nilai epoh awal 1 = 0,05. Dan setiap epoh ke epoh berikutnya nilai (learning rate) mengalami pengurangan nilai sebesar 0,1* seperti persamaan berikut : n = n-1 - 0,1*n-1 [7]
Nilai untuk epoh ke-n
Sehingga susunan jaringan saraf tiruan dengan metode LVQ (Learning Vector Quantization) yang digunakan untuk proses pengenalan tulisan tangan selengkapnya seperti yang ditunjukkan pada Gambar dibawah ini :
Matrik 52 x 256
Abjad 0
1
2
3
...
Lapisan Input 253
Lapisan tersembunyi
Lapisan Output
254 255 0
0
A
1
1
...
2
2 3
B
Z
...
...
...
...
...
3
a 49 50 51
...
253
b
254
...
252
48
255
z
Gambar Susunan Jaringan Saraf metode LVQ untuk pengenalan tulisan tangan
Jumlah node lapisan keluaran adalah 52 node, yaitu sesuai dengan jumlah huruf alphabet Huruf besar A~Z serta huruf kecil a~z. Masing-masing unit hidden menghitung sesuai dengan fungsi aktivasinya kemudian mengirim sinyal terhitung
11
tersebut kemasing-masing unit output. Setelah diterima output dihitung sesuai dengan fungsi aktivasinya dan akan menghasilkan sinyal keluaran sebagai respon adanya masukan di unit input.
7. Analisis dan Kesimpulan - Hasil pengujian pengenalan huruf tulisan tangan menggunakan awal (Leaning rate) = 0,05 sebagai epoh awal dan untuk epoh berikutnya nilai (learning rate) mengalami pengurangan dengan
nilai
sebesar 0,1*
dan diselesaikan
persamaan n = n-1 - 0,1*n-1.
- Tugas akhir ini Menggunakan 39 data latih yang memiliki 3 (tiga) jenis tingkat kerusakan yaitu tingkat kerusakan rendah (4 : 4), tingkat kerusakan sedang (3 : 4), tingkat kerusakan tinggi (2 : 4). Hasil Implementasi Tingkat kerusakan Jenis Huruf Huruf Besar
Rendah (4:4) 91, 6%
Sedang (3:4) 85, 8%
Tinggi (2:4) 72, 7%
Huruf Kecil
91, 2%
86, 5%
73, 8%
- Pengenalan huruf besar dengan dengan kerusakan rendah
(4 : 4), kerusakan
sedang (3 : 4), kerusakan tinggi (2 : 4) berturut-turut, 91,6 %, 85,8 %, 72.7 %. Serta pengenalan huruf kecil 91,2 %, 86,5 %, 73,8 %. Tingkat kerberhasilan pengenalan huruf tulisan tangan huruf besar dan kecil dengan kerusakan tinggi (2 : 4) adalah yang terkecil 72,7 % dan 73,8 % dibanding dengan pengenalan dengan kerusakan sedang (3 : 4) maupun kerusakan rendah (4 : 4), dikarenakan kerusakan yang dihasilkan menyebabkan nilai perbandingan bit 0 dan 1 tidak berimbang serta nilai bobot yang terdeteksi menjadi tidak sesuai dengan data pelatihan
12