Jumat, 02 April 2010

Algortima Pelatihan Perseptron

Model JST perseptron ditemukan oleh Rosenblatt (1962) dan Minsky – Papert (1969). Model ini merupakan model yang memiliki aplikasi dan pelatihan yang lebih baik pada era tersebut.

Arsitektur Jaringan
Arsitektur jaringan perseptron mirip dengan arsitektur jaringan Hebbian


Jaringan terdiri dari beberapa unit masukan dan sebuah bias, dan memiliki sebuah unit keluaran. Hanya saja fungsi aktivasinya bukan merupakan fungsi biner atau bipolar, tetapi memiliki kemungkinan nilai -1, 0 dan 1:
Untuk suatu harga threshold θ yang ditentukan :


Secara geometris, fungsi aktivasi membentuk 2 garis sekaligus (memisahkan daerah positif dan daerah negatif.
Garis pemisah antara daerah positif dan daerah nol memiliki pertidaksamaan :
x1w1 + .....+ xnwn + b > θ
Garis pemisah antara daerah negatif dan daerah nol memiliki pertidaksamaan :
x1w1 + .....+ xnwn + b < - θ Algortima Pelatihan Perseptron Misalkan : s vektor masukan dan t adalah target keluaran α adalah laju pembelajaran/pemahaman (learning rate) yang ditentukan θ adalah threshold yang ditentukan Algoritma sbb: 0. Inisialisasi semua bobot dan bias (umumnya wi = b =0 ) Set laju pembelajaran α ( 0 < α ≤ 1) (untuk penyederhanaan set α =1) 1. Selama kondisi berhenti benilai FALSE atau selama ada elemen vektor masukan yang respon unit keluarannya tidak sama dengan target (y ≠ t), lakukan langkah-langkah 2 – 6 2. Untuk setiap pasangan (s,t), kerjakan langkah 3 – 5: 3. Set aktivasi unit masukan xi = si (i = 1, ..., n) 4. Hitung respon untuk unit output:
5. Perbaiki bobot dan bias pola jika terjadi kesalahan Jika y ≠ t, maka: wi (baru) = wi (lama) + Δ wi (i = 1...n); dengan Δ wi = α t xi b (baru) = b (lama) + Δb dengan Δ b = α t Jika y = t maka: wi (baru) = wi (lama) b (baru) = b (lama) 6. Test kondisi berhenti: jika tidak terjadi perubahan bobot pada (i) maka kondisi berhenti TRUE, namun jika masih terjadi perubahan maka kondisi berhenti FALSE Ada beberapa hal yang perlu diperhatikan dalam algoritma tersebut: a. Interasi terus dilakukan hingga semua pola memiliki keluaran jaringan yang sama dengan targetnya (jaringan sudah memahami pola). Iterasi TIDAK berhenti setelah semua pola dimasukan seperti yang terjadi pada model Hebbian b. Pada langkah 5, perubahan bobot hanya dilakukan pada pola yang mengandung kesalahan (keluaran jaringan ≠ target). Perubahan tersebut merupakan hasil kali unit masukan dengan target dan laju pembelajaran. Perubahan bobot hanya akan terjadi jika unit masukan ≠ 0 c. Kecepatan iterasi ditentukan oleh laju pembelajaran α ( dengan 0 < α ≤ 1) yang dipakai. Semakin besar α, semakin sedikit iterasi yang diperlukan. Akan tetapi jika α terlalu besar, maka akan merusak pola yang sudah benar sehingga pembelajaran menjadi lambat Algoritma pelatihan perseptron lebih baik dibandingkan model Hebbian karena: a. Setiap kali pola dimasukkan, hasil keluaran jaringan dibandingkan dengan target yang sesungguhnya. Jika terdapat perbedaan, maka bobot akan dimodifikasi. Jadi tidak semua bobot selalu dimodifikasi dalam setiap iterasinya b. Modifikasi bobot tidak hanya ditentukan oleh perkalia antara target dan masukan, tetapi juga melibatkan suatu laju pembelajaran yang besar dapat diatur. c. Pelatihan dilakukan berulang-ulang untuk semua kemungkinan pola yang ada hingga jaringan dapat mengerti polanya (ditandai dengan samanya semua keluaran jaringan dengan target keluaran yang diiinginkan). Satu siklus pelatihan yang melibatkan semua pola disebut Epoch. Dalam jaringan Hebbian, pelatihan hanya dilakukan dalam satu Epoch saja. d. Teorema konvergensi perseptron menyatakan bahwa apabila ada bobot yang tepat, maka proses pelatihan akan konvergen ke bobot yang tepat tersebut. Program Perceptron Nama File : Perceptron.java public class Perceptron { private int[][] x; private int[] w; private int[] t; private int b; private int lRate; private int y; private int epoch; private int net; private boolean stop; private boolean[] bobotBerubah; public Perceptron(){ initial(); printInput(); learning(); } private void printInput(){ System.out.println("Bobot awal dan bias: "+w[0]+" "+w[1]+" "+b); System.out.println("Input data: x1 x2 target"); for(int i=0;i<4;i++){ x =" new" w =" new" b =" 0;" t =" new" lrate =" 1;" y =" 0;" bobotberubah =" new" i="0;i<4;i++){" stop =" false;" epoch =" 0;" stop ="="" i="0;i<4;i++){" net =" x[i][0]" y =" f(net);" stop =" true;"> 0) return 1;
else if(net == 0) return 0;
else return -1;
}

private void perbaikiBobot(int i){
w[0] = w[0] + lRate * t[i] * x[i][0];
w[1] = w[1] + lRate * t[i] * x[i][1];
b = b + lRate * t[i];
}

public void paternRecognize(int x1, int x2){
System.out.println("Pengenalan pola");
int net = x1 * w[0] + x2 * w[1] + b;
System.out.println("Input [x1 x2]: ["+x1+" "+x2+"] gerbang 'AND' dikenal dengan nilai "+f(net));
}
}

Nama File : Main.java

public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

Perceptron p = new Perceptron();
p.paternRecognize(1, 1);
p.paternRecognize(1, -1);
p.paternRecognize(-1, 1);
p.paternRecognize(-1, -1);
}
}

sumber : http://farhan-hariri88.blogspot.com/2010/03/algortima-pelatihan-perseptron.html

Tidak ada komentar:

Posting Komentar