View
603
Download
23
Category
Preview:
Citation preview
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 1
MODUL 3
MULTI LAYER PERCEPTRON (MLP) DENGAN ALGORITMA PELATIHAN
BACKPROPAGATION
A. Tujuan
1. Menjelaskan perintah dalam Matlab untuk membangun MLP
2. Membangun jaringan syaraf tiruan MLP dengan algoritma pembelajaran
Backpropagasi untuk menyelesaikan suatu kasus
B. Pendahuluan
Untuk membangun multi layer perceptron feedforward dengan algoritam
trainningnya backpropagation dalam Matlab 6.1 telah disediakan fungsi-fungsi yang
diperlukan. Fungsi tersebut adalah newff.
net = newff(PR,[S1 S2 S3............SN1],{TF1 TF2 ........TFN1},BTF,BLF,PF)
Dimana :
PR = matriks berukuran Rx2 yang berisi nilai minimum dan maksimum, dengan R
jumlah variable input.
Si = jumlah neuron/unit pada lapisan ke-i, dengan i = 1, 2,3 ....N1;
TFi= funsgi aktivasi yang digunakan pada lapisan ke-i, dengan i =1,2,3.....N1.
(defaultnya : tansig).
BTF = fungsi pelatihan jaringan (defaultnya : trainlm)
BLF = fungsi pelatihan untuk bobot(defaultnya : learngdm)
PF = fungsi kinerja (defaultnya : mse)
Fungsi aktivasi yang digunakan adalah fungsi yang dapat dideferensiasikan (diturunkan),
seperti tansig, logsig atau purelin. Fungsi pelatihan dapat digunakan fungsi-fungsi
pelatihan untuk backpropagation, seperti trainlm, trainbfg, traingd. Untuk fungsi
kinerja, bisa digunakan fungsi kinerja yang dapat dideferensiasikan seperti mse atau
msereg.
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 2
Berdasarkan fungsi newff, kita juga dapat memperoleh beberapa informasi yang
diantaranya adalah :
Bobot input layer :
Bobot = net.IW{1,1}
Bobot bias input layer:
bobotBias = net.b{1,1}
Bobot hidden layer :
bobotHidden = net.IW{2,1}
Bobot bias hiddenlayer :
biasHidden = net.b{2,1}
Algoritma Pelatihan
Sepertihalnya pada perceptron, jaringan syaraf tiruan MLP ini juga perlu
dilakukan pelatihan untuk melakukan pengaturan bobot, sehingga pada akhirnya
diperoleh bobot yang terbaik. Selama palatihan, bobot diatur secara iterative dengan
meminimalkan fungsi kinerja. Sebagaian besar algoritma pelatihan jaringan feedforward
menggunakan gradient dari fungsi kinerja untuk menentukan bagaimana mengatur
bobot dalam rangka meminimalkan kinerja. Gradien ini ditentukan dengan
menggunakan suatu teknik yang disebut dengan nama backpropagation.
Dalam Matlab ada 2 cara untuk mengimplementasikan algoritma gradient
descent yaitu :
1. Incremental Mode
Pada cara ini, penghitungan gradient dan perbaikan nilai bobot-bobot dilakukan
pada setiap pengoperasian input data. Untuk menggunakan pelatihan
backpropagation dengan incremental mode, diguankan fungsi adapt.
[net, y, e] = adapt(net,p,t)
Dimana :
net : jaringan syaraf tiruan yang telah beradaptasi
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 3
y : Output jaringan syaraf tiruan
e : Error pelatihan
p : input jaringan (data-data yang diadaptasikan)
t : target jaringan syaraf
Dalam menggunakan mode ini ada beberapa hal yang harus dilakukan
konfigurasi yaitu :
a. Fungsi pembelajaran yang digunakan. Default fungsi yang digunakan
jaringan feedforward adalah adaptwb. Fungsi ini mengijinkan setiap
bobot (baik input, bias dan layer) untuk melakukan pembelajaran sesuai
dengan fungsi pembelajarannya sendiri-sendiri.
Net.adaptFcn =’adaptwb’
b. Fungsi pembelajaran untuk masing-masing bobot (input, bias dan layer)
net.inputWeights{i,j}.learnFcn= nama_fungsi_pembelajaran_w_input
net.layerWeights{i,j}.learnFcn= nama_fungsi_pembelajaran_w_layer
net.biases{i,j}.learnFcn= nama_fungsi_pembelajaran_w_bias
Fungsi pembelajaran bobot-bobot yang digunakan adalah :
a. Gradient Descent (learngd)
Fungsi ini menggunakan algoritma dasar gradient descent (ingat kembali
algoritma backpropagasi). Parameter yang berhubungan dengan learngd,
yaitu learning rate. Semakin besar learning rate akan berimplikasi pada
semakin besarnya langkah pembelajaran. Jika learning rate di set terlalu
besar membuat algoritma jadi tidak stabil.
Instruksi yang digunakan untuk mengubah learning rate dari jairngan net
adalah :
net.inputWeights{i,j}.learnParam.lr = learning_rate_input
net.layerWeights{i,j}.learnParam.lr = learning_rate_layer
net.biases{i,j}.learnParam.lr = learning_rate_bias
Parameter lain yang perlu diset adalah jumlah maksimum iterasi (epoh)
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 4
net.adaptParam.passes=maksimum_epoh
b. Gradien descent dengan momentum (learngdm)
Fungsi ini tidak hanya merespon gradient local saja, namun juga
mempertimbangkan kecenderungan yang baru saja terjadi pada
permukaan error. Besarnya perubahan bobbot ini dipengaruhi oleh suatu
konstanta (momentum), mc. Dimana nilai mc terletak antar 0-1.
Dalam penggunaan learngdm, selain setting learning rate juga disertai
dengan setting nilai momentum :
net.inputWeights{i,j}.learnParam.mc = momentum_input
net.layerWeights{i,j}.learnParam.mc = momentum_layer
net.biases{i,j}.learnParam.mc = momentum_bias
2. Batch Mode
Pada batch mode, penghitungan gradient dan perbaikan nilai bobot-bobot
dilakukan setelah pengoperasian semua input data. Untuk menggunakan
pelatihan backpropagation dengan batch mode digunakan fungsi train.
[net, tr] = train(net,p,t,Pi,Ai)
Dengan :
Net : jaringan syaraf tiruan
Tr : informasi pelatihan (epoh dan fungsi kinerja)
P : matriks data input
T : matriks data target
Pi : kondisi delay awal input (default : 0)
Ai : Kondisi delay awal layer (default : 0)
Fungsi ini akan menggunakan objek jaringan, kumpulan data input dan target
sebagai input pelatihan yang akan menghasilkan objek jaringan terlatih. Fungsi
pembelajaran untuk algirtma gradient descen ini diantaranya :
a. Gradient descent (traingd)
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 5
Fungsi ini sama halnya dengan fungsi learngd. Parameter yang perlu diset
dalam model pembelajaran ini adalah fungsi pelatihan diset menjadi
traingd. Tidak seperti pada model sebelumnya yang setiap bobot
memiliki fungsi pelatihan sendiri-sendiri, pada model ini hanya
menggunakan satu funsgi pelatihan. Ada 7 para meter yang perlu diset
yaitu :
Maksimum epoh
net.trainParam.epochs=maks_epoh (default maksimum 10)
Kinerja tujuan
Kinerja tujuan adalah target nilai fungsi kinerja. Iterasi akan
berhenti jika nilai fungsi kinerja kurang dari atau sama dengan
kinerja tujuan.
net.trainParam.goal = target_error (defaultnya : 0)
Learning rate
net.trainParam.lr = learning_rate (defaultnya : 0.01)
Maksimum kegagalan
net.trainParam.max_fail=maksimum_kegagalan (defaultnya :5)
Gardient minimum
Gradient minimum adalah akar dari jumlah kuadrat semua
gradient(input, layer, bias) terkecil yang diperbolehkan.
net.trainParam.min_grad=minimum_gradient (defaultnya:10-10)
Jumlah epoh yang akan ditunjukkan kemajuannya
Menunjukkan berapa jumlah epoh berselang yang akan
ditunjukkan kemajuannya.
net.trainParam.show = epoh_yang_dilihatkan (defaulnyta : 25)
Waktu maskimum untuk pelatihan
Menunjukkan waktu maksimum yang diijinkan untuk melakukan
pelatihan.
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 6
net.trainParam.time = maskimum_time (defaultnya : inf)
b. Gradient descent dengan momentum(traingdm)
Fungsi ini sama halnya dengan learngdm, yang dikerjakan dalam
incremental mode.
net.trainParam.mc = momentum
C. Praktikum
Kasus 1 : (file : kasus1.m)
clear;
clc;
p =[1 2 3 4 5 6 7 8 9 10];
t=[5 6 7 8 9 11 12 13 14 15];
net = newff(minmax(p),[3 1],{'logsig','purelin'});
net.trainParam.epochs=10;
net = train(net,p,t);
y = sim(net,p);
%Menampilkan perbandingan input dengan output
plot(p,t,'bo',p,y,'r*');
title('Perbandingan antara target dengan output jaringan');
xlabel('input');
ylabel('Target');
grid;
Kasus 2 : (Penggunaan Increment Mode dengan Fungsi pembelajaran ‘learngd’)
File : kasus2.m
clear;
clc;
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 7
%Pola inputan
p=[0 1 2 1 10 12 -5 -8 -10 -15; 0 1 -1 6 3 -1 -2 2 -5 1]
t=[0 0 1 1 2 2 -1 -1 -2 -2];
%Membangun jaringan MLP dengan backpropgation
net = newff(minmax(p),[5,1],{'tansig','purelin'});
%menampilkan bobot masing-masing layer
wawal_input = net.IW{1,1}
wawal_bias_input = net.b{1,1}
wawal_layer = net.LW{2,1}
wawal_bias_layer=net.b{2,1}
%konfigurasi fungsi pelatihan jaringan
net.adaptFcn='adaptwb';
%Konfigursai masing-masing bobot input, layer dan bias
net.inputWeights{1,1}.learnFcn ='learngd';
net.layerWeights{2,1}.learnFcn ='learngd';
net.biases{1,1}.learnFcn ='learngd';
net.biases{2,1}.learnFcn ='learngd';
%Konfigurasi learning ratenya
net.inputWeights{1,1}.learnParam.lr = 0.02;
net.layerWeights{2,1}.learnParam.lr = 0.02;
net.biases{1,1}.learnParam.lr = 0.02;
net.biases{2,1}.learnParam.lr = 0.02;
%Konfigurasi maksimum epoh (iterasinya)
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 8
net.adaptParam.passes=50;
%ubah pola input dan target ke bentuk cell
P = num2cell(p,1);
T = num2cell(t,1);
%Melakukan pelatihan
[net, y, e] = adapt(net,p,t);
%bobot setelah dilakukan trainning
wakhir_input = net.IW{1,1}
wakhir_bias_input = net.b{1,1}
wakhir_layer = net.LW{2,1}
wakhir_bias_layer=net.b{2,1}
%melakukan simulasi
a = sim(net,p)
%Grafik perbandingan input dengan target
subplot(211)
plot(p(1,:),t,'bo',p(1,:),a,'r*');
title('Perbandingan antara target dengan output jaringan');
xlabel('input pertama');
ylabel('Target');
grid;
subplot(212)
plot(p(2,:),t,'bo',p(2,:),a,'r*');
title('Perbandingan antara target dengan output jaringan');
xlabel('input kedua');
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 9
ylabel('Target');
grid;
Kasus 3 : (Penggunaan Increment Mode dengan Fungsi pembelajaran ‘learngdm’)
File : kasus3.m
clear;
clc;
%Pola inputan
p=[0 1 2 1 10 12 -5 -8 -10 -15; 0 1 -1 6 3 -1 -2 2 -5 1]
t=[0 0 1 1 2 2 -1 -1 -2 -2];
%Membangun jaringan MLP dengan backpropgation
net = newff(minmax(p),[5,1],{'tansig','purelin'});
%menampilkan bobot masing-masing layer
wawal_input = net.IW{1,1}
wawal_bias_input = net.b{1,1}
wawal_layer = net.LW{2,1}
wawal_bias_layer=net.b{2,1}
%konfigurasi fungsi pelatihan jaringan
net.adaptFcn='adaptwb';
%Konfigursai masing-masing bobot input, layer dan bias
net.inputWeights{1,1}.learnFcn ='learngdm';
net.layerWeights{2,1}.learnFcn ='learngdm';
net.biases{1,1}.learnFcn ='learngdm';
net.biases{2,1}.learnFcn ='learngdm';
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 10
%Konfigurasi learning ratenya
net.inputWeights{1,1}.learnParam.lr = 0.02;
net.layerWeights{2,1}.learnParam.lr = 0.02;
net.biases{1,1}.learnParam.lr = 0.02;
net.biases{2,1}.learnParam.lr = 0.02;
%konfigurasi momentumnya
net.inputWeights{1,1}.learnParam.mc = 0.3;
net.layerWeights{2,1}.learnParam.mc = 0.3;
net.biases{1,1}.learnParam.mc = 0.3;
net.biases{2,1}.learnParam.mc = 0.3;
%Konfigurasi maksimum epoh (iterasinya)
net.adaptParam.passes=50;
%ubah pola input dan target ke bentuk cell
P = num2cell(p,1);
T = num2cell(t,1);
%Melakukan pelatihan
[net, y, e] = adapt(net,p,t);
%bobot setelah dilakukan trainning
wakhir_input = net.IW{1,1}
wakhir_bias_input = net.b{1,1}
wakhir_layer = net.LW{2,1}
wakhir_bias_layer=net.b{2,1}
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 11
%melakukan simulasi
a = sim(net,p)
%Grafik perbandingan input dengan target
subplot(211)
plot(p(1,:),t,'bo',p(1,:),a,'r*');
title('Perbandingan antara target dengan output jaringan');
xlabel('input pertama');
ylabel('Target');
grid;
subplot(212)
plot(p(2,:),t,'bo',p(2,:),a,'r*');
title('Perbandingan antara target dengan output jaringan');
xlabel('input kedua');
ylabel('Target');
grid;
Kasus 4 : (Penggunaan Batch Mode dengan ‘traingd’)
File : kasus4.m
clear;
clc;
%Pola inputan
p=[0 1 2 1 10 12 -5 -8 -10 -15; 0 1 -1 6 3 -1 -2 2 -5 1]
t=[0 0 1 1 2 2 -1 -1 -2 -2];
%Membangun jaringan MLP dengan backpropgation
net = newff(minmax(p),[5,1],{'tansig','purelin'},'traingd');
%menampilkan bobot masing-masing layer
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 12
wawal_input = net.IW{1,1}
wawal_bias_input = net.b{1,1}
wawal_layer = net.LW{2,1}
wawal_bias_layer=net.b{2,1}
%set max epoh, goal, learning rate, show step
net.trainParam.epochs=50;
net.trainParam.goal=1e-3;
net.trainParam.lr=0.1;
net.trainParam.show=10;
%melakukan pembelajaran
net = train(net,p,t);
%bobot setelah dilakukan trainning
wakhir_input = net.IW{1,1}
wakhir_bias_input = net.b{1,1}
wakhir_layer = net.LW{2,1}
wakhir_bias_layer=net.b{2,1}
%melakukan simulasi
a = sim(net,p)
%Grafik perbandingan input dengan target
pause;
subplot(211)
plot(p(1,:),t,'bo',p(1,:),a,'r*');
title('Perbandingan antara target dengan output jaringan');
xlabel('input pertama');
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 13
ylabel('Target');
grid;
subplot(212)
plot(p(2,:),t,'bo',p(2,:),a,'r*');
title('Perbandingan antara target dengan output jaringan');
xlabel('input kedua');
ylabel('Target');
grid;
Kasus 5 : (Penggunaan Batch Mode dengan ‘traingdm’)
File : kasus5.m
clear;
clc;
%Pola inputan
p=[0 1 2 1 10 12 -5 -8 -10 -15; 0 1 -1 6 3 -1 -2 2 -5 1]
t=[0 0 1 1 2 2 -1 -1 -2 -2];
%Membangun jaringan MLP dengan backpropgation
net = newff(minmax(p),[5,1],{'tansig','purelin'},'traingd');
%menampilkan bobot masing-masing layer
wawal_input = net.IW{1,1}
wawal_bias_input = net.b{1,1}
wawal_layer = net.LW{2,1}
wawal_bias_layer=net.b{2,1}
%set max epoh, goal, learning rate, show step
net.trainParam.epochs=50;
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 14
net.trainParam.goal=1e-3;
net.trainParam.lr=0.1;
net.trainParam.show=10;
net.trainParam.mc=0.3;
%melakukan pembelajaran
net = train(net,p,t);
%bobot setelah dilakukan trainning
wakhir_input = net.IW{1,1}
wakhir_bias_input = net.b{1,1}
wakhir_layer = net.LW{2,1}
wakhir_bias_layer=net.b{2,1}
%melakukan simulasi
a = sim(net,p)
%Grafik perbandingan input dengan target
pause;
subplot(211)
plot(p(1,:),t,'bo',p(1,:),a,'r*');
title('Perbandingan antara target dengan output jaringan');
xlabel('input pertama');
ylabel('Target');
grid;
subplot(212)
plot(p(2,:),t,'bo',p(2,:),a,'r*');
title('Perbandingan antara target dengan output jaringan');
xlabel('input kedua');
ylabel('Target');
Riset Group Ilmu Rekayasa & Komputasi
Teknik Informatika, Universitas Sebelas Maret
WHT 2010 Halaman : 15
grid;
D. Latihan
Toko swalayan ingin melakukan suatu peramalan (forechasting) penjualan suatu
produk Mie Instan “Super Indomie Solone”. Penjualan pada hari ke Xi ditentukan oleh
penjualan pada hari yang sama, 1 minggu, 2 minggu, 3 minggu dan 4 minggu
sebelumnya. dipengaruhi oleh Untuk proses ramalan tersebut
toko swalayan mempunyai data sebagai berikut :
No Hari Tgl P No Hari Tgl P No Hari Tgl P No Hari Tgl P
1 S 1 10 15 S 15 10 29 S 29 9 43 S 13 10
2 S 2 8 16 S 16 11 30 S 30 10 44 S 14 12
3 R 3 12 17 R 17 12 31 R 1 12 45 R 15 12
4 K 4 10 18 K 18 11 32 K 2 11 46 K 16 11
5 J 5 12 19 J 19 12 33 J 3 12 47 J 17 12
6 S 6 30 20 S 20 24 34 S 4 31 48 S 18 23
7 M 7 35 21 M 21 26 35 M 5 36 49 M 19 25
8 S 8 9 22 S 22 9 36 S 6 11 50 S 20 10
9 S 9 10 23 S 23 9 37 S 7 13 51 S 21 7
10 R 10 11 24 R 24 12 38 R 8 12 52 R 22 15
11 K 11 10 25 K 25 13 39 K 9 10 53 K 23 13
12 J 12 12 26 J 26 12 40 J 10 9 54 J 24 14
13 S 13 23 27 S 27 21 41 S 11 24 55 S 25 23
14 M 14 26 28 M 28 26 42 M 12 26 56 M 26 27
E. Referensi
1. Kusumadewi, Sri. 2004. Membangun Jaringan Syaraf Tiruan Menggunakan Matlab
dan Excel Link. Graha Ilmu. Yogayakarta.
Recommended