Kamis, 26 November 2009

Contoh Algoritma Backpropagation

Jika kita mempunyai pola matriks X  :


Dan bobot awal dan bias awal yang dipilih secara acak adalah :
Nilai bobot dari layer input ke hidden layer
Vij=  0.1207690864390194, 0.18121937900400642, 0.5373979583380004, 0.6958370793063979, 0.7315162285625711, 0.19241284706221817, 0.618297402969798, 0.5254289914600393


Nilai bobot dari hidden layer ke output layer
Wk = 0.3338186565232477, 0.04331653473021879, 0.27610812619466973, 0.5946077987374927


bias 1
b1 = 0.5500964441249149, 0.28941827642665174, 0.4615712532796826, 0.8149000001760573


bias 2
b2= 0.6109600864128633


Topologi jaringan yang kita gunakan adalah menggunakan jaringan MLP Backpropagation dengan 1 layer input (2 neuron masukan), 1 hiden layer (4 neurron) dan 1 output layer (1 neuron). Fungsi aktivasi yang kita gunakan pada hidden layer adalah fungsi sigmoid dan pada output layer, fungsi aktivasi yang kita gunakan adalah fungsi linear.

Gb1. Jaringan MLP Backpropagation

Karena pola data adalah matriks berukuran 6x4, maka kita bagi 3 vector pertama sebagai learning set, kemudian 3 vector sisanya kita gunakan sebagai test set. yaitu :


Pada data test set dan learning set, kolom ketiga dari kedua data kita set sebagai target keluaran jaringan. Pada proses inisialisasi parameter jaringan, kita beri nilai maximum epoch = 1000, target error = 0.00001, MSE = 0 dan learning rate = 0,4.

Output Program :

******************Epoch ke-0 **********************
MSE = 4.758556221656486
******************Epoch ke-1 **********************
MSE = 1.3080030484094292
******************Epoch ke-2 **********************
MSE = 1.085172838222893
******************Epoch ke-3 **********************
MSE = 1.0549847659147695
******************Epoch ke-4 **********************
MSE = 1.046603613669597
******************Epoch ke-5 **********************
MSE = 1.0338336469898246

Pada 5 epoch awal, MSE mempunyai nilai yang tinggi, kemudian pada epoch setelahnya, MSE mengalami penurunan.

Gb2. Grafik MSE ddi 200 epoch pembelajaran

Jaringan akan terus menerus melakukan iterasi hingga epoch = maximum epoch atau MSE = target error. Pada kasus ini, iterasi akan berhenti pada epoch = 1000 dan jaringan akan memberhentikan proses dengan hasil output :


******************Epoch ke-999 **********************
MSE = 0.023784991619496897
******************Epoch ke-1000 **********************
MSE = 0.0237919057577512

Dari sini bisa kita lihat bahwa nilai MSE di epoch ke-999 lebih kecil daripada epoch ke-1000, bisa diartikan bahwa jaringan tidak convergent pada saat maximum epoch tercapai, jika diteruskan ke epoch selanjutnya, kemungkinan MSE bergerak menjauhi target error akan semakin besar, oleh karena itu kita harus mencari titik epoch dimana MSE berada pada nilai paling minimum. Dan nilai MSE paling minimum berada pada epoch ke-140 :

******************Epoch ke-139 **********************
MSE = 0.018681322162804544
******************Epoch ke-140 **********************
MSE = 0.018681208923667793
******************Epoch ke-141 **********************
MSE = 0.01868149867843059

Nilai bobot dan bias di epoch ke-140 adalah :

***Final weights and bias value at mininum MSE on epoch : 140****

V1[] = -0.7011998774720427
-0.3689790140738511
0.8046512685396908
1.7505551804252213

V2[] = 1.3100784790048718
0.7668952387082638
0.4267333271027457
-1.2177481267024133

b1[] = 0.3066897306561537
0.31370227499483994
0.5372604876143215
0.12644098313242658

W[] = -1.4092041090128564
0.821117168346266
0.26580529638614636
2.241329804694944

b2 = -0.33554834261466654

Kemudian, kita implementasikan bobot dan bias tersebut untuk test set dengan menggunakan perhitungan maju (feedforward) saja di jaringan yang sama.

***************TEST SET******************
minimum MSE = 0.018681208923667793
The weights and bias which used at this test function are from the minimum MSE at epoch :140
out put = -1.0586077904900728
out put = 0.1293472169464956
out put = -0.9036426039696852
out put = 0.28431240346688297

Jika kita merubah fungsi aktivasi pada output layer, dari fungsi linier menjadi fungsi Hardlimit atau sigmoid, menjadi :

***************TEST SET******************
minimum MSE = 0.018681208923667793
The weight and bias which used at this test function are from the minimum MSE at epoch :140
out put = -1.0586077904900728 hardlimit(y)= 0.0 sigmoid= 0.25757559762379123
out put = 0.1293472169464956 hardlimit(y)= 1.0 sigmoid= 0.5322917947514457
out put = -0.9036426039696852 hardlimit(y)= 0.0 sigmoid= 0.2883025167191984
out put = 0.28431240346688297 hardlimit(y)= 1.0 sigmoid= 0.5706031484804999

Dengan fungsi Hardlimit pada output layer, hasil output program adalah : 0 1 0 1, yang berarti jaringan sudah mengenali pola dari learning set dengan baik dan mampu menghasilkan output yang sesuai pada test set.

Algoritma Pembelajaran Backpropagation

Sesuai dengan namanya, algoritma ini melakukan dua tahap komputasi yaitu : perhitungan maju (feedforward) dan perhitungan mundur (backward), dalam setiap iterasinya, jaringan akan memperbaiki nilai-nilai bobot dan bias pada semua neuron yang ada di jaringan.

Algoritma Backpropagation adalah salah satu algoritma yang menggunakan metode terawasi (supervised learning), dan termasuk jaringan MLP (Multi Layer Perceptron).


Gb.1 Jaringan Multi Layer Perpceptron

Algoritma Pembelajaran Backpropagation :
● Inisialisasi semua input, target, bobot awal, bias awal dan target keluaran.
● Inisialisasi Epoch.
● Inisialisasi learning rate, maximum error.

Feedforward:
○ Hitung   nilai   masukan   pada   tiap   pasangan   elemen   input   pada   hidden  layer  dengan  formula :


○ Jika kita menggunakan fungsi aktivasi sigmoid, hitung output dengan :



○ Hitung   sinyal   keluaran   dari  hidden   layer  untuk   mendapatkan   keluaran output   layer  dengan menggunakan persamaan :



○ Jika kita menggunakan fungsi aktivasi sigmoid, hitung output dengan :



○ Kemudian, keluaran jaringan dibandingkan dengan target, hitung error E dengan :



○ Hitung MSE (Mean Square Error) :


dengan n adalah jumlah input masukan.


Backpropagation :
○ Pada tiap unit output, gunakan formula ini  untuk memperbaiki nilai bobot dan bias :



○ Perbaiki nilai bobot dan bias dengan menggunakan formula :


○ Hitung sinyal balik dari output layer pada tiap unit di hidden layer


○ Pada tiap unit hidden layer, hitung  delta_1 untuk memperbaiki nilai bobot dan bias :


○ Perbaiki nilai bobot dan bias dengan menggunakan formula :


○ Untuk semua layer, perbaiki bobot dan bias :


○ Hitung MSE (Mean Square Error) dengan menggunakan formula :

dengan n adalah jumlah input masukan.

○ Jika (Epoch < maximum Epoch) atau (MSE < Target Error), ulangi langkah pelatihan.

Download versi PDF disini

Jumat, 20 November 2009

Contoh Algoritma Perceptron dengan Java

Ini adalah pemrograman sederhana dengan menggunakan algoritma Perceptron untuk pembelajaran fungsi OR.

Silahkan download the code disini

Algoritma Pembelajaran Perceptron

Perceptron termasuk salah satu bentuk jaringan yang cukup sederhana. Algoritma ini sering digunakan untuk mengklasifikasikan input yang bersifat linearly separable. Jaringan syaraf perceptron mempunyai satu layer dan bobot­bobot sinaptik dan threshold yang bisa diatur. Selama proses pembelajaran, perceptron akan mengatur parameter secara continue selama iterasi, dan akan menghasilkan garis pemisah (Decision Boundar y) yang berfungsi untuk mengklasifikasikan himpunan stimulus yang diaplikasikan secara eksternal x 1, x 2, ... , x nke dalam salah satu dari dua kelas C1 dan C2. Kelas C1 adalah daerah positif dimana nilai = threshold (Φ), sedangkan kelas C2 adalah daerah negatif dimana nilai < threshold (Φ).

Secara teori, persamaan ini berfungsi untuk menciptakan decision boundar y yang membedakan kedua kelas secara akurat. Pengaturan threshold dapat mengatur pergeseran garis batasan keputusan.



Gb2. Perceptron dengan decision boundaries untuk mengklasifikasikan dua kelas positif dan negatif.

Algoritma perceptron adalah proses pembelajaran yang melakukan perbaikan bobot-bobotnya pada setiap epoch (proses perulangan 1 kali untuk setiap data set input-output). Pada setiap epoch, jaringan akan mengkalkulasi error yang terjadi, kemudian nilai error akan dijadikan parameter untuk proses perbaikan bobot sehingga tercipta nilai bobot yang baru. Proses ini akan berhenti jika error sudah mencapai nilai minimum atau perulangan sudah mencapai maximum epoch yang sudah ditentukan sebelumnya. Selain itu, proses pelatihan juga dipengaruhi oleh nilai laju pembelajaran (learning rate)

Sedikit penjelasan dari Om Wiki :
The Perceptron is a binary classifier that maps its input x (a real-valued vector) to an output value f(x) (a single binary value) across the matrix.

f(x) = \begin{cases}1 & \text{if }w \cdot x + b > 0\\0 & \text{else}\end{cases}

where w is a vector of real-valued weights and w \cdot x is the dot product (which computes a weighted sum). b is the 'bias', a constant term that does not depend on any input value.

The value of f(x) (0 or 1) is used to classify x as either a positive or a negative instance, in the case of a binary classification problem. The bias can be thought of as offsetting the activation function, or giving the output neuron a "base" level of activity. If b is negative, then the weighted combination of inputs must produce a positive value greater than − b in order to push the classifier neuron over the 0 threshold. Spatially, the bias alters the position (though not the orientation) of the decision boundary.

Since the inputs are fed directly to the output unit via the weighted connections, the perceptron can be considered the simplest kind of feed-forward neural network.

Rabu, 18 November 2009

Contoh Algoritma Hebb dengan Java

import java unit yang bersangkutan :
import java.awt.*;
import java.util.*;

=========================================================================
Class utama
public class Perceptron {
int dW[] = new int[2];
int Z[] = new int[3];
int db, y;
//int epoch = 0;
int lr = 1;
public Perceptron() {}

=========================================================================
Ini adalah bagian utama algoritma :
public void run(int a, int b, int c) {
y = a*dW[0] + b*dW[1] + db;
aktivasi (y);

if (y != c) {
dW[0] = dW[0] + lr * (c - y) * a;
dW[1] = dW[1] + lr * (c - y) * a;
} else {
dW[0] = dW[0];
dW[1] = dW[1];
}
}

=========================================================================
Fungsi untuk cek nilai output :
public void cek(int a, int b) {
Z[0] = dW[0] * a + dW[1] * b + db;
System.out.println("f("+Z[0]+") = "+ aktivasi(Z[0]));
}

=========================================================================
Fungsi Aktivasi :

public int aktivasi (int a) {
if (a>=0) {
return y=1;
} else {
return y=0;
}
}

=========================================================================
Fungsi Utama :
public static void main(String args[]) {
int X1[] ={0,0,1,1};
int X2[] = {0,1,0,1};
int Y[] = {0,1,1,1};

Perceptron o = new Perceptron();

for (int p=0;p<=3;p++) {
o.run(X1[p],X2[p],Y[p]);
}

for (int q=0;q<=3;q++) {
System.out.println("Hasil cek data ke-"+q);
o.cek(X1[q],X2[q]);
}
}
}

=========================================================================
Download all code disini

Algoritma Pembelajaran Model Hebb

Model ini pertama kali diusulkan oleh D.O Hebb pada tahun 1949. Metode ini adalah metode pengembangan dari metode McCullochPitts yang mengharuskan kita untuk menentukan bobot dan bias secara analitik (manual) sehingga akan sangat menyusahkan jika diterapkan pada permasalahan yang kompleks. Pada metode Hebb, pembelajaran dilakukan dengan memperbaiki nilai bobot secara continue.

Selengkapnya download file pdf disini

Apa yang diperlukan..?

Instal terlebih dahulu Java di komputer anda, download disini

Kemudian untuk IDE, anda bisa menggunakan Netbeans atau IDE lain kesayangan anda.
download Netbeans disini

Untuk Linux, selain Netbeans anda bisa menggunakan Geany, download disini

Selasa, 17 November 2009

Learning Algorithm

Salah satu hal yang menarik dari cabang ilmu ini adalah diimplementasikannya kemampuan belajar(learning). Proses ini dicapai dengan mengatur nilai bobotbobot yang menghubungkan antar neuron, sehingga diperoleh nilai bobot yang sesuai dengan pola dataset pelatihan. Berdasarkan algoritma yang digunakan dalam proses pembelajaran, terdapat lima algoritma learning, yaitu, Error Corection Learning, Boltzman Learning, Hebbian Learning, Competitive Learning dan Thorndike's Law. Sedangkan berdasarkan metode pembelajaran, terdapat 2 metode, yaitu, metode pembelajaran terawasi (Supervised Learning) dan metode pembelajaran yang tak terawasi (Unsupervised Learning). Pada penerapannya, metode pembelajaran terawasi mampu memberikan solusi yang lebih akurat daripada metode yang kedua. Metode Supervised Learning adalah metode pembelajaran yang mempunyai target tertentu, dan jaringan dianggap sudah mengenali pola jika mampu menghasilkan output yang sesuai dengan target melalui algoritma tertentu. Proses penyesuaian target dan output dihasilkan dari proses iterasi (perbaikan bobot) yang dilakukan secara terus menerus sehingga jaringan mampu mengenali pola atau penghentian dilakukan berdasarkan kriteria yang sudah ditetapkan sebelumnya. Metode Unsupervised Learning adalah metode pelatihan yang tidak memerlukan target. Perubahan bobot dilakukan berdasarkan parameter tertentu. Tujuan metode ini berupa pengelompokan (clustering) unit-unit input dalam suatu area tertentu.

Fungsi Aktivasi

Fungsi Aktivasi (μ) mendefinisikan nilai output dari sebuah neuron pada level aktivasi tertentu berdasarkan nilai output dari pengombinasi linier. Fungsi ini dipakai untuk menentukan keluaran suatu neuron. Ada beberapa jenis fungsi aktivasi yang sering dipakai, yaitu :

A. Hard Limit (Tangga Biner)
Fungsi ini sering dipakai oleh jaringan dengan lapisan tunggal (single neural network) untuk penyelesaian masalah yang bersifat linier. Output dari fungsi ini adalah pengkonversian input yang bernilai continue menjadi bilangan biner (0 atau 1).

B. Symetric Hard Limit (Bipolar)
Fungsi ini adalah pengembangan dari fungsi Hard Limit, hanya saja fungsi ini mempunyai output antara 1, 0 atau 1.

C. Threshold
Fungsi ini adalah fungsi hasil modifikasi dari fungsi Hard Limit dengan menambahkan nilai threshold ( Ѳ ).

D. Bipolar Threshold
Fungsi hasil pengembangan dari fungsi threshold, dimana fungsi ini memiliki 3 nilai keluaran, yaitu 1, 0 atau 1.

E. Linear (Identity)
Fungsi ini mempunyai nilai keluaran yang sama dengan nalai masukannya (y = x).

F. Sigmoid Biner
Fungsi ini sering digunakan dalam jaringan Backpropagation. Fungsi ini memiliki sifat nonlinear sehingga sangat baik untuk diterapkan dalam penyelesaian masalah yang kompleks. Output dari fungsi Sigmoid Biner berupa bilangan biner (0 atau 1) atau output berupa nilai-nilai yang berada pada interval 0 sampai 1.

G. Sigmoid Bipolar (Symetric Sigmoid)
Fungsi ini fungsi sigmoid yang mempunyai interval nilai antara 1 sampai 1.

Senin, 16 November 2009

STRUKTUR DASAR JST

Sel syaraf atau neuron terdiri dari 3 elemen penting :
1. Fungsi Aktivasi yang mengatur output dari setiap neuron.
2. Mempunyai jalur / sinapsis yang berhubungan satu dengan yang lain dimana setiap hubungan
memiliki weight / bobot.
3. Suatu fungsi tertentu untuk perhitungan nilai input (fungsi aktivasi)
.

Arsitektur Jaringan

a. Single Layer Network
Model ini adalah teknik matematis yang paling sederhana. Model ini pertama kali diperkenalkan oleh McCulloch dan Pitts.








Gb 1. Single Layer Network dengan 2 layer (input output)

Dalam jaringan ini, beberpa neuron(x) berhubungan langsung dengan layer output (y). Masingmasing
input terhubung dengan bobot (w) dan menghasilkan output yang berbeda tergantung
dari input yang ada. Selama proses learning, bobotbobot

akan dimodifikasi berdasarkan aturan
tertentu guna menghasilkan keakuratan yang tepat. Model ini sangat cocok untuk teknik
pengenalan pola dilihat dari tingkat kesederhanaannya.

b. Multi Layer Network
Jaringan ini merupakan pengembangan dari single layer network. Pada Model ini, jaringan
mempunyai layer tambahan atau yang sering disebut dengan hidden layer. Keunggulan model
ini adalah kemampuannya yang lebih untuk menghasilkan output yang lebih akurat dari model
pertama. Tentunya dengan penambahan jumlah layer, teknik matematisnya pun akan semakin
kompleks.




Gb 2. Multi Layer Network dengan 3 layer (input – hidden output)
c. Recurrent Networks
Arsitektur ini mempunyai alur untuk mengembalikan nilai output untuk memberikan sinyal ke
layer input (feedback loop). Model ini setidakny harus memiliki minimal satu feedback loop.
Recurrent Networks bisa ditingkatkan akurasinya dengan menambahkan hidden layer.

d. Competitive Layer Network
Arsitektur jaringan ini mempunyai bentuk yang unik, dimana semua neuron saling terhubung
satu dengan yang lain.



Gb 4. Competitive Layer Network

Pengantar JST (Jaringan Saraf Tiruan)

Jaringan Syaraf Tiruan (JST) atau dalam bahasa inggris disebut Artificial Neural Networks (ANN) adalah sebuah metode yang sering diterapkan untuk teknik optimasi atau pengenalan pola (pattern recognition) dalam usaha untuk memecahkan suatu permasalahan. JST adalah salah satu metode yang termasuk dalam beberapa metode yang sudah diperkenalkan dalam bidang Soft Computing (SC). JST adalah suatu arsitektur jaringan yang terinspirasi oleh sistem kerja syaraf manusia (otak) dalam melaksanakan tugas. Para ilmuwan terinspirasi dengan sistem kerja otak yang mampu menangani berbagai permasalahan mulai dari yang sederhana sampai permasalahan yang kompleks dimana sebuah kemampuan learning yang efektif sangat dibutuhkan. Otak manusia dipenuhi selsel yang disebut neuron yang terhubung satu dengan yang lain. Manusia dewasa memiliki sekitar 100 milyar sel syaraf dan setiap sel syaraf terhubung dengan sekitar seribu hingga seratus ribu sel syaraf yang lain (sumber Tettamanzi.A, Tommasini.M, 2001, “Soft Computing”, Germany). Sistem syaraf yang sangat rumit ini mampu memberikan manfaat yang luar biasa bagi manusia. Sebagai contoh, manusia mampu mengenali sesuatu hanya dengan mendengar suaranya saja, atau hanya dengan melihat sebagian saja dari objek (informasi tidak lengkap). Kemudian, otak mempunyai “memori” yang mampu dibangkitkan kembali utuk mengenali objekobjek
yang telah lalu.

Untuk lebih lengkapnya, download file berikut :
http://dc168.4shared.com/download/153372235/7ce8b5bd/Pengantar_JST.rar
Java bisa kok buat programming ANN