Anda di halaman 1dari 6

MODUL 8

NEURAL NETWORK (BACK PROPAGATION)

Backpropagation dibentuk dengan membuat aturan pelatihan Widrow Hoff dengan


menambahkan layar tersembunyi. Kata backpropagation merujuk pada cara bagaimana
gradien perubahan bobot dihitung.

Langkah pertama yang harus dilakukan untuk memprogram backpropagation dengan


MATLAB adalah membuat inisialisasi jaringan. Perintah untuk membentuk jaringan
adalah newff. Yang formatnya adalah sebagai berikut:
net = newff(PR,[S1 S2 ... SN],{TF1 TF2 … TFN},BTF,BLF,PF)
dengan
net = jaringan backpropagation yang terdiri dari n layer
PR = matriks ordo R x 2 yang berisi nilai minimum dan maksimum R buah elemen
masukannya.
Si (i=1,2,...,n) = Fungsi aktivasi yang dipakai pada layar ke-i (i=1,2,...,n). Default =
tansig (sigmoid bipolar)
BTF = Fungsi pelatihan jaringan. Defaultnya = traingdx
BLF = fungsi perubahan bobot/bias. Default=learngdm
PF = fungsi perhitungan error (Mean Square Error MSE)
Beberapa fungsi aktivasi yang dipakai dalam pelatihan backpropagation adalah
2
 tansig (sigmoid bipolar). f ( net ) = - 1 . Fungsi ini adalah default yang
1 + e - net
dipakai. Fungsi sigmoid bipolar memliki range [-1,1].
1
 logsig (sigmoid biner) f ( net ) = . Fungsi sigmoid biner memiliki bentuk
1 + e - net
serupa dengan sigmoid bipolar hanya range nya adalah [0,1]
 purelin (fungsi identitas) f(net)=net

Inisialisasi Backpropagation
Inisialisasi backpropagation untuk 2 masukan, sebuah layar tersembunyi terdiri dari 3
unit dan sebuah keluaran (sering disebut 2-3-1) dengan data yang dipakai pelatihan
sebagai berikut
Tabel 1
x1 (variabel 1) x2 (variabel 2) t (target)
-1 0 -1
-1 5 -1
2 0 1
2 5 1
Fungsi aktivasi dari unit masukan ke layar tersembunyi adalah sigmoid bipolar dan dari
layar tersembunyi ke keluaran adalah identitas.

p = [-1 -1 2 2 ; 0 5 0 5]
t = [-1 -1 1 1]
net=newff([-1 2; 0 5], [3,1],{’tansig’,’purelin’});

Inisialisasi Bobot
Setiap kali membentuk jaringan backpropagation dapat diberikan inisialisasi bobot
tertentu dengan memberikan nilai pada net.IW, net.LW, dan net.b

net.IW{j,i} digunakan sebagai variabel untuk menyimpan bobot dari unit masukan layar
ke i ke unit tersembunyi (atau unit keluaran)layar j. Karena dalam Backpropagation unit
masukan hanya terhubung dengan layar tersembunyi paling bawah, maka bobotnya
disimpan dalam net.IW{1,1}.

Sebaliknya net.LW{k,j} dipakai untuk menyimpan bobot dari unit di layar tersembunyi
ke-j ke unit di layar tersembunyi ke-k. Sebagai contoh, net.LW{2,1} adalah menyimpan
bobot dari layar tersembunyi paling bawah (layar tersembunyi ke 1) ke layar tersembunyi
di atasnya (layar tersembunyi ke 2)

Contoh pembuatan jaringan backpropagation 2-4-3-1 (semua masukan adalah bilangan


antara -1 dan 2) dengan semua fungsi aktivasi sigmoid bipolar. Beri bobot dan bias
seperti pada Tabel 2 – 4
Tabel 2
Dari Unit Masukan
Layar X1 X2 Bias
Tersembunyi 1
Z1 -1.3 0.7 0.3
Z2 0.5 0 -0.1
Z3 1.3 -0.4 -0.9
Z4 -0.1 1.2 0.5
Tabel 3
Dari Layar Tersembunyi 1
Layar z1 z2 z3 z4 Bias
Tersembunyi 2
V1 0.4 0.3 -1 -0.3 0.5
V2 0.6 0 -0.6 -1.2 -1.3
V3 0.4 -0.3 0.2 0.9 -0.3

Tabel 3
Dari layar Tersembunyi 1
Keluaran z1 z2 z3 Bias
Y1 0.4 0.9 -0.1 -1
Arsitektur pembentukan jaringan adalah

net = newff ([-1 2; -1 2], [4,3,1]);


pada perintah ini bobot disusun secara acak. Untuk mengatur bobot seperti pada Tabel 2–
4 dilakukan:
net.IW{1,1}=[-1.3 0.7; 0.5 0; 1.3 -0.4; -0.1 1.2];
net.b{1}=[0.3; - 0.1; - 0.9; 0.5];
net.LW{2,1}=[0.4 0.3 -1 -0.3;0.6 0 -0.6 -1.2;0.4 -0.3 0.2
0.9];
net.b{2}=[0.5;-1.3;-0.3];
net.LW{3,2}=[0.4 0.9 -0.1];
net.b{3}=[-1];

Hasil bobot tersebut dapat dicek masing-masing dengan memanggil


>>net.IW{1,1}
>>net.b{1}
>>net.LW{2,1}
>>net.b{2}
>>net.LW{3,2}
>>net.b{3}

Simulasi Jaringan
Perintah sim dapat digunakan untuk menghitung output dari jaringan. Misalkan pada
contoh di atas kita masukan input x1=0.5 dan x2=1.3 Pola masukan dengan
menggunakan contoh di atas diperoleh:

>>p=[0.5;1.3];
>>y=sim(net,p);

untuk mengetauhi besarnya error parameter masukan harus ditambah dengan target yang
ingin dicapai. Misalkan target nya t = 1, maka diperoleh keluaran dan error:

>>t=[1];
>>[y,Pf,Af,e,perf]=sim(net,p,[],[],t)

Pelatihan Backpropagation
Untuk menjalankan pelatihan maka perintah train dapat digunakan. Pelatihan ini untuk
meminimumkna kuadrat kesalahan rata-rata (MSE). Metode yang paling sederhana
adalah gradient descent. Bobot dan bias diubah pada arah dimana unjuk kerja fungsi
menurun paling cepat yaitu dalam arah negatif gradiennya.

Wk+1 = Wk – αk*gk

Contoh misalkan diketahui pasangan vektor seperti pada Tabel 1 Buat jaringan
backprpagation dan latihlah dengan metode penurunan tercepat. Gunakan fungsi aktivasi
sigmoid bipolar pada layar tersembunyi dan fungsi identitas pada layar keluarannya.

p = [-1 -1 2 2 ; 0 5 0 5]
t = [-1 -1 1 1]
net=newff(minmax(p), [3,1],{’tansig’,’purelin’},’traingd’);
*cat: lihat help minmax
Dengan menggunakan perintah sim besarnya error mula-mula dapat ditentukan

>>[y,Pf,Af,e,perf]=sim(net,p,[],[],t)

Berikutnya untuk melatihnya digunakan perintah train

>>net=train(net,p,t)
Training dihentikan pada epoch ke 100 (default) meskipun unjuk kerja yang diinginkan
(mse=0) belum tercapai. Pca epoch ke 100 ini mse adalah 0,0065. Lihat juga grafiknya.
Bobot, bias dan hasil pelatihannya dapat dilihat dengan perintah:

>>net.IW{1,1}
>>net.b{1}
>>net.LW{2,1}
>>net.b{2}
>>[y,Pf,Af,e,perf]=sim(net,p,[],[],t)

lihat hasilnya apakah mendekati target?


Dari contoh di atas hamper tidak mungkin kita mendapatkan harga mse=0 (apalagi jika
data pelatihannya banyak). Untuk itu orang cukup puas jika mse-nya cukup kecil
(misalkan 0.0001). Jika kita perbesar laju pemahaman menjadi 0.1 dan merubah mse
menjadi 0.0001, dilakukan perintah

p = [-1 -1 2 2 ; 0 5 0 5]
t = [-1 -1 1 1]
net=newff(minmax(p), [3,1],{’tansig’,’purelin’},’traingd’);
net.trainParam.lr=0.1;
net.trainParam.goal=0.0001;
net=train(net,p,t)

Coba jika laju pemahamannya 0.9


Apakah iterasi konvergen? Apakah performance goal nya ketemu?

Contoh aplikasi
Diketahui data bulanan penjualan suatu produk makanan kaleng selama 2 tahun terakhir
seperti pada tabel 4. Buatlah prediksi penjualan makanan untuk bulan depan.
Dengan toleransi sampai 10-5.
Tabel 4.
Tahun Penjualan Tiap Bulan
1 2 3 4 5 6 7 8 9 10 11 12
2003 2045 1696 1341 1181 1613 2242 6161 10437 9590 5291 3081 2147
2004 1767 1466 1090 1070 1355 5324 7167 13780 10629 7725 3284 2400
Jika ingin menggunakan fungsi aktivasi sigmoid biner, data harus ditransformasikan
terlebih dahulu karena range keluaran fungsi sigmoid adalah [0,1]. Data bisa
ditransformasikan ke interval yang lebih kecil misal pada interval [0.1, 0.9]. Ini
mengingat fungsi sigmoid merupakan fungsi asimtotik yang nilainya tidak pernah
mencapai 0 ataupun 1.

Jika a adalah data minimum dan b adalah data maksimum, transformasi linier yang
digunakan untuk mentransformasikan data ke interval [0.1, 0.9] adalah :
0.8( x - a)
x' = + 0.1
b-a
Sehingga Tabel 4 ditransformasikan menjadi
Tabel 5
Tahun Penjualan Tiap Bulan
1 2 3 4 5 6 7 8 9 10 11 12
2003 0.1614 0.1394 0.1171 0.1070 0.1342 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678
2004 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838 0.9000 0.7017 0.5189 0.2394 0.1837

Pola yang dipakai merupakan data selama 12 bulan dan target adalah data penjualan pada
bulan ke 13. Jadi ada 12 pola data dalam sebuah epochnya seperti pada Tabel 6. Jumlah
layar tersembunyi bisa dicoba-coba mulai dengan layar tersembunyi dengan 3 unit.
Tabel 6 (hasil dari rumus 1
Pola Data Masukan Target
Pola 1 0.1614 0.1394 0.1171 0.1070 0.1342 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439
Pola 2 0.1394 0.1171 0.1070 0.1342 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249
Pola 3 0.1171 0.1070 0.1342 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013
Pola 4 0.1070 0.1342 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000
Pola 5 0.1342 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179
Pola 6 0.1738 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678
Pola 7 0.4204 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838
Pola 8 0.6896 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838 0.9000
Pola 9 0.6363 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838 0.9000 0.7017
Pola 10 0.3657 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838 0.9000 0.7017 0.5189
Pola 11 0.2266 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838 0.9000 0.7017 0.5189 0.2394
Pola 12 0.1678 0.1439 0.1249 0.1013 0.1000 0.1179 0.3678 0.4838 0.9000 0.7017 0.5189 0.2394 0.1837
(Buat saja di Excel biar gampang)
Masukan harga p dengan mengkopi paste data masukan pelatihan
p = [ %copy paste data tabel 6

]
dan t= [ %copy paste data tabel 6

]’
net=newff(minmax(p), [2,1],{’logsig’,’logsig’},’traingdx’);
net.trainParam.goal=1e-5;
net.trainParam.epochs=500;
net.trainParam.show=500;
net=train(net,p,t)%didapatkan bobot terbaik
1
2
3
4
5
6

Anda mungkin juga menyukai