Saturday 28 March 2009

Programming Backpropagation Neural Network Using MATLAB


Salam;

Bikin program buat melatih dan menguji Neural Network (NN) kalo pake' NNTools-nya Matlab gak sulit kok, cukup simple. Beberapa tipe algoritma NN yg cukup familiar udah ada di Matlab, mulai Hebb, Adaline, Perceptron, sampe Probabilistic NN juga ada. Di bawah ini ada langkah yang mungkin bisa dicoba buat yang lagi belajar coding NN, especially Backpropagation Neural Network (BPNN) pake' Matlab by .m file editor, lets try;

Buat nginputkan data, kita bisa pake matrix yang berisi data input dan target NN kita nanti, kita bisa pake' 1 matrix yang dibagi2, ato masing2 1 matrix buat input n data. Tlg diingat, matrix input n target harus di-transpose, biar sesuai buat format itungan fungsi NN ntar. Misalnya kita punya matrix "Data" yang berisi data input n target buat NN kita, kita bisa membagi matrix itu utk variabel input dan target kita, just like these;%%%%% Data Input %%%%%Input = Data(1:m,1:n)';Target = Data(1:m,n+1:o)';

Sebelum data yg kita punya diproses, kita perlu melakukan proses normalisasi dan preprocessing dulu, biar nilai masing2 data bisa diitung dengan nilai yg lbih kcil tanpa khilangan karakteristiknya sendiri, just like these;
%%%%% Preprocessing / Normalisasi %%%%%
[Inputn,meanIn,stdIn,Targetn,meanT,stdT] = prestd(Input,Target);
those variables means :
Inputn = normalisasi
InputmeanIn = mean InputstdIn = standar deviasi Input
Targetn = normalisasi
TargetmeanT = mean TargetstdT = standar deviasi Target
Stelah smua data input n target dinormalisasi, then kita bangun jaringan BPNN kita, u can use these code;
%%%%% Build BPNN %%%%%
BPNNx = newff(minmax(Inputn), [x1 x2 x3 ...], {'act1' 'act2' 'act3' '...'}, 'train' );

n those variables means :
BPNNx = nama NN-mu
x = jumlah neuron pada tiap2 layer, kalo ada 3 "x", brarti BPNN-mu punya 2 hidden layer dan 1 output layer
act = fungsi aktivasi pada masing2 layer
train = model learning yg kamu pake'

Dalam programming BPNN menggunakan Matlab, umumnya dikenal 3 macam fungsi aktivasi yang umum digunakan yaitu :
- tansig = fungsi sigmoid bipolar
- logsig = fungsi sigmoid unipolar
- purelin = fungsi identitas

Untuk metode learning BPNN, terdapat beberapa metode yang umum digunakan dan embedded dalam Matlab, yaitu :
- traingd = metode BPNN standar
- traingdm = metode BPNN yg dipercepat dgn momentum
- traingda = metode BPNN yg dipercepat dgn learning rate variabel- traingdx = metode BPNN yg dipercepat dgn learning rate variabel dan momentum- trainrp = metode resilient BPNN
- traincgf = metode BPNN dgngradien conjugate Fletcher-Reeves
- traincgp =
metode BPNN dgngradien conjugate Polak-Ribiere
- traincgb =
metode BPNN dgngradien conjugate Powel Beale
Lha, stelah kita menyiapkan input, target, dan network yg ntar bakal dilatih, kita juga perlu mnentukan parameter2 yg mempengaruhi learning BPNN kita. Parameter2 itu harus kita tentukan dgn mngatur nilai masing2 parameter dalam bentuk integer,desimal, ato eksponensial, just like these examples;%%%%% Set Parameter %%%%%net.trainParam.epochs = p1;net.trainParam.goal = p2;net.trainParam.lr = p3;net.trainParam.show = p4;net.trainParam.mc = p5;

n those variables means :
p1 = jumlah epoch (iterasi) learning maksimal BPNN kita
p2 = jumlah error minimum yg kita inginkan
p3 = jumlah learning rate, antara 0-1
p4 = jumlah epoch dimana penampilan grafik error akan di-update
p5 = jumlah momentum, antara 0.5-1
Stelah smua perjuangan mengatur input, target, network, dan parameter dilalui, then now we'll start the learning process, just like these :%%%%% Learn Our BPNN %%%%%BPNNx = train(BPNNx,Inputn,Targetn);

all variables of that function udah dijelaskn di atas di bagian preprocessing dan pembangunan network;

Stelah BPNN kita terlatih hingga mendapatkan nilai error minimum ato epoch maksimum, then kita akan nge-test hasil learning kita, sama aja dgn ujian semester kita tiap semester. We can generate these function to dimulate this test;
%%%%% Simulate Our BPNN%%%%%SimBPNNn = sim(BPNNx,Inputn);SimBPNN = poststd(SimBPNNn,meanT,stdT);

n those variables means :
SimBPNNn = mensimulasikan network BPNNx kita
SimBPNN = men-denormalisasi target hasil simulasi BPNNx kita

then kita bisa mengevaluasi kinerja output network yang kita simulasikan dgn data pelatihan dan target using these function :
%%%%% Evaluate BPNN %%%%%[mx,b,rx] = postreg (SimBPNN,Target);
n those variables means :mx = lereng regresi linear simulasi network
b = perpotongan y untuk regresi linear
rx = nilai parameter regresi

After that process already done, kita telah selesai memrogram BPNN kita. Pada pemakaian umumnya, ada function lain yg umum digunakan untuk melihat kinerja BPNN kita, just like these codes :

Menampilkan output angka hasil simulasi
ShowNN = [(1:size(Input,2))' Target' SimBPNN' (Target'-SimBPNN')];fprintf ( 'No Target BPNN Output BPNN ERROR\n');
fprintf ( '%2.0f %7.3f %7.3f %7.3f\n', ShowNN');

Menampilkan grafik hasil plot data simulasi BPNN
plot ([1:size(Input,2)]', Target, 'bo', [1:size(Input,2)]', SimBPNN', 'r*');title ('Hasil pengujian dengan Data Pelatihan: Target (o), Output (*)');xlabel('Data ke-');ylabel('Target/Output');
Stelah smua proses coding dilakukan, just run that code using .m file editor, fix the error then see how your BPNN work, have a nice try guys, slmt mncoba!

Smoga brmanfaat, Wassalam.

8 comments:

luxsman said...

opo wae kuwi...
GAK JELAZ BLAST.....

-PrasT- said...

iKu bkN g jelaS;

tp ngeRti g yg diomonGne;

wekekekekek;

Anonymous said...

tanya donk. gmn caranya simulasi backpropagation klo bobotnya udah dapet sebelumnya. jd gak ngelewatin proses pelatihan. gmn cara ngebangun arsitektur jaringannya?

Eko Prast. said...

Wah,kok bisa dpt weightx?

Drmn?

Weight tu dtentukan awlx random,kl g dlatih trus,stau sy y g bs mas..

Kalo parameter utk ngebangun NN,sy pke trial error mulai jml neuron+layer trkcil,trus dtmbh smp yg plg bgus hsilx,tp ada jg yg dioptimasi pke algoritma gnetik,ato algoritma laen..

Anonymous said...

thank you.. it helps me a lot :)

nurdin said...

thanks
artikelnya cukup membantu.

Anonymous said...

bisa eg men generate kan membership function secara otomatis menggunakan NN

Riski Syendi said...

kita juga punya nih artikel mengenai 'Backpropagation', silahkan dikunjungi dan dibaca , berikut linknya

http://repository.gunadarma.ac.id/bitstream/123456789/2963/1/Artikel_50403683.pdf

terima kasih
semoga bermanfaat