Uji Coba 1 : Learning Rate
Grafik Uji Coba 120.00% Inisial Variabel
:
100.00%
Nama variabel
Nilai
Learning Rate (α)
0.1, 0.5, 0.8, 0.9
Momentum
0.5
Jumlah hidden node
[20 10 1]
Fungsi aktivasi
Tangen Sigmoid
Iterasi
(Epoch)
Training 2000
80.00%
60.00% 40.00% 20.00%
0.00% Lr 0.1
Lr 0.5
Lr 0.8
Akurasi Data Training Akurasi Data Testing
Lr 0.9
Evaluasi : Uji Coba 1 Learnin g Rate
Akurasi Akurasi dataset dataset training testing
Waktu MSE (Detik)
0.1
79,67% 41,30%
28
0.0442
0.5
86,26% 45,65%
36
0.0243
0.8
96,15%
50%
30
0.0124
0.9
90%
50%
29
0.0245
Semakin besar learning rate maka rentang untuk menentukan perubahan bobot dalam neural network semakin besar dan berpengaruh dengan kedekatan fitur kepada kelas yang lain. Saat learning rate kecil maka perubahan bobot semakin kecil dan kedekatan pola ke kelas lain dari inisial target juga semakin jauh.
Lihat Penjelasan Learning Rate
Uji Coba 2 : Momentum
Grafik Uji Coba Inisial Variabel
:
Nama variabel
Nilai
Learning Rate (α)
0.8
Momentum (μ)
0.1, 0.5 , 0.9
Jumlah hidden node
[20 10 1]
Fungsi aktivasi
Tangen Sigmoid
Iterasi
(Epoch)
Training 2000
100.00% 90.00% 80.00% 70.00% 60.00% 50.00% 40.00% 30.00% 20.00% 10.00% 0.00% μ 0.1
μ 0.5
Akurasi Data Training Akurasi Data Testing
μ 0.9
Evaluasi : Uji Coba 2 Moment Akurasi dataset um training
Akurasi dataset testing
Waktu (Detik)
0.1
93,9%
43,47%
27
0.5
97.8%
54,3%
25
0.9
100%
78,26%
28
Berdasarkan tabel diatas, dapat dilihat bahwa semakin besar nilai konstanta momentum, proses pelatihan semakin cepat. Dengan momentum selain untuk mempercepat proses training juga digunakan untuk mencapai akurasi yang optimum namun dengan melihat keseimbangan nilai learning rate dan momentum. Lihat Penjelasan Momentum
Uji Coba 3 : Jumlah Node
Grafik Uji Coba 120.00% Inisial Variabel
:
100.00%
Nama variabel
Nilai
Learning Rate (α)
0.8
Momentum
0.9
60.00%
Jumlah hidden node
[160 80 1]
40.00%
[80 10 1] [20 10 1] Fungsi aktivasi
Tangen Sigmoid
Iterasi Training (Epoch)
2000
80.00%
20.00%
0.00% [160 80 1]
[80 10 1]
Akurasi Data Training Akurasi Data Testing
[20 10 1]
Evaluasi : Uji Coba 3 Jumlah Node Akurasi dataset training
Akurasi dataset testing
Waktu (Detik)
[160 80 1]
13,7%
15,2%
72
[80 10 1]
67,58%
47,3 %
32
[20 10 1]
100%
78,26%
28
Tidak ada kepastian tentang berapa banyak jumlah node yang paling optimal. Dalam neural network jumlah node bergantung pada keunikan pola setiap dataset.
Uji Coba 4 : Level Dekomposisi
Grafik Uji Coba Inisial Variabel
:
Nama variabel
Nilai
Learning Rate (α)
0.8
Momentum
0.9
Jumlah hidden node
[20 10 1]
Fungsi aktivasi
Tangen Sigmoid
Iterasi Training (Epoch)
2000
Level Wavelet
3, 4, 5
200% 180% 160% 140% 120% 100% 80% 60% 40% 20% 0% Level 5
Level 4
Akurasi Data Testing Akurasi Data Training
Level 3
Evaluasi : Uji Coba 4
Level Wavelet
Akurasi dataset training
Akurasi dataset testing
Waktu (Detik)
Level 3
68,7%
47,8%
23
Level 4
79,12%
54,34%
26
Level 5
100%
78,26%
28
• Level 5 lebih optimal, meskipun lebih lama. • Dalam setiap level nilai fitur mempresentasikan nilai skala yang berbeda, semakin besar level semakin baik tapi penghitungan akan memakan waktu lebih lama • Hasil ini membuktikan bahwa kesimpulan dari penelitian Manesh Kokare, P.K. Biswas, B.N. Chatterji [3] benar dan dapat diaplikasikan pada pengenalan motif batik.
KESIMPULAN
Penggunaan transformasi Rotated Wavelet Filter dalam ekstraksi fitur pengenalan batik cukup efektif untuk menghasilkan citra dekomposisi khususnya dalam representasi citra detail diagonal. Penggunaan Neural Network varian Multi Layer Perceptron untuk mengklasifikasi fitur motif batik yang dikombinasikan dengan transformasi wavelet memberikan hasil yang cukup akurat. Representasi vektor fitur dengan dekomposisi level 5 lebih efektif daripada dekomposisi pada level dibawahnya. Dari hasil uji coba bisa disimpulkan bahwa akurasi tertinggi yaitu 100% untuk data testing sama dengan data training dan dicapai 78,26% untuk data testing yang berbeda dengan data training. Kedua akurasi didapat pada nilai learning rate 0.8, menggunakan momentum 0.9, pada jumlah komposisi node hidden layer [40 10 1] di level dekomposisi ke-5.
SARAN
Penggunaan data citra batik yang lengkap dari dinas kebudayaan dan pariwisata nasional. Adanya proses seleksi untuk motif batik yang memiliki unsur modern atau pola khusus. Pengembangan aplikasi ke sistem pengenalan isen-isen dalam batik yang juga mempengaruhi definisi dari setiap motif. Penilitian lebih lanjut untuk menggunakan algoritma training neural network yang lain seperti algoritma Lavenberg Marquard (TRAINLM) dan Gradient Descent with Adaptive learning rate backpropagation (TRAINGDA).
Motif Geometri Nama Motif Parang
Deskripsi Pola ini terdiri atas satu atau lebih ragam hias yang tersusun membentuk garis-garis sejajar dengan sudut miring 45o. Terdapat ragam hias berbentuk belah ketupat sejajar dengan deretan ragam hias utama pola parang, disebut mlinjon.
Ceplok
Motif batik yang didalamnya terdapat gambar-gambar segi empat, lingkaran dan segala variasinya dalam membuat sebuah pola yang teratur.
Lereng
Pada dasarnya sama dengan pola parang tetapi memiliki perbedaan pada tidak adanya hias mlinjon dan hias gareng.
Motif Non-Geometri Semen
Lung-Lungan
Ragam hias utama yang merupakan ciri pola semen adalah meru. Hakikat meru adalah lambang gunung atau tempat tumbuhan bertunas atau bersemi sehingga motif ini disebut dengan semen, yang diambil dari kata dasar semi. Sebagian besar motif lung-lungan mempunyai ragam hias utama serupa dengan motif semen. Berbeda dengan pola semen, ragam hias utama lung-lungan tidak selalu mengandung ragam hias meru. Pola buketan mudah dikenali melalui rangkaian bunga atau kelopak bunga dengan kupu-kupu, burung, atau berbagai satwa kecil mengelilinginya
Buketan
Back
Contoh Batik
Proses Multi Layer Perceptron 1. 2. 3. 4. 5.
Inisialisasi semua bobot dengan bilangan acak kecil. Jika kondisi penghentian belum dipenuhi, lakukan langkah 3-9. Untuk setiap pasang data pembelajaran, lakukan langkah 4-9. Tiap unit masukan menerima sinyal dan meneruskannya ke unit tersembunyi. Hitung semua keluaran di unit tersembunyi zj (j = 1, 2,..., p). 𝑍_𝑁𝑒𝑡𝑗 = 𝑉𝑗0 + 𝑛𝑖=1 𝑋𝑖 𝑉𝑗𝑖 …………………………….(2.5) 𝑍𝑗 = 𝑓 𝑍_𝑁𝑒𝑡𝑗 =
1−𝑒
−2𝑧_𝑛𝑒𝑡𝑗
1+𝑒
−2𝑧_𝑛𝑒𝑡𝑗
……………………….....(2.6)
6. Hitung semua keluaran jaringan di unit keluaran yk (k = 1, 2,...,m). 𝑝 𝑌_𝑁𝑒𝑡𝑘 = 𝑊𝑘0 + 𝑗=1 𝑍𝑗 𝑊𝑘𝑗 ……………………….(2.7) 𝑌𝑘 = 𝑓 𝑌_𝑁𝑒𝑡𝑘 =
1−𝑒 −2𝑧_𝑛𝑒𝑡𝑘 ………………………(2.8) 1+𝑒 −2𝑧_𝑛𝑒𝑡𝑘
7. Hitung faktor δ unit keluaran berdasarkan kesalahan di unit keluaran yk (k = 1, 2,..., m). 𝛿𝑘 = 𝑡𝑘 − 𝑦𝑘 𝑓 ′ 𝑌_𝑁𝑒𝑡𝑘 = 𝑡𝑘 − 𝑦𝑘 𝑦𝑘 (1 − 𝑦𝑘 ), 𝑡𝑘 = 𝑡𝑎𝑟𝑔𝑒𝑡…………..(2.9) Hitung perubahan bobot wkj dengan laju pemahaman α ∆𝑊𝑘𝑗 = 𝛼𝛿𝑘 𝑍𝑗 Dimana 𝑘 = 1, 2, … . , 𝑚; 𝑗 = 0, 1, … , 𝑝 …….(2.10)
Proses Multi Layer Perceptron
8. Hitung faktor δ unit tersembunyi berdasarkan kesalahan di setiap unit tersembunyi zj (j = 1,
𝛿_𝑛𝑒𝑡𝑗 =
𝑚 𝑘=1 𝛿𝑘 𝑤𝑘𝑗 ……………………………(2.11)
Faktor δ pada unit tersembunyi.
𝛿𝑗 = 𝛿𝑁𝑒𝑡 𝑗 𝑓 ′ 𝑍𝑁𝑒𝑡 𝑗 = 𝛿𝑁𝑒𝑡 𝑗 𝑍𝑗 (1 − 𝑧𝑗)…………(2.12)
Hitung suku perubahan bobot vji.
∆𝑉𝑗𝑖 = 𝛼𝛿𝑗 𝑋𝑖 , ……………………………………....(2.13) 𝐷𝑖𝑚𝑎𝑛𝑎 𝑗 = 1,2, … , 𝑝; 𝑖 = 1,2, … . , 𝑛
9. Hitung semua perubahan bobot. Perubahan bobot garis yang menuju ke unit keluaran, yaitu: 𝑊𝑘𝑗 𝑏𝑎𝑟𝑢 = 𝑊𝑘𝑗 𝑙𝑎𝑚𝑎 + ∆𝑊𝑘𝑗 , 𝑘 = 1,2, … , 𝑚; 𝑗 = 0,1, … , 𝑝 Perubahan bobot garis yang menuju ke unit tersembunyi, yaitu: 𝑉𝑗𝑖 𝑏𝑎𝑟𝑢 = 𝑉𝑗𝑖 𝑙𝑎𝑚𝑎 + ∆𝑉𝑗𝑖 , 𝑖 = 1,2, … , 𝑛; 𝑗 = 0,1, … , 𝑝
Proses Multi Layer Perceptron
1. 2. 3. 4.
Sedangkan algoritma untuk testing dalam MLP adalah sebagai berikut : Inisialisasi bobot (dari algoritma pelatihan). Untuk setiap unit masukan, lakukan langkah 3-5. Untuk i = 1,...,n, atur aktivasi unit masukan xi. Untuk j = 1,...,p :
𝑍_𝑁𝑒𝑡𝑗 = 𝑉𝑗0 +
𝑛 𝑖=1 𝑋𝑖 𝑉𝑗𝑖 …………………………..(2.16) −2𝑧_𝑛𝑒𝑡𝑗 1−𝑒
𝑍𝑗 = 𝑓 𝑍_𝑁𝑒𝑡𝑗 = 5. Untuk k = 1,...,m :
𝑌_𝑁𝑒𝑡𝑘 = 𝑊𝑘0 +
𝑌𝑘 = 𝑓 𝑌_𝑁𝑒𝑡𝑘 Back
−2𝑧_𝑛𝑒𝑡𝑗 1+𝑒
……………………..…(2.17)
𝑝 𝑗=1 𝑍𝑗 𝑊𝑘𝑗 ……………………………(2.18) 1−𝑒 −2𝑧_𝑛𝑒𝑡𝑘 = 1+𝑒 −2𝑧_𝑛𝑒𝑡𝑘 ………………………...(2.19)
MSE
Pada tugas akhir ini, untuk menghitung error dengan menggunakan Nilai tengah kesalahan kuadrat / mean squared error (MSE) :
MSE =
𝑒 2𝑖
𝑛 𝑖=1 𝑛
Dimana e adalah
e = |𝑦 − 𝑡|
Keterangan : n = banyak target e = error y = Nilai simulasi t = Nilai target
Learning Rate (α)
Back
Learning rate menentukan seberapa besar perubahan bobot-bobot w pada tiap langkah, jika learning rate terlalu kecil algoritma akan memakan waktu lama menuju konvergen. Sebaliknya jika learning rate terlalu besar maka algoritma menjadi divergen.
∆𝑊𝑘𝑗 = 𝛼𝛿𝑘 𝑍𝑗
Perubahan Bobot untuk Nilai Learning Rate Kecil
Perubahan Bobot untuk Nilai Learning Rate Besar
Momentum (μ)
Back
Teknik yang bisa menolong jaringan keluar dari lokal minima adalah dengan menggunakan momentum. Dengan momentum m, bobot diperbaharui pada setiap waktu iterasi.
𝑊𝑘𝑗 𝑏𝑎𝑟𝑢 = 𝑊𝑘𝑗 𝑙𝑎𝑚𝑎 + μ∆𝑉𝑘𝑗 Momentum ini menambahkan sebuah perkalian dengan bobot sebelumnya pada bobot saat ini. Pada saat gradient tidak terlalu banyak bergerak, ini akan meningkatkan ukuran langkah yang diambil menuju nilai minimum.
Code : Energy & Standart Deviasi 1 1 2 2 3 1 3 4 2 4 5 3 5 6 4 6 7 5 7 8 6 8 9 7 9 10 8 10 11 9 12 10 13 11 14 12 15 16 17 18 19 20 21
function [ELL,SLL,ELH,SLH,EHL,SHL,EHH,SHH] = [ELL1,SLL1,ELH1,SLH1,EHL1,SHL1,EHH1,SHH1] = Energy_SDeviasi(LL,LH,HL,HH) Energy_SDeviasi(LL1,LH1,HL1,HH1); %mengambil ukuran bidang function energy = setiap energy(X,M,N) = [M N]= size(LL); %[ELL2,SLL2,ELH2,SLH2,EHL2,SHL2,EHH2,SHH2] penghitungan energi Energy_SDeviasi(LL2,LH2,HL2,HH2); %menghitung nilai energi dan energy=sum(abs(X(:)))/(M*N); [ELL3,SLL3,ELH3,SLH3,EHL3,SHL3,EHH3,SHH3] = standart deviasi dari subbidang 1 end Energy_SDeviasi(LL3,LH3,HL3,HH3); ELL = energy(LL,M,N); [ELL4,SLL4,ELH4,SLH4,EHL4,SHL4,EHH4,SHH4] = SLL = SDeviasi(LL,M,N); function SDeviasi = SDeviasi(X,M,N) %menghitung nilai energideviasi dan %Energy_SDeviasi(LL4,LH4,HL4,HH4); penghitungan standart [ELL5,SLL5,ELH5,SLH5,EHL5,SHL5,EHH5,SHH5] = standart deviasi dari subbidang 2 meanX = mean2(X); Energy_SDeviasi(LL5,LH5,HL5,HH5); ELH = selX = energy(LH,M,N); (X-meanX).^2; SLH = SDeviasi(LH,M,N); SDeviasi=sqrt(sum(selX(:)/(M*N))); %menghitung nilai energi dan end standart deviasi dari subbidang 3 EHL = energy(HL,M,N); SHL = SDeviasi(HL,M,N); %menghitung nilai energi dan standart deviasi dari subbidang 4 EHH = energy(HH,M,N); SHH = SDeviasi(HH,M,N); end
Fungsi Per Level
Fungsi Per Bidang Fungsi Energy+Stn dart Deviasi
Code : Training & Testing MLP 1 2 1 3 2 4 3 5 4 6 5 7 6 8 7 8 9 9 10 10 11 11 12 12 13 13 14 14 15 15 16 16 17 17 18 18 19 19 20 20 21 21 22 22 23 23
function NN_Training(dataset,lr,mc) %mengambil input data ekstrasi fitur beserta target training function t= NN_Testing(dataset,kelas_test) data_training %inisialisasi = xlsread(dataset,1); kelas_train xlsread(dataset,2); data_test = =dataset; data_train = data_training'; Nkelas=size(data_test,1); kelas_train kelas_train'; data_test = =data_test'; %normalisasi menjadi -1 dan %Normalisasi data data train testing denganrentang rentangantara -1 sampai 1 1[m n] = size(data_test); [pn,Minp,Maxp,tn,mint,maxt]=premnmx(data_train,kelas_ minp = evalin('base', 'minp'); train); maxp = evalin('base', 'maxp'); %membuat neural network minimp = (inisialisasi) zeros(m,n); net=newff(minmax(pn),[40 20 maximp = zeros(m,n); 1],{'tansig','tansig','tansig'},'traingdm'); for i=1:n %menentukan epoch(iterasi),momentum dan minimp(:,i) nilai = minp; learning rate= maxp; maximp(:,i) net.trainParam.epochs=1000; end net.trainParam.lr=lr; an = 2.*(data_test-minimp)./(maximp-minimp) - 1; net.trainParam.mc=mc; %melakukan simulasi testing %melakukan training terhadap net = evalin('base', 'net'); model neural network net=train(net,pn,tn); y=sim(net,an); %network hasil dari beserta nilai %denormalisasi kelastraining testing disimpan dengan output maks 6 dari Minp1 dan Maxp dan min assignin('base', 'net', t = 0.5*(y+1)*(6-1) + 1;net); assignin('base','minp',Minp); prediksi = round(t); assignin('base','maxp',Maxp);
Training
Testing
Code : Rotated Wavelet Transform 1 21 32 43 5 4 65 76 87 9 8 10 9 11 10 12 11 13 12 14 13 15 14 16 15 17 16 18 17 19 18 20 19
20 21 22 23
FunctionEF_daub4_rwf(Image) function [LL,LH,HL,HH] = Daub4(X,HLL,HLH,HHL,HHH) %mengambil filter RWF berisiLL1,HLL,HLH,HHL,HHH %dekomposisi untukbank representasi Image Approximation dari DWT yang dirotasi / Subbidang 1 load filter_asli.mat; LL = conv2(X,HLL,'same'); %dekomposisi level 1 LL = downsample(LL,2,1);LL = LL'; [LL1,LH1,HL1,HH1] = LL = downsample(LL,2,1);LL = LL'; Daub4(Image,HLL_R,HLH_R,HHL_R,HHH_R); %dekomposisi untuk representasi Image Horizontal %dekomposisi level 22 Detail / Subbidang [LL2,LH2,HL2,HH2] = LH = conv2(X,HLH,'same'); Daub4(LL1,HLL_R,HLH_R,HHL_R,HHH_R); LH = downsample(LH,2,1);LH = LH'; %dekomposisi level 3 LH = downsample(LH,2,1);LH = LH'; [LL3,LH3,HL3,HH3] = %dekomposisi untuk representasi Image Vertical Daub4(LL2,HLL_R,HLH_R,HHL_R,HHH_R); Detail/ Subbidang 3 %dekomposisi level 4 HL = conv2(X,HHL,'same'); [LL4,LH4,HL4,HH4] = HL = downsample(HL,2,1);HL = HL'; Daub4(LL3,HLL_R,HLH_R,HHL_R,HHH_R); HL = downsample(HL,2,1);HL = HL'; %dekomposisi %dekomposisi level untuk 5representasi Image Diagonal [LL5,LH5,HL5,HH5] Detail/ Subbidang =4 Daub4(LL4,HLL_R,HLH_R,HHL_R,HHH_R); HH = conv2(X,HHH,'same');
HH = downsample(HH,2,1);HH = HH'; HH = downsample(HH,2,1);HH = HH'; end
Ekstraksi Per Level
Ekstraksi Per Bidang