Jaringan perceptron & matlab

30
PEMROGRAMAN PERCEPTRON PADA MATLAB JST dan Matlab Arafat, M.Kom

description

 

Transcript of Jaringan perceptron & matlab

Page 1: Jaringan perceptron & matlab

PEMROGRAMAN

PERCEPTRON PADA

MATLAB

JST dan

Matlab

Arafat, M.Kom

Page 2: Jaringan perceptron & matlab

Pada MATLAB, fungsi yang dipakai untuk membangun jaringan perceptron adalah newp.

Perintah newp akan membuat sebuah perceptron dengan spesifikasi tertentu (jumlah unit input,

jumlah neuron,fungsi aktivasi, dll)

Fungsi : net = newp(PR,S)

net = newp(PR,S,TF,LF)

PR: matriks berukuran Rx2 yang berisi nilai minimum dan maksimum, dengan R adalah

jumlah variabel input (ada R buah masukan)

S : jumlah neuron (target)

TF : fungsi aktivasi biner(defaultnya adalah fungsi treshold, dalam MATLAB disebut

‘hardlim’)

LF : Fungsi pembelajaran (default : learnp, dipakai untuk mengubah bobot sehingga

diperoleh bobot yang mendekati target)

Arsitektur jaringan terlihat seperti gambar berikut :

Page 3: Jaringan perceptron & matlab

OPERATOR AND

Jaringan syaraf operasi AND dengan input dan output biner sebagai berikut :

Input target

0 0 0

0 1 0

1 0 0

1 1 1

Membangun perceptron (newp), dengan 2 input masing-masing mempunyai elemen dengan nilai

minimum 0 dan maksimum 1 ([0 1;0 1]), dan memiliki 1 neuron (1), fungsi aktivasi

hardlim dan fungsi pembelajaran learnp.

Instruksi pada jendela perintah MATLAB :

>> net=newp([0 1;0 1],1);

1. Input jaringan syaraf

% mengetahui ukuran input jaringan syaraf ini

>> JumlahInput=net.inputs{1}.size

JumlahInput = 2

Berarti jaringan syaraf ini memiliki 2 variabel input

% mengetahui range elemen input jaringan syaraf ini

>> RangeInput=net.inputs{1}.range

RangeInput =

0 1

0 1

Page 4: Jaringan perceptron & matlab

Berarti input pertama jaringan syaraf ini memiliki nilai minimum 0 dan nilai maksimum 1,

demikian pula, input kedua memiliki nilai minimum 0 dan maksimum 1.

2. Ukuran output jaringan syaraf

% mengetahui ukuran output jaringan syaraf ini

>> JumlahOutput=net.outputs{1}.size

JumlahOutput =1

Berarti jaringan syaraf ini memiliki 1 variabel output.

3. Lapisan

% mengetahui ukuran lapisan jaringan syaraf ini

>> JumlahLapisan=net.layers{1}.size

JumlahLapisan =1

Berarti jaringan syaraf ini memiliki 1 lapisan (single layer)

% mengetahui fungsi aktivasi yang digunakan oleh jaringan syaraf ini

>> FungsiAktifasi=net.layers{1}.transferFcn

FungsiAktifasi =hardlim

Berarti jaringan syaraf ini menggunakan fungsi aktivasi hardlim

4. Ukuran Bias

% mengetahui ukuran bias jaringan syaraf ini

>> JumlahBias=net.biases{1}.size

JumlahBias =1

Berarti jaringan syaraf ini menggunakan fungsi aktivasi hardlim

5. Bobot Jaringan Syaraf

% mengetahui jumlah bobot input pada jaringan syaraf ini

>> JumlahBobotInput=net.inputWeights{1}.size

JumlahBobotInput = 1 2

Page 5: Jaringan perceptron & matlab

Berarti jaringan syaraf ini memiliki 2 bobot input

% mengetahui bobot-bobot input pada jaringan syaraf ini

>> BobotInput=net.IW{:}

BobotInput = 0

Berarti kedua bobot ini memiliki nilai awal = 0

%mengetahui jumlah lapisan pada jaringan syaraf ini

>> JumlahBobotLapisan=net.LW{:}

JumlahBobotLapisan =[]

Berarti jaringan syaraf ini tidak memiliki bobot lapisan

% mengetahui bobot-bobot bias pada jaringan ini

>> BobotBias=net.b{1}

BobotBias =0

Berarti bobot bias memiliki nilai awal = 0

Menggambar hubungan antara vektor input dengan vektor target pada perceptron menggunakan

perintah plotpv.

Syntax : plotpv(P,T)

Plotpv(P,T,V)

P : matriks berukuran m x n, yang merupakan vektor input dengan jumlah variabel input

(m) maksimum 3, dan n jumlah data.

T : matriks berukuran r x n, yang merupakan vektir target yang harus bernilai 0 atau 1

(biner) dengan jumlah variabel target (r) maksimum 3 , dan n jumlah data.

V : batas grafik, [x_min x_max y_min y_max]

% menggambar hubungan antara vektor input P dan target T

>> P=[0 0 1 1;0 1 0 1];

>> T=[0 0 0 1];

Page 6: Jaringan perceptron & matlab

>> plotpv(P,T);

Akan dihasilkan gambar seperti berikut :

>> net=newp([0 1;0 1],1);

>> net.IW{1,1}=[-0.8 -1.3];

>> net.b{1}=0.6;

>> P=[0 0 1 1;0 1 0 1];

>> T=[0 0 0 1];

>> plotpv(P,T);

% melihat garis hasil komputasi

>> plotpc(net.IW{1,1},net.b{1});

Page 7: Jaringan perceptron & matlab

% jaringan syaraf yang ada dikembalikan sesuai inisialisasi fungsinya

>> net=init(net);

>> net.IW{1,1}

ans = 0 0

>> net.b{1}

ans = 0

Melakukan pembelajaran agar jaringan syaraf bisa beradaptasi, untuk melakukan adaptasi pada

perseptron digunakan adapt.

Syntax : [net,Y,E] = adapt(net,P,T)

Net : jaringan syaraf yang telah beradaptasi

Y : output jaringan syaraf

E : error yang terjadi (target – output jaringan)

P : input jaringan (data-data yang diadaptasikan)

T : target jaringan

Page 8: Jaringan perceptron & matlab

instruksi untuk melakukan adaptasi sebanyak 3 epoh pada jaringan syaraf untuk operasi AND

% input

>> P=[0 0 1 1;0 1 0 1];

% target

>> T=[0 0 0 1];

% membangun jaringan syaraf tiruan dengan perceptron

>> net=newp(minmax(P),1);

% mengembalikan nilai bobot sesuai dengan inisialisasi fungsi

>> net=init(net);

% set epoh sebanyak 3 kali

>> net.adaptParam.passes=3;

% melakukan adaptasi

>> [net,Y,E]=adapt(net,P,T);

% menggambar grafik hasil

>> plotpv(P,T);

>> plotpc(net.IW{1,1},net.b{1});

% mencari mean square

>> EmEsE=mse(E);

% tampilkan hasil

>> BoboInputAkhir=net.IW{1,1}

BoboInputAkhir = 1 1

>> BoboBiasAkhir=net.b{1}

BoboBiasAkhir = -1

>> MSE=EmEsE

MSE = 0.2500

Page 9: Jaringan perceptron & matlab

>> %karena masih o.25 maka dilakukan pelatihan lagi

>> P = [0 0 1 1;0 1 0 1];

>> T = [0 0 0 1];

>> net = newp(minmax(P),1);

>> net = init(net);

>> % nilai epoh diubah menjadi 6

>> net.adaptParam.passes=6;

>> [net,Y,E]=adapt(net,P,T);

>> plotpv(P,T);

>> plotpc(net.IW{1,1},net.b{1});

>> EmEsE=mse(E);

Page 10: Jaringan perceptron & matlab

>> BoboBiasAkhir=net.b{1}

BoboBiasAkhir =-2

>> BoboInputAkhir=net.IW{1,1}

BoboInputAkhir =1 1

>> MSE=EmEsE

MSE = 0

Nilai MSE = 0, artinya sudah diperoleh jaringan dengan bobot-bobot yang baik.

Melakukan simulasi input data baru terhadap jaringan syaraf yang telah selesai melakukan

pembelajaran, menggunakan sim.

Syntax : a = sim(net,p)

a : output hasil simulasi

Page 11: Jaringan perceptron & matlab

net : jaringan syaraf yang telah dilatih.

p : input data yang akan disimulasikan pada jaringan syaraf

untuk menghitung keluaran jaringan , kita tidak perlu mengetahui targetnya. Akan tetapi jika

ingin dihitung kesalahan yang terjadi (selisih antara target dengan keluaran jaringan), maka harus

diketahui targetnya.

>> %melakukan pengujian

>> a=sim(net,[1;0])

a = 0

>> a = sim(net,[1;1])

a =1

>> a = sim(net,[0;0])

a = 0

>> a=sim(net,[0;1])

a = 0

Mengambil informasi tentang output jaringan, error adaptasi, bobot input, bobot bias, dan mean

square error (MSE) pada setiap epoh, dan menyimpannya dalam file HasilPerceptronAnd.m

>> fb=fopen('HasilPerseptronAnd.m','w');

>> %input

>> P=[0 0 1 1;0 1 0 1];

>> [m n]=size(P);

>> fprintf(fb,'Data input (P):\n')

ans = 16

>> for i=1;n,

fprintf(fb,'%d %d\n',P(:,i));

end;

n = 4

>> %Target

>> T=[0 0 0 1];

Page 12: Jaringan perceptron & matlab

>> fprintf(fb,'Target (T):\n');

>> fprintf(fb,'%d\n',T);

>> %bentuk jaringan syaraf dengan perceptron

>> net=newp(minmax(P),1);

>> plotpv(P,T);

>> linehandle=plotpc(net.IW{1},net.b{1});

>> %set eror awal E=1

>> E=1;

>> %kembalikan nilai bobot sesiau inisialisasi fungsinya

>> net=init(net);

>> fprintf(fb,'Bobot Input Awal(w):%4.2f %4.2f\n',net.IW{1,1});

>> fprintf(fb,'Bobot Bias Awal(b):%4.2f\n',net.b{1});

>> linehandle=plotpc(net.IW{1},net.b{1});

>> Epoh=0;

>> MaxEpoh=100;

>> %pembelajaran kerjakan sampai sum squere eror(SSE)=0 atau epoh>maxEpoh

>> while(sse(E)&(Epoh<MaxEpoh)),

fprintf(fb,'\n');

Epoh=Epoh+1;

fprintf(fb,'Epoh ke-%1d \n',Epoh);

[net,Y,E]=adapt(net,P,T);

fprintf(fb,'Output Jaringan (Y):');

for i=1:n,

fprintf(fb,'%1d',E(i));

end;

fprintf(fb,'\n');

Page 13: Jaringan perceptron & matlab

fprintf(fb,'Eror Adapatasi (E):');

for i=1:n,

fprintf(fb,'%1d',E(i));

end;

fprintf(fb,'\n');

fprintf(fb,'Bobot Input Baru (W):%4.2f %4.2f \n',net.IW{1,1});

fprintf(fb,'Bobot Bias Baru (b) : %4.2f \n',net.b{1});

fprintf(fb,'Sum Square Error (SSE):%4.2f \n',sse(E));

linehandle=plotpc(net.IW{1},net.b{1},linehandle);

drawnow;

Y

E

pause(2);

end;

Y = 1 1 1 1

E = -1 -1 -1 0

Y = 0 0 0 0

E = 0 0 0 1

Y = 0 0 0 0

E = 0 0 0 1

Y = 0 1 1 1

E = 0 -1 -1 0

Y = 0 0 0 0

E = 0 0 0 1

Page 14: Jaringan perceptron & matlab

Y = 0 0 0 1

E =0 0 0 0

>> fprintf(fb,'\n');

>> fprintf(fb,'Bobot Input Akhir (W):%4.2f %4.2f \n',net.IW{1,1});

>> fprintf(fb,'Bobot Bias Akhir (b):%4.2f \n',net.b{1});

>> %vektor yang akan disimulasikan

>> p=[0.5 0.1 0.7 0.2 0.5; 0.5 0.1 0.1 0.4 0.3];

>> %simulasi

>> a=sim(net,p)a = 0 0 0 0 0

>> plotpv(p,a);

>> ThePoint=findobj(gca,'type','line');

>> set(ThePoint,'Color','green');

>> pause(2);

>> hold on;

>> plotpv(P,T);

>> plotpc(net.IW{1},net.b{1});

>> hold off;

>> fclose(fb);

Page 15: Jaringan perceptron & matlab

Hasil perceptronAnd.m

Data input (P):

0 0

0 1

1 0

1 1

Target (T):

0

0

0

1

Bobot Input Awal(w):0.00 0.00

Bobot Bias Awal(b):0.00

Epoh ke-1

Page 16: Jaringan perceptron & matlab

Output Jaringan (Y):-1-1-10

Eror Adapatasi (E):-1-1-10

Bobot Input Baru (W):-1.00 -1.00

Bobot Bias Baru (b) : -3.00

Sum Square Error (SSE):3.00

Page 17: Jaringan perceptron & matlab

Epoh ke-2

Output Jaringan (Y):0001

Eror Adapatasi (E):0001

Bobot Input Baru (W):0.00 0.00

Bobot Bias Baru (b) : -2.00

Sum Square Error (SSE):1.00

Epoh ke-3

Output Jaringan (Y):0001

Eror Adapatasi (E):0001

Bobot Input Baru (W):1.00 1.00

Bobot Bias Baru (b) : -1.00

Sum Square Error (SSE):1.00

Epoh ke-4

Output Jaringan (Y):0-1-10

Eror Adapatasi (E):0-1-10

Bobot Input Baru (W):0.00 0.00

Bobot Bias Baru (b) : -3.00

Sum Square Error (SSE):2.00

Epoh ke-5

Output Jaringan (Y):0001

Eror Adapatasi (E):0001

Bobot Input Baru (W):1.00 1.00

Bobot Bias Baru (b) : -2.00

Sum Square Error (SSE):1.00

Epoh ke-6

Page 18: Jaringan perceptron & matlab

Output Jaringan (Y):0000

Eror Adapatasi (E):0000

Bobot Input Baru (W):1.00 1.00

Bobot Bias Baru (b) : -2.00

Sum Square Error (SSE):0.00

Bobot Input Akhir (W):1.00 1.00

Bobot Bias Akhir (b):-2.00

Page 19: Jaringan perceptron & matlab

OPERATOR NOT AND

Jaringan syaraf operasi AND dengan input dan output biner sebagai berikut :

Input target

0 0 0

0 1 0

1 0 1

1 1 0

% mengetahui ukuran input jaringan syaraf ini

>> net=newp([0 1;0 1],1);

>> JumlahInput=net.inputs{1}.size

JumlahInput = 2

Berarti jaringan syaraf ini memiliki 2 variabel input

% mengetahui range elemen input jaringan syaraf ini

>> RangeInput=net.inputs{1}.range

RangeInput =0 1 1

Berarti input pertama jaringan syaraf ini memiliki nilai minimum 0 dan nilai maksimum 1,

demikian pula, input kedua memiliki nilai minimum 0 dan maksimum 1.

% mengetahui ukuran output jaringan syaraf ini

>> JumlahOutput=net.outputs{1}.size

JumlahOutput =1

Berarti jaringan syaraf ini memiliki 1 variabel output.

Page 20: Jaringan perceptron & matlab

% mengetahui ukuran lapisan jaringan syaraf ini

>> JumlahLapisan=net.layers{1}.size

JumlahLapisan =1

Berarti jaringan syaraf ini memiliki 1 lapisan (single layer)

% mengetahui fungsi aktivasi yang digunakan oleh jaringan syaraf ini

>> FungsiAktifasi=net.layers{1}.transferFcn

FungsiAktifasi =hardlim

% mengetahui ukuran bias jaringan syaraf ini

>> JumlahBias=net.biases{1}.size

% mengetahui ukuran bias jaringan syaraf ini

JumlahBias =1

% mengetahui jumlah bobot input pada jaringan syaraf ini

>> JumlahBobotInput=net.inputWeights{1}.size

JumlahBobotInput =1 2

% mengetahui bobot-bobot input pada jaringan syaraf ini

>> BobotInput=net.IW{:}

BobotInput =0

%mengetahui jumlah lapisan pada jaringan syaraf ini

>> JumlahBobotLapisan=net.LW{:}

JumlahBobotLapisan =[]

% mengetahui bobot-bobot bias pada jaringan ini

>> BobotBias=net.b{1}

BobotBias =0

Menggambar hubungan antara vektor input dengan vektor target pada perceptron menggunakan

perintah plotpv.

>> P=[0 0 1 1;0 1 0 1];

Page 21: Jaringan perceptron & matlab

>> T=[0 0 1 0];

>> plotpv(P,T);

>> net=newp([0 1;0 1],1);

>> net.IW{1,1}=[-0.8 -1.3];

>> net.b{1}=0.6;

>> P=[0 0 1 1;0 1 0 1];

>> T=[0 0 1 0];

>> plotpv(P,T);

% melihat garis hasil komputasi

>> plotpc(net.IW{1,1},net.b{1});

Page 22: Jaringan perceptron & matlab

% jaringan syaraf yang ada dikembalikan sesuai inisialisasi fungsinya

>> net=init(net);

>> net.IW{1,1}

ans =

0 0

>> net.b{1}

ans =0

Melakukan pembelajaran agar jaringan syaraf bisa beradaptasi.

% input

>> P=[0 0 1 1;0 1 0 1];

% target

>> T=[0 0 1 0];

% membangun jaringan syaraf tiruan dengan perceptron

>> net=newp(minmax(P),1);

% mengembalikan nilai bobot sesuai dengan inisialisasi fungsi

Page 23: Jaringan perceptron & matlab

>> net=init(net);

% set epoh sebanyak 3 kali

>> net.adaptParam.passes=3;

% melakukan adaptas

>> [net,Y,E]=adapt(net,P,T);

% menggambar grafik hasil

>> plotpv(P,T);

>> plotpc(net.IW{1,1},net.b{1});

% mencari mean square

>> EmEsE=mse(E);

>> BobotInputAkhir=net.IW{1,1}

% tampilkan hasil

BobotInputAkhir =1 -2

>> BobotBiasAkhir=net.b{1}

BobotBiasAkhir =-1

>> MSE=EmEsE

Page 24: Jaringan perceptron & matlab

MSE =0.2500

>> %pelatihan dengan nilai epoh di ubah menjadi 4

>> P=[0 0 1 1;0 1 0 1];

>> T=[0 0 1 0];

>> net=newp(minmax(P),1);

>> net=init(net);

>> % nilai epoh diubah menjadi 4

>> net.adaptParam.passes=4;

>> [net,Y,E]=adapt(net,P,T);

>> plotpv(P,T);

>> plotpc(net.IW{1,1},net.b{1});

>> EmEsE=mse(E);

>> BoboInputAkhir=net.IW{1,1}

BoboInputAkhir =1 -2

>> BoboBiasAkhir=net.b{1}

BoboBiasAkhir =-1

>> MSE=EmEsE

MSE =0

% simulasi input data baru tertentu terhadap jaringan syaraf yang telah selesai

melakukan pembelajaran

>> a=sim(net,[1;0])

a =1

>> a=sim(net,[1;1])

a =0

>> a=sim(net,[0;0])

a =0

>> a=sim(net,[0;1])

Page 25: Jaringan perceptron & matlab

a =0

% informasi tentang output jaringan, error adaptasi, bobot input, bobot bias, dan mean

square error pada setiap epoh, dan menyimpannya dalam file HasilPerceptron.m

>> fb=fopen('HasilPerceptron.m','w');

>> P=[0 0 1 1;0 1 0 1];

>> [m n]=size(P);

>> fprintf(fb,'Data input (P):\n')

ans =16

>> for i=1;n,

fprintf(fb,'%d %d\n',P(:,i));

end;

n =4

>> %Target

>> T=[0 0 1 0];

>> fprintf(fb,'Target (T):\n');

>> fprintf(fb,'%d\n',T);

>> %bentuk jaringan syaraf dengan perceptron

>> net=newp(minmax(P),1);

>> plotpv(P,T);

>> linehandle=plotpc(net.IW{1},net.b{1});

>> %set eror awal E=1

>> E=1;

>> %kembalikan nilai bobot sesiau inisialisasi fungsinya

>> net=init(net);

>> fprintf(fb,'Bobot Input Awal(w):%4.2f %4.2f\n',net.IW{1,1});

>> fprintf(fb,'Bobot Bias Awal(b):%4.2f\n',net.b{1});

>> linehandle=plotpc(net.IW{1},net.b{1});

Page 26: Jaringan perceptron & matlab

>> Epoh=0;

>> MaxEpoh=100;

>> %pembelajaran kerjakan sampai sum squere eror(SSE)=0 atau epoh>maxEpoh

>> while(sse(E)&(Epoh<MaxEpoh)),

fprintf(fb,'\n');

Epoh=Epoh+1;

fprintf(fb,'Epoh ke-%1d \n',Epoh);

[net,Y,E]=adapt(net,P,T);

fprintf(fb,'Output Jaringan (Y):');

for i=1:n,

fprintf(fb,'%1d',E(i));

end;

fprintf(fb,'\n');

fprintf(fb,'Eror Adapatasi (E):');

for i=1:n,

fprintf(fb,'%1d',E(i));

end;

fprintf(fb,'\n');

fprintf(fb,'Bobot Input Baru (W):%4.2f %4.2f \n',net.IW{1,1});

fprintf(fb,'Bobot Bias Baru (b) : %4.2f \n',net.b{1});

fprintf(fb,'Sum Square Error (SSE):%4.2f \n',sse(E));

linehandle=plotpc(net.IW{1},net.b{1},linehandle);

drawnow;

>> Y

E

pause(2);

end;

Page 27: Jaringan perceptron & matlab

Y =

1 1 1 1

E =

-1 -1 0 -1

Y =

0 0 0 0

E =

0 0 1 0

Y =

0 0 0 0

E =

0 0 1 0

Y =

0 0 1 0

E =

0 0 0 0

>> fprintf(fb,'\n');

>> fprintf(fb,'Bobot Input Akhir (W):%4.2f %4.2f \n',net.IW{1,1});

>> fprintf(fb,'Bobot Bias Akhir (b):%4.2f \n',net.b{1});

>> %vektor yang akan disimulasikan

>> p=[0.5 0.1 0.7 0.2 0.5; 0.5 0.1 0.1 0.4 0.3];

>> %simulasi

>> a=sim(net,p)

a =

0 0 0 0 0

>> plotpv(p,a);

Page 28: Jaringan perceptron & matlab

>> ThePoint=findobj(gca,'type','line');

>> set(ThePoint,'Color','green');

>> pause(2);

>> hold on;

>> plotpv(P,T);

>> plotpc(net.IW{1},net.b{1});

>> hold off;

>> fclose(fb);

Hasil Perceptron.m

Data input (P):

0 0

0 1

1 0

1 1

Page 29: Jaringan perceptron & matlab

Target (T):

0

0

1

0

Bobot Input Awal(w):0.00 0.00

Bobot Bias Awal(b):0.00

Epoh ke-1

Output Jaringan (Y):-1-10-1

Eror Adapatasi (E):-1-10-1

Bobot Input Baru (W):-1.00 -2.00

Bobot Bias Baru (b) : -3.00

Sum Square Error (SSE):3.00

Epoh ke-2

Output Jaringan (Y):0010

Eror Adapatasi (E):0010

Bobot Input Baru (W):0.00 -2.00

Bobot Bias Baru (b) : -2.00

Sum Square Error (SSE):1.00

Epoh ke-3

Output Jaringan (Y):0010

Eror Adapatasi (E):0010

Bobot Input Baru (W):1.00 -2.00

Bobot Bias Baru (b) : -1.00

Sum Square Error (SSE):1.00

Epoh ke-4

Output Jaringan (Y):0000

Page 30: Jaringan perceptron & matlab

Eror Adapatasi (E):0000

Bobot Input Baru (W):1.00 -2.00

Bobot Bias Baru (b) : -1.00

Sum Square Error (SSE):0.00

Bobot Input Akhir (W):1.00 -2.00

Bobot Bias Akhir (b):-1.00