Kamis, 26 November 2009

Contoh Algoritma Backpropagation

Jika kita mempunyai pola matriks X  :


Dan bobot awal dan bias awal yang dipilih secara acak adalah :
Nilai bobot dari layer input ke hidden layer
Vij=  0.1207690864390194, 0.18121937900400642, 0.5373979583380004, 0.6958370793063979, 0.7315162285625711, 0.19241284706221817, 0.618297402969798, 0.5254289914600393


Nilai bobot dari hidden layer ke output layer
Wk = 0.3338186565232477, 0.04331653473021879, 0.27610812619466973, 0.5946077987374927


bias 1
b1 = 0.5500964441249149, 0.28941827642665174, 0.4615712532796826, 0.8149000001760573


bias 2
b2= 0.6109600864128633


Topologi jaringan yang kita gunakan adalah menggunakan jaringan MLP Backpropagation dengan 1 layer input (2 neuron masukan), 1 hiden layer (4 neurron) dan 1 output layer (1 neuron). Fungsi aktivasi yang kita gunakan pada hidden layer adalah fungsi sigmoid dan pada output layer, fungsi aktivasi yang kita gunakan adalah fungsi linear.

Gb1. Jaringan MLP Backpropagation

Karena pola data adalah matriks berukuran 6x4, maka kita bagi 3 vector pertama sebagai learning set, kemudian 3 vector sisanya kita gunakan sebagai test set. yaitu :


Pada data test set dan learning set, kolom ketiga dari kedua data kita set sebagai target keluaran jaringan. Pada proses inisialisasi parameter jaringan, kita beri nilai maximum epoch = 1000, target error = 0.00001, MSE = 0 dan learning rate = 0,4.

Output Program :

******************Epoch ke-0 **********************
MSE = 4.758556221656486
******************Epoch ke-1 **********************
MSE = 1.3080030484094292
******************Epoch ke-2 **********************
MSE = 1.085172838222893
******************Epoch ke-3 **********************
MSE = 1.0549847659147695
******************Epoch ke-4 **********************
MSE = 1.046603613669597
******************Epoch ke-5 **********************
MSE = 1.0338336469898246

Pada 5 epoch awal, MSE mempunyai nilai yang tinggi, kemudian pada epoch setelahnya, MSE mengalami penurunan.

Gb2. Grafik MSE ddi 200 epoch pembelajaran

Jaringan akan terus menerus melakukan iterasi hingga epoch = maximum epoch atau MSE = target error. Pada kasus ini, iterasi akan berhenti pada epoch = 1000 dan jaringan akan memberhentikan proses dengan hasil output :


******************Epoch ke-999 **********************
MSE = 0.023784991619496897
******************Epoch ke-1000 **********************
MSE = 0.0237919057577512

Dari sini bisa kita lihat bahwa nilai MSE di epoch ke-999 lebih kecil daripada epoch ke-1000, bisa diartikan bahwa jaringan tidak convergent pada saat maximum epoch tercapai, jika diteruskan ke epoch selanjutnya, kemungkinan MSE bergerak menjauhi target error akan semakin besar, oleh karena itu kita harus mencari titik epoch dimana MSE berada pada nilai paling minimum. Dan nilai MSE paling minimum berada pada epoch ke-140 :

******************Epoch ke-139 **********************
MSE = 0.018681322162804544
******************Epoch ke-140 **********************
MSE = 0.018681208923667793
******************Epoch ke-141 **********************
MSE = 0.01868149867843059

Nilai bobot dan bias di epoch ke-140 adalah :

***Final weights and bias value at mininum MSE on epoch : 140****

V1[] = -0.7011998774720427
-0.3689790140738511
0.8046512685396908
1.7505551804252213

V2[] = 1.3100784790048718
0.7668952387082638
0.4267333271027457
-1.2177481267024133

b1[] = 0.3066897306561537
0.31370227499483994
0.5372604876143215
0.12644098313242658

W[] = -1.4092041090128564
0.821117168346266
0.26580529638614636
2.241329804694944

b2 = -0.33554834261466654

Kemudian, kita implementasikan bobot dan bias tersebut untuk test set dengan menggunakan perhitungan maju (feedforward) saja di jaringan yang sama.

***************TEST SET******************
minimum MSE = 0.018681208923667793
The weights and bias which used at this test function are from the minimum MSE at epoch :140
out put = -1.0586077904900728
out put = 0.1293472169464956
out put = -0.9036426039696852
out put = 0.28431240346688297

Jika kita merubah fungsi aktivasi pada output layer, dari fungsi linier menjadi fungsi Hardlimit atau sigmoid, menjadi :

***************TEST SET******************
minimum MSE = 0.018681208923667793
The weight and bias which used at this test function are from the minimum MSE at epoch :140
out put = -1.0586077904900728 hardlimit(y)= 0.0 sigmoid= 0.25757559762379123
out put = 0.1293472169464956 hardlimit(y)= 1.0 sigmoid= 0.5322917947514457
out put = -0.9036426039696852 hardlimit(y)= 0.0 sigmoid= 0.2883025167191984
out put = 0.28431240346688297 hardlimit(y)= 1.0 sigmoid= 0.5706031484804999

Dengan fungsi Hardlimit pada output layer, hasil output program adalah : 0 1 0 1, yang berarti jaringan sudah mengenali pola dari learning set dengan baik dan mampu menghasilkan output yang sesuai pada test set.

2 komentar:

  1. kalau outputnya(y) lebih dari 1, gambar diagram backpropagation jadi seperti apa y?

    BalasHapus
  2. ada contoh code programmnya??
    nice post, Thx

    BalasHapus