Materi Multi Layer Perceptron

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

Transcript of Materi Multi Layer Perceptron

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.