Anda di halaman 1dari 22

Studi Modifikasi standard Backpropagasi

1. Modifikasi fungsi objektif dan turunan


2. Modifikasi optimasi algoritma

Step Studi :
1. Studi literatur
2. Studi standard backpropagasi
a. Uji coba standar backpropagasi pada xor problem
b. Evaluasi karakteristik standar backpropagasi
1). Tingkat konvergensi ke global minimum
2). Tingkat akurasi output
3. Studi modifikasi standar backpropagasi
a. Uji coba modifikasi standar backpropagasi pada xor problem
b. Evaluasi karakteristik modifikasi standar backpropagasi
1). Tingkat konvergensi ke global minimum
2). Tingkat akurasi output
4. Membandingkan standar dan modifikasi backpropagasi
a. Tingkat konvergensi ke global minimum
b. Tingkat akurasi output
5. Implementasi
a. Programing
b. Management Database
Backpropagasi
Backpropagasi merupakan algoritma pelatihan untuk memperkecil tingkat error
dengan menyesuaikan bobot berdasarkan perbedaan output dan target yang
diinginkan.

Proses pelatihan :
1. Pengambilan input
2. Penelusuran error
3. Penyesuaian bobot

Arsitektur :

Y1 Yk Ym

w01 w11 wj1 wp1 wok W1k Wjk Wpk w0m W1m Wpm
Wjm

1 Z1 Zj Zp

V01 V11 Vj1 Vn1 Voj V1j Vij Vnj V0p V1p Vip Vnp

1 X1 Xj Xn

Algoritma :
Step 0 : Inisialisai Bobot
 Random
 Nguyen-Widrow
 Laju pembelajaran (alpha)
 Laju pembelajaran momentum (miu)

Step 1 : Selama kondisi stopping FALSE, lakukan Step 2-9


Step 2 : Untuk setiap pasangan pelatihan (p = 1,…,P), lakukan Step 3-8
(Proses Feedforward) :
Step 3 : Setiap unit input (Xi, i = 1,…,n) :
 menerima input xi
 mengirimkannya ke semua unit layer diatasnya (Hidden layer).
Step 4 : Setiap unit hidden (Zj, j = 1,…,p)
 menghitung semua sinyal input dengan bobotnya :
z_inj = voj +  xi vij
 menghitung nilai aktivasi setiap unit hidden
sebagai output unit hidden :
zj = f(z_inj)
 mengirim nilai aktivasi sebagai input untuk unit output.
Step 5 : Setiap unit output (Yk, k = 1,…,m)
 menghitung semua sinyal inputnya dengan bobotnya :
y_ink = wok +  zj wjk
menghitung nilai aktivasi setiap unit output sebagai
output jaringan.
yk = f(y_ink)

(Backpropagation of error) :
Step 6 : Setiap unit output (Yk, k = 1,…,m) :
 menerima pola target yang bersesuaian dengan pola input
 menghitung informasi error :
k = (tk - yk) f’(y_ink)
 menghitung besarnya koreksi bobot unit output :
wjk =  E(wjkj)/wjk =  k zj
 menghitung besarnya koreksi bias output :
w0k =  k
 mengirimkan k ke unit-unit yang ada pada layer di
bawahnya.

Step 7 : Setiap unit hidden (Zj, j = 1,…,p) :


menghitung semua koreksi error :
_inj =  k wjk
 menghitung nilai aktivasi koreksi error :
j = _inj f’(z_inj)
 menghitung koreksi bobot unit hidden :
vij =  j xi
menghitung koreksi error bias unit hidden :
v0j =  j

Step 8 : Setiap unit output (Yk, k = 1,…,m) :


meng-update bobot dan biasnya (j = 0,…,p) :
wjk(baru) = wjk(lama) + wjk
w0k(baru) = w0k(lama) + w0k

Setiap unit hidden (Zj, j = 1,…,p)


meng-update bobot dan biasnya (i = 0,…,n) :
vij(baru) = vij(lama) + vij
v0j(baru) = v0j(lama) + v0j

Step 9 : Kondisi stopping ( Toleransi error )


Hitung ep
Hitung Total ep
Bila Ep < 0,01 berhenti
Metode Inisialisasi Nguyen Widrom :
Menentukan faktor skala :
 = 0.7 (p) 1/c
 : faktor skala
c: i (input-hidden); j (hidden-output)
p : j (input-hidden); k (hidden-output)

Algoritma :
Untuk setiap unit hidden (j=1, ... , J) :
 Inisialisasi bobot secara random
vij = bilangan acak antara -0.5 sampai 0.5
p
 Hitung :  vj  =  {  (vij)2}
i=1

 Update bobot vij =  vij


 vj 
 Set bias v0j : bilangan acak antara -  sampai 
Arsitektur JNPB

JNPB terdiri dari


satu lapis masukan
satu atau lebih lapis tersembunyi
satu lapis keluaran.

Lapisan masukan hanya bertugas meneruskan masukan dan tidak


melakukan komputasi, sementara lapisan tersembunyi dan lapisan
keluaran melakukan komputasi.

Jumlah neuron pada lapisan masukan sama dengan jumlah ciri atau
atribut pada pola yang akan dikenali, sedang jumlah neuron pada
lapisan keluaran sama dengan jumlah kelas pola.

Lapisan
keluaran
Y1 Yk Ym

w01 w11 wj1 wp1 wok W1k Wjk Wpk w0m W1m Wpm
Wjm

Lapisan
tersembunyi

1 Z1 Zj Zp

V01 V11 Vj1 Vn1 Voj V1j Vij Vnj V0p V1p Vip Vnp

Lapisan
masukan

1 X1 Xj Xn
Algoritma

1. Tentukan inisialisasi bobot awal


Random
Nguyen Widrow

2. Mekanisme komputasi jaringan

Terdapat dua macam jenis komputasi,


komputasi maju (forward pass)
komputasi balik (backward pass).

2.a. Komputasi Maju

Dalam komputasi maju, menghitung nilai aktivasi semua neuron (lapis


tersembunyi dan lapis keluaran); mulai dari neuron masukan menuju
neuron keluaran

1. Neuron pada lapis tersembunyi menghitung nilai total masukan :


menjumlahkan perkalian sinyal masukan dari lapisan masukan
dengan bobot antara lapisan masukan dan lapisan tersembunyi, dan
bias tertentu.
2. Neuron tersebut lalu menghitung nilai aktivasi dengan menerapkan
fungsi aktifasi pada nilai total masukan.
3. Sinyal keluaran dari lapisan tersembunyi menjadi masukan bagi
lapisan keluaran. Neuron pada lapisan keluaran menghitung nilai
total masukan neuron keluaran (lihat 1).
4. Neuron bersangkutan menghitung nilai aktivasi neuron keluaran
dengan menerapkan fungsi aktifasi pada nilai total masukan neuron
kelurana (lihat 2).
Step 1 : Selama kondisi stopping FALSE, lakukan Step 2-9
Step 2 : Untuk setiap pasangan pelatihan (p= 1,…,P), lakukan Step 3-8
(Proses Feedforward) :
Step 3 : Setiap unit input (Xi, i = 1,…,I) :
 menerima input xi
 mengirimkannya ke semua unit layer diatasnya (Hidden layer).
Step 4 : Setiap unit hidden (Zj, j = 1,…,J)
 menghitung semua sinyal input dengan bobotnya :
z_inj = voj +  xi vij
 menghitung nilai aktivasi setiap unit hidden
sebagai output unit hidden :
zj = f(z_inj)
 mengirim nilai aktivasi sebagai input untuk unit output.
Step 5 : Setiap unit output (Yk, k = 1,…,K)
 menghitung semua sinyal inputnya dengan bobotnya :
y_ink = wok +  zj wjk
menghitung nilai aktivasi setiap unit output sebagai
output jaringan.
yk = f(y_ink)

2.b. Perhitungan Komputasi Balik

Komputasi balik dimulai dari lapisan keluaran. Komputasi balik


bertujuan untuk menyesuaikan bobot dalam jaringan.

1. Setiap neuron di lapisan keluaran menghitung selisih target keluaran


dan sinyal keluaran.
2. Setiap neuron di lapisan keluaran menghitung dan menyesuaikan
bobot hubungan dari dirinya ke semua neuron di lapisan tersembunyi.
3. Propagasikan sinyal kesalahan ke lapisan tersembunyi sehingga
setiap neuron di lapisan tersembunyi menghitung dan menyesuaikan
bobot hubungan dari dirinya ke semua neuron di lapisan masukan
(lihat 2)

(Backpropagation of error) :
Step 6 : Setiap unit output (Yk, k = 1,…,m) :
 menerima pola target yang bersesuaian dengan pola input
 menghitung informasi error :
k = (tk - yk) f’(y_ink)
 menghitung besarnya koreksi bobot unit output :
wjk =  E(wjkj)/wjk =  k zj
 menghitung besarnya koreksi bias output :
w0k =  k
 mengirimkan k ke unit-unit yang ada pada layer di
bawahnya.

Step 7 : Setiap unit hidden (Zj, j = 1,…,p) :


* menghitung semua koreksi error :
_inj =  k wjk
 menghitung nilai aktivasi koreksi error :
j = _inj f’(z_inj)
 menghitung koreksi bobot unit hidden :
vij =  j xi
* menghitung koreksi error bias unit hidden :
v0j =  j

Step 8 : Setiap unit output (Yk, k = 1,…,m) :


meng-update bobot dan biasnya (j = 0,…,p) :
wjk(baru) = wjk(lama) + wjk
w0k(baru) = w0k(lama) + w0k

Setiap unit hidden (Zj, j = 1,…,p)


* meng-update bobot dan biasnya (i = 0,…,n) :
vij(baru) = vij(lama) + vij
v0j(baru) = v0j(lama) + v0j

Fungsi Kesalahan

Algoritme propagasi balik menggunakan prosedur gradient


descent atau menuruni lembah permukaan error, untuk meminimisasi
suatu fungsi kesalahan. Fungsi kesalahan yang umum dipakai ialah
fungsi error kuadratis:
1
E =
2
 (d
k
k - ok )2 (2.11)

Aturan Pembelajaran

Proses pembelajaran JNPB adalah sebagai berikut:


1. Inisialisasi bobot awal.
2. Untuk tiap pola pelatihan lakukan langkah 3 dan langkah 4.
3. Lakukan langkah komputasi maju:
 Setiap neuron di lapisan masukan menerima sinyal xi dan
meneruskannya ke semua neuron di lapisan tersembunyi.
 Setiap neuron di lapisan tersembunyi menjumlahkan sinyal
masukan yang dikalikan dengan bobot bersesuaian:
n
Z _ in j  v 0 j   xi vij
i 1
lalu menghitung sinyal keluaran dengan fungsi aktifasi:

Z j  f ( Z _ in j )
dan meneruskan sinyal ini pada semua neuron di lapisan keluaran.

 Setiap neuron di lapisan keluaran menjumlahkan sinyal


masukan yang dikalikan dengan bobot bersesuaian:
p
y _ in k  w0 k   z j w jk
j 1

lalu menghitung sinyal keluaran dengan fungsi aktifasi:


y j  f ( y _ ink )
4. Lakukan komputasi balik :
a. Komputasi di lapis keluaran:
 Setiap neuron di lapisan keluaran diberikan target masukan
tertentu.
 Hitung sinyal error k untuk setiap neuron k di lapisan ini:
 k  (t k  y k ) f ' ( y _ ink )
 Hitung modifikasi bobot untuk setiap hubungan antara neuron
bersangkutan dengan semua neuron di lapisan tersembunyi:
w jk   k z j
 Hitung modifikasi bias untuk setiap neuron di lapisan keluaran:
w0 k   k
b. Komputasi di lapis tersembunyi:
 Hitung sinyal error j untuk setiap neuron j di lapisan
tersembunyi:
m
d j  (   k w jk ) f ' ( z _ in j )
k 1
 Hitung modifikasi bobot untuk hubungan antara neuron
bersangkutan dengan semua neuron di lapisan masukan:
vij   j xi
 Hitung modifikasi bias untuk setiap neuron di lapisan
tersembunyi:
v 0 j   j i
 Ubah bobot dan bias
w jk (new)  w jk (old )  w jk
vij (new)  vij (old )  vij

Bias juga dirubah


Wok baru = wok lama + alfa.wok lama
Voj baru = voj lama + alfa.voj lama

5. Uji kriteria kesalahan, bila kesalahan lebih besar dari batas yang telah
ditetapkan, ulangi langkah 2 sampai 4; bila tidak, pelatihan selesai.

Faktor-faktor dalam Pembelajaran

Beberapa faktor yang mempengaruhi keberhasilan algoritme


propagasi balik, antara lain:

1. Inisialisasi bobot
Bobot awal menentukan apakah jaringan akan mencapai global
minima atau local minima kesalahan, dan seberapa cepat jaringan
akan konvergen. Inisialisasi acak merupakan cara yang paling sering
digunakan dalam inisialisasi bobot. Untuk mempercepat proses
pelatihan, suatu modifikasi dari inisialisasi acak diperkenalkan oleh
Nguyen dan Widrow. Inisialisasi Nguyen-Widrow didefinisikan
sebagai:
 Untuk bias dan bobot hubungan antara semua neuron di lapisan
tersembunyi dan semua neuron di lapisan keluaran, lakukan
inisialisasi acak dengan jangkauan -0,5 dan 0,5.
 Untuk bias bobot hubungan antara lapisan tersembunyi dan lapisan
masukan, lakukan sebagai berikut:
 Hitung  = 0.7 (P)1/N di mana  adalah faktor skala, P adalah
jumlah neuron lapis keluaran dan N adalah jumlah neuron lapis
masukan.
 Untuk setiap neuron j di lapis keluaran, lakukan sebagai berikut:
Inisialisasi secara acak bobot antara neuron bersangkutan
dengan semua neuron di lapis masukan i: wij = bilangan
acak antara -0,5 dan 0,5.
Hitung norma wj:
||w || =  w
j ij
i

Inisialisasi kembali wij:


 w ij
w ij =
||w j ||
(2.12)
Inisialisasi bias: j = bilangan acak antara - dan .
Sebagai pengganti inisialisasi acak, dalam tugas akhir ini akan
dipakai inisialisasi Nguyen-Widrow.

2. Laju pembelajaran
Merupakan parameter jaringan dalam mengendalikan proses
penyesuaian bobot. Nilai laju pembelajaran yang optimal bergantung
pada kasus yang dihadapi. Laju pembelajaran yang terlalu kecil
menyebabkan konvergensi jaringan menjadi lebih lambat, sedang laju
pembelajaran yang terlalu besar dapat menyebabkan ketidakstabilan
pada jaringan

3. Momentum
Momentum digunakan untuk mempercepat pelatihan jaringan.
Metode momentum melibatkan penyesuaian bobot ditambah dengan
faktor tertentu dari penyesuaian sebelumnya. Penyesuaian ini
dinyatakan sebagai berikut:

w jk (t )   k z j (t )  w jk (t  1) (2.13)
Notasi :
 X : nilai masukan , X = ( X1, ... Xi, ...Xn )
 v : bobot antara bias atau input dengan hidden
 Z : nilai aktivasi hidden, Z = ( Z1, ... Xj, ...Xp )
Zj = f (z_in)
n
z_inj = v0j + xi vij
i=1

 w : bobot antara bias atau hidden dengan output


 Y : nilai output aktual, Y = ( Y1, ... Yk, ...Ym )

Yk = f (y_in)
p
y_ink = w0k + xi vij
k=1

Update bobot : tanpa momentum

wjk(t+1) = wjk(t) + wjk

wjk = -  E(wjk)
 wjk

vij(t+1) = vij(t) + vij

vij = -  E(vij)
 vij

Update bobot : dengan momentum

wjk(t+1) = wjk(t) + wjk +  wjk(t-1)

wjk = -  E(wjk)
 wjk

vij(t+1) = vij(t) + vij +  vij(t-1)

vij = -  E(vij)
 vij

Fungsi Error : Kuadratik

E = 0.5 k (tk - Yk)2


Untuk update bobot antara hidden dan output ;
E = E  Yk  y_ink
wjk Yk  y_ink wjk

E = - (tk - Yk)
Yk

Yk = f(y_ink)

Yk = f ‘ (y_ink)
 y_ink

y_ink = wok +  zj wjk

 y_ink = zj
 wjk
E(wjk) = - (tk - Yk) f ‘ (y_ink) zj
wjk
didefinisikan :  k = (tk - yk) (f’(y_in))
E(wjk) = -  k Zj
 wjk
W = -  (-  k Zj )=   k Zj

Untuk update bobot antara input dan hidden ;


E =E  Yk  y_ink zj  z_inj
vij Yk  y_ink zj  z_inj vij

E = - (tk - Yk)
Yk

Yk = f(y_ink)

Yk = f ‘ (y_ink)
 y_ink

y_ink = wok +  zj wjk

 y_ink = k wjk
 zj

 zj = f ‘ (z_inj)
 z_inj
n
z_inj = v0j + xi vij
i=1

 z_inj = xi
 vij

E = - k (tk - Yk) f ‘(y_ink) wjk f ‘(z_inj) Xi


vij

didefinisikan :  k = k(tk - yk) (f’(y_in))


E = - k  k wjk f ‘(z_inj) Xi
vij

didefinisikan :  j = k  k wjk f ‘(z_inj)


E = -  j Xj
 vij
V = -  (-  j Xi )=   j Xi

Fungsi Error : Cross Entropi


E = k (-tk). ln (Yk) - (1 - tk ). ln (1 - Yk)
Untuk update bobot antara hidden dan output ;
E =E  Yk y_ink
wjk Yk  y_ink wjk

E = k -tk + 1 - tk = - k (tk - Yk)


Yk Yk 1 - Yk Yk (1 - Yk)

Yk = f(y_ink)

Yk = f ‘ (y_ink) = Yk (1 - Yk)


 y_ink

y_ink = wok +  zj wjk

 y_ink = zj
 wjk

E = - k (tk - Yk) Yk (1 - Yk) zj


wjk Yk (1 - Yk)

= - k (tk - Yk) zj

didefinisikan :  k = k(tk - yk)


E = -  k Zj
 wjk
W = -  (-  k Zj )=   k Zj

Untuk update bobot antara input dan hidden ;


E =E  Yk  y_ink zj  z_inj
vij Yk  y_ink zj  z_inj vij

E = k -tk + 1 - tk = - k (tk - Yk)


Yk Yk 1 - Yk Yk (1 - Yk)

Yk = f(y_ink)

Yk = f ‘ (y_ink) = Yk (1 - Yk)


 y_ink

y_ink = wok +  zj wjk

 y_ink = wjk
 zj

 zj = f ‘ (z_inj)
 z_inj

n
z_inj = v0j + xi vij
i=1

 z_inj = xi
 vij
E = - k (tk - Yk) wjk f ‘(z_inj) Xi
vij
didefinisikan :  k = k(tk - yk)
E = - k  k wjk f ‘(z_inj) Xi
vij

didefinisikan :  j = k  k wjk f ‘(z_inj)


E = -  j Xj
 vij

V = -  (-  j Xi )=   j Xi

Fungsi Error : Metrik

E = k ln (1 - (tk - Yk)2)
Untuk update bobot antara hidden dan output ;
E =E  Yk y_ink
wjk Yk  y_ink wjk

E = - 2k (tk - Yk)


Yk (1 - (tk - Yk)2)

Yk = f(y_ink)

Yk = f ‘ (y_ink) = Yk (1 - Yk)


 y_ink

y_ink = wok +  zj wjk


 y_ink = zj
 wjk

E = - 2k (tk - Yk) Yk (1 - Yk) zj


wjk (1 - (tk - Yk)2)

didefinisikan :  k = - 2k (tk - Yk) Yk (1 - Yk)


(1 - (tk - Yk)2)

E = -  k Zj
 wjk
W = -  (-  k Zj )=   k Zj

Untuk update bobot antara input dan hidden ;


E =E  Yk  y_ink zj  z_inj
vij Yk  y_ink zj  z_inj vij

E = - 2k (tk - Yk)


Yk (1 - (tk - Yk)2)

Yk = f(y_ink)

Yk = f ‘ (y_ink) = Yk (1 - Yk)


 y_ink
y_ink = wok +  zj wjk

 y_ink = wjk
 zj
 zj = f’(z_in)
 z_in
 z_in = Xi
 vij

z_in = - 2k (tk - Yk) f ‘ (y_ink) wjk f’(z_in) Xi


vij (1 - (tk - Yk)2)

didefinisikan : j = k wjk f’(z_in)

E = -  j Xi
 vij
V = -  (-  j Xi )=   j Xi

Anda mungkin juga menyukai