Anda di halaman 1dari 7

www.randilabs.

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.

Backpropagation dalam Matlab


Mengenal Pembentukan Jaringan
Inisialisasi jaringan adalah hal pertama yang harus dilakukan untuk menghitung backpropagation
dengan Matlab. Perintah yang dipakai untuk membentuk jaringan adalah newff. Contohnya ketika
hendak melakukan inisialisasi backpropagation untuk melatih jaringan yang terdiri dari dua buah
input, satu buah layar tersembunyi yang terdiri dari tiga unit dan sebuah keluaran, data yang
digunakan untuk pelatihan ada pada tabel berikut ini:

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).

Sebagai contoh ketika hendak membuat jaringan backpropagation 2 – 4 – 3 – 1 dengan semua


masukan adalah bilangan antara -1 dan 2 dan fungsi aktivasi sigmoid bipolar. Tabel-tabel dibawah ini
merupakan bobot dan bias yang digunakan:

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

Arsitektur jaringan yang diinginkan ialah:

x1 x2 t
-1 0 -1
-1 5 -1
2 0 1
2 5 1

Sintaks pembentukan jaringan dalam Matlab:

n = newff ([-1 2; -1 2], [4, 3, 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:

n.IW {1, 1} = [-1.3 0.7; 0.5 0; 1.3 -0.4; -0.1 1.2];


n.b {1} = [0.3 ; -0.1 ; -0.9 ; 0.5];
n.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];
n.b {2} = [0.5 ; -1.3 ; -0.3];
n.LW {3, 2} = [0.4 0.9 -0.1];
n.b {3} = [-1];

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

Buatlah jaringan backpropagation 2 – 3 – 1 dan lakukan pelatihan dengan metode penurunan


tercepat. Gunakan fungsi aktivasi sigmoid bipolar pada layar tersembunyi dan fugsi identitas pada
layar keluaran. Maka kode yang dituliskan adalah 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')

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.

Kemudian dengan perintah sim dapat diketahui besarnya error mula-mula.

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

Berikutnya melakukan pelatihan jaringan dengan perintah train:

n = train (n, p, t)

dan akan menghasilkan:

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.

 n.trainParam.show: menampilkan frekuensi perubahan MSE, secara default ditampulkan


setiap 25 epoch.
 n.trainParam.epochs: menentukan jumlah epoch pelatihan, nilai default pada Matlab 2012
adalah 1000.
 n.trainParam.goal: untuk menentukan batas MSE agar iterasi dihentikan. Iterasi akan
dihentikan ketika MSE < batas yang ditentukan dalam n.trainParam.goal atau jumpah epoch
mencapai batas yang ditentukan dalam n.trainParam.epochs.
 n.trainParam.lr: menentukan laju learning rate. Memiliki nilai default 0.01, dan semakin
besar maka semakin cepat proses pelatihan tapi jika terlalu besar algoritma menjadi tidak
stabil.
 n.trainParam.time: dipakai untuk membatasi lama pelatihan, dalam satuan detik.’

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

Dan hasil lebih terkendali:

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:

Metode Penurunan Gradien dengan Momentum (traingdm)


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.

Variabel Laju Pemahaman (traindga, traingdx)


Contoh:

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');

Komentar: Mencapai MSE lebih baik dari pada metode-metode sebelumnya.

6 Follow me @randiekayonida
www.randilabs.com

Resilient Backpropagation (trainrp)


Contoh:

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;

Algoritma Gradien Conjugate – Metode Fletcher Reeves (traincgf)


Algoritma Gradien Conjugate – Polak Riebiere (traincgp)
Algoritma Gradien Conjugate – Powel Beale (traincgb)

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

Anda mungkin juga menyukai