Pemrograman Perceptron Dengan _matlab

28
PEMROGRAMAN PERCEPTRON DENGAN MATLAB Tugas ini disusun Guna Memenuhi Tugas Mata Kuliah Jaringan Syaraf Tiruan Dosen Pengampu: Nurochman Disusun oleh : SEPTIANI PUTRI 08650005 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI SUNAN KALIJAGA YOGYAKARTA

Transcript of Pemrograman Perceptron Dengan _matlab

Page 1: Pemrograman Perceptron Dengan _matlab

PEMROGRAMAN PERCEPTRON

DENGAN MATLAB

Tugas ini disusun Guna Memenuhi Tugas Mata Kuliah Jaringan Syaraf Tiruan

Dosen Pengampu:

Nurochman

Disusun oleh :

SEPTIANI PUTRI 08650005

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS ISLAM NEGERI SUNAN KALIJAGA

YOGYAKARTA

2011

Page 2: Pemrograman Perceptron Dengan _matlab

MEMBANGUN PERCEPTRON

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 Radalah

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: Pemrograman Perceptron Dengan _matlab

OPERATOR AND

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

0 0 00 1 01 0 01 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

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)

Page 4: Pemrograman Perceptron Dengan _matlab

% 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

Berarti jaringan syaraf ini memiliki 2 bobot input

% mengetahui bobot-bobot input pada jaringan syaraf ini>> BobotInput=net.IW{:}

BobotInput =

0 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

Page 5: Pemrograman Perceptron Dengan _matlab

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];>> 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 6: Pemrograman Perceptron Dengan _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 beradaptasiY : output jaringan syarafE : error yang terjadi (target – output jaringan)P : input jaringan (data-data yang diadaptasikan)T : target jaringan

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];

Page 7: Pemrograman Perceptron Dengan _matlab

% 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 8: Pemrograman Perceptron Dengan _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);>> 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.

Page 9: Pemrograman Perceptron Dengan _matlab

Melakukan simulasi input data baru terhadap jaringan syaraf yang telah selesai melakukan pembelajaran, menggunakan sim.Syntax : a = sim(net,p)

a : output hasil simulasi 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

Page 10: Pemrograman Perceptron Dengan _matlab

>> %Target>> T=[0 0 0 1];>> 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');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;YEpause(2);end;

Y =

1 1 1 1

E =

-1 -1 -1 0

Page 11: Pemrograman Perceptron Dengan _matlab

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

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)

Page 12: Pemrograman Perceptron Dengan _matlab

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

HasilperceptronAnd.m

Data input (P):0 00 11 01 1Target (T):0001Bobot Input Awal(w):0.00 0.00Bobot Bias Awal(b):0.00 Epoh ke-1 Output Jaringan (Y):-1-1-10Eror Adapatasi (E):-1-1-10Bobot Input Baru (W):-1.00 -1.00 Bobot Bias Baru (b) : -3.00 Sum Square Error (SSE):3.00

Page 13: Pemrograman Perceptron Dengan _matlab

Epoh ke-2 Output Jaringan (Y):0001Eror Adapatasi (E):0001Bobot 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):0001Eror Adapatasi (E):0001Bobot 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-10Eror Adapatasi (E):0-1-10Bobot 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):0001Eror Adapatasi (E):0001Bobot Input Baru (W):1.00 1.00 Bobot Bias Baru (b) : -2.00 Sum Square Error (SSE):1.00 Epoh ke-6 Output Jaringan (Y):0000Eror Adapatasi (E):0000Bobot 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 14: Pemrograman Perceptron Dengan _matlab

OPERATOR NOT AND

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

0 0 00 1 01 0 11 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 10 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.

% 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

Page 15: Pemrograman Perceptron Dengan _matlab

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 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];>> T=[0 0 1 0];>> plotpv(P,T);

>> net=newp([0 1;0 1],1);>> net.IW{1,1}=[-0.8 -1.3];

Page 16: Pemrograman Perceptron Dengan _matlab

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

% 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>> net=init(net);% set epoh sebanyak 3 kali>> net.adaptParam.passes=3;

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

Page 17: Pemrograman Perceptron Dengan _matlab

% 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 hasilBobotInputAkhir =

1 -2

>> BobotBiasAkhir=net.b{1}

BobotBiasAkhir =

-1

>> MSE=EmEsEMSE =

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 =

Page 18: Pemrograman Perceptron Dengan _matlab

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

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];

Page 19: Pemrograman Perceptron Dengan _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');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;>> YEpause(2);end;

Page 20: Pemrograman Perceptron Dengan _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);>> 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 21: Pemrograman Perceptron Dengan _matlab

HasilPerceptron.m

Data input (P):0 00 11 01 1Target (T):0010Bobot Input Awal(w):0.00 0.00Bobot Bias Awal(b):0.00 Epoh ke-1 Output Jaringan (Y):-1-10-1Eror Adapatasi (E):-1-10-1Bobot 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):0010Eror Adapatasi (E):0010Bobot 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):0010Eror Adapatasi (E):0010Bobot 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):0000Eror Adapatasi (E):0000Bobot 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