com
Backpropagation
Arsitektur Jaringan
Backpropagation merupakan algoritma pembelajaran yang terawasi dan biasanya digunakan oleh
perceptron dengan banyak lapisan untuk mengubah bobot-bobot yang terhubung dengan neuron
yang ada pada lapisan tersembunyi. Algoritma backpropagation menggunakan error output untuk
mengubah nilai bobotnya dalam arah mundur. Untuk mendapatkan error ini, tahap perambatan maju
(forward propagation) harus dikerjakan terlebih dahulu. Backpropagation dibentuk dengan membuat
generalisasi aturan pelatihan dalam model jaringan dengan cara menambahkan layar tersembunyi.
x1 x2 t
-1 0 -1
-1 5 -1
2 0 1
2 5 1
Fungsi aktivasi dari unitke layar tersembungi adalah sigmoid bipolar dan dari layar tersembunyi ke
keluaran adalah fungsi identitas. Untuk menyeledsaikannya maka dapat menggunakan perintah
Matlab sebagai berikut:
p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];
n = newff([-1 2;0 5], [3, 1], {'tansig','purelin'})
Sebenarnya perintah newff dapat memiliki format yang lebih elegan, yaitu:
n = newff(PR,[S1 S2 ... SN], {TF1 TF2 ... TFN}, BTF, BLF, PF)
n : jaringan backpropagation.
PR : matriks ordo R x 2 yang berisi nilai minimum dan maksimum R buah elemen masukannya.
S1 ... SN : jumlah unit pada layar ke-i sampai n.
TF1 ... TFN : fungsi aktivasi yang dipakai pada layar ke-i hingga ke-n. Dengan nilai default-nya
ialah tansig (sigmoid bipolar).
BTF : fungsi pelatihan jaringan. Dengan nilai default-nya adalah traindx.
BLF : fungsi perubahan bobot/bias, dengan nilai default adalah learngdm.
PF : fungsi perhitungan error. Dengan isian default = MSE.
1 Follow me @randiekayonida
www.randilabs.com
Ada beberapa fungsi aktivasi yang disediakan Matlab utnuk mendukung pelatihan backpropagation
adalah:
2
1. tansig (sigmoid bipolar). 𝑓(𝑛) = − 1. Ini merupakan fungsi default yang dipakai dan
1+𝑒 −𝑛
memiliki range [-1, 1].
1
2. logisg (sigmoid biner). 𝑓(𝑛) = 1+𝑒 −𝑛
. Fungsi ini memiliki bentuk yang seruoa dengan sigmoid
bipolar, namun memiliki range [0, 1].
3. purelin (fungsi identitas). 𝑓(𝑛) = 𝑛.
Ketika membuat sebuah jaringan backpropagation secara otomatis Matlab akan memberi nilai bobot
dan bias awal berupa bilangan acak. Bobot dan bias ini bersifat dinamis dan akan berubah setiap kali
membentuk jaringan. Namun pengembang juga dapat menggunakan bobot tertentu dengan
memberikan nilai pada n.IW (untuk menyimpan bobot), b.LW (untuk menyimpan bobot dari unit di
layar tersembunyi ke-j ke unit di layar tersembunyi ke-k) dan n.b (untuk menyimpan bobot).
Unit Input
Layar Tersembunyi 1 x1 x2 Bias
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
Layar Tersembunyi 1
Layar Tersembunyi 2 x1 x2 x3 x4 Bias
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
Layar Tersembunyi 2
Keluaran z1 z2 z3 Bias
y1 0.4 0.9 -0.1 -1
x1 x2 t
-1 0 -1
-1 5 -1
2 0 1
2 5 1
2 Follow me @randiekayonida
www.randilabs.com
Perintah diatas membentuk jaringan 2 – 4 – 3 – 1 dimana tanpa ditulis fungsi aktivasi yang secara
default diinisialisasi dengan sigmoid bipolar (nilai default). Untuk mengetahui bobot dan bias dapat
menampilkannya dengan sintaks n.IW {1, 1}, n.LW {2, 1}, n.LW {3, 1}, n.b {1}, n.b {2}, n.b {3}.
Untuk merubah bobot, variabel n.IW, n.LW dan bias n.b dapat menggunakan contoh kode seperti
berikut:
Simulasi Jaringan
Simulasi jaringan backpropagation juga menggunakan perintah sim, sama seperti pada perceptron.
Contoh, ketika hendak menghitung keluaran jaringan pada contoh bab sebelumnya yang diberikan
masukan x1 = 0.5 dan x2 = 13 maka dapat dituliskan sebagai berikut:
p = [0.5 ; 1.3]
y = sim (n, p)
Untuk mengetahui error dan unjuk kerjanya parameter masukan harus ditambah dengan target yang
ingin dicapai. Parameter keluaran ditambah dengan variabel untuk menyimpan error (e) dan kinerja
(perf). Misalkan target (t) = 1, maka kodenya:
t = [1];
[y, Pf, Af, e, perf] = sim (n, p, [], [], t)
Pelatihan Jaringan
Dalam Matlab pelatihan backpropagation memiliki beberapa cara. Salah satunya ialah pelatihan
backpropagation menggunakan metode pencarian titik minimum untuk mencari bobot dengan error
minimum. Dalam cara ini dikenal dua mode, yaitu inremental dan batch. Mode incremental mengubah
bobot setiap kali pola masukan diberikan kepada jaringan sedangkan mode batchbobot diubah setelah
semua pola masukan diberikan ke jaringan. Error yang terjadi dalam setiap pola input dijumlahkan
untuk menghasilkan bobot baru.
Untuk melatih jaringan menggunakan perintah train dengan format sama dengan pelatihan pada
perceptron. Pelatihan dilakukan untuk meminimalisasi kuadrat dan kesalahan rata-rata atau yang
disebut dengan MSE (Mean Square Error).
Contoh, diketahui pasangan vektor masukan dan target sepertj pada tabel dibawah ini:
x1 x2 t
-1 0 -1
-1 5 -1
2 0 1
2 5 1
3 Follow me @randiekayonida
www.randilabs.com
p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];
n = newff (minmax (p), [3,1], {'tansig','purelin'}, 'traingd')
Fungsi minmax (p) digunakan supaya nilai minimum dan maksimum vektor masukan tidak perlu
dituliskan satu persatu. Sebelum melakukan pelatihan disarankan untuk melihat bobot dan bias yang
dipakai sebagai inisialisasi.
n = train (n, p, t)
Traning dihentikan pada epoch ke 1000 meskipun belum mencapai nilai MSE = 0.
4 Follow me @randiekayonida
www.randilabs.com
Bobot dan bias hasil pelatihan juga dapat ditampilkan dengan fungsi n.IW, n.LW dan n.b.
Ada beberapa parameter pelatihan yang dapat digunakan sebelum melakuakn pelatihan berikutnya.
Kita akan coba menerapkan parameter diatas pada contoh sebelumnya, sehingga diperoleh kode
sebagai berikut:
p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];
n = newff (minmax (p), [3,1], {'tansig','purelin'}, 'traingd');
n.trainParam.lr = 0.1;
n.trainParam.goal = 0.0001;
n = train (n, p, t)
5 Follow me @randiekayonida
www.randilabs.com
Dapat mencoba parameter lain atau dengan nilai lain, tapi terlebih dahulu gunakan perintah init(n)b
untuk menginisialisasi semua bobot dan biais dengan bilangan acak baru.
Ada model pelatihan lain yang bisa dipilih (penjelasan dapat merujuk ke sumber di buku atau Internet),
contoh:
p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];
n = newff (minmax (p), [3,1], {'tansig','purelin'}, 'traingdm');
Komentar: Sedikit lebih cepat dibandingkan metode pelatihan sebelumnya, namun masih dalam
kategori lambat.
p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];
n = newff (minmax (p), [3,1], {'tansig','purelin'}, 'traingda');
p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];
n = newff (minmax (p), [3,1], {'tansig','purelin'}, 'traingdx');
6 Follow me @randiekayonida
www.randilabs.com
p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];
n = newff (minmax (p), [3,1], {'tansig','purelin'}, 'trainrp');
n.trainParam.goal = 1e-5;
Perlu di ketahui, setiap algoritma atau metode pelatihan akan menghasilkan kecepatan berbeda
dengan pola data yang berbeda. Jadi dapat menggunakan yang tercepat diantara yang lainnya.
Sumber
Berbagai sumber di Internet.
Buku JST dan Pemrograman oleh Drs. Jong Jek Siang, M.Sc.
Buku AI dan Teknik Aplikasinya oleh Sri Kusumadewi
7 Follow me @randiekayonida