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 :
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);
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 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
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);
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);
% jaringan syaraf yang ada dikembalikan sesuai inisialisasi fungsinya >> net=init(net); >> net.IW{1,1} ans = 0 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 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
>> >> >> >> >> >> >> >> >> >> >> >>
%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}
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 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')
%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; 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 E = 0 Y = 0 1 1 1 0 0 1 0 0 0
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)
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 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 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
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 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