P. 1
Artificial Neural Network

Artificial Neural Network

|Views: 695|Likes:
Published by rendi_otto_diesel
Tugas Kuliah Saya
Tugas Kuliah Saya

More info:

Published by: rendi_otto_diesel on Jul 04, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

04/10/2013

pdf

text

original

Artificial Neural Network (ANN

)
Rendi Kurniawan (0606073480)

Definisi : Artificial Neural Network (ANN) dalam bahasa Indonesia disebut juga Jaringan Saraf Tiruan (JST) atau pada umumnya disebut juga hanya Neural Network adalah sebuah sistem jaringan yang dimodelkan berdasarkan sistem jaringan saraf manusia. Tujuan dari dibuatnya Neural Network adalah membuat sebuah sistem yang dapat belajar sendiri sesuai dengan data dan kondisi lingkungan yang kita berikan serta dapat memodelkan data statistic (curve fitting) non-linier, permodelan yang kompleks tersebut menghubungkan antara input dan output untuk menemukan pola-pola data, seperti metode curve fitting. Keuntungan : 1. Neural Network dapat mengerjakan permasalahan non-linier, maupun linier. 2. Ketika salah satu elemen dari neural network gagal, dia akan terus lanjut, karena bekerja secara parallel. 3. Neural Network dapat belajar dan tidak perlu diprogram ulang. 4. Neural Network dapat diimplementasikan dimana saja. 5. Neural Network dapat diimplementasikan tanpa banyak masalah. Kerugian : 1. Neural Network membutuhkan proses training untuk dioperasikan. 2. Arsitektur Neural Network berbeda dari arsitektur mikroprosesor. 3. Membutuhkan frekuensi yang tinggi (high processing time) untuk sistem neural network skala besar. Neural Network bekerja pada 2 mode, yang pertama adalah proses training dan yang kedua adalah proses execution . Pada proses training kita akan melatih sistem dengan memberinya sebanyak mungkin contoh data input serta data output yang akan dihasilkan oleh data input tersebut. Contoh, misalkan kita memberikan data training pada sistem untuk proses pembagian; Data Input_1= 8 Data Input_2 = 2 Output = 4

Maka, kita telah mengajarkan pada sistem apabila inputan terdiri dari angka 8 dan 2 , maka outputnya adalah 4 . Akan tetapi, jika hanya diberikan satu contoh, sistem tidak akan belajar dengan baik. Sebaiknya diberikan data training sebanyak mungkin, agar sistem dapat belajar dengan baik dan handal. Struktur asitektur dari Neural Network pada umumnya terdiri dari 3 layer, yang menjadi ciri khas dari sistem NN ini, yaitu Input Layer , Hidden Layer , dan Output Layer . Tiap Layer terdiri dari unit-unit node yang jumlahnya dapat kita tentukan sendiri, bias dibayangkan bahwa tiap node pada sistem Neural Network ibaratnya seperti neuron pada otak manusia.

Input Layer : Input Layer, merupakan data-data yang kita masukkan sebagai data training pada sistem ANN. Banyaknya jumlah node pada input layer tergantung pada jumlah data input yang telah kita masukkan ke dalam sistem. Hidden Layer : Jumlah node pada hidden layer sangat bervariasi, akan tetapi pada umumnya jumlah node pada hidden layer adalah 5 yang dianggap sudah mencukupi untuk memecahkan berbagai macam kasus. Ada juga teori yang dapat menentukan banyak-nya node pada hidden layer denga tepat. Output Layer : Banyak-nya node pada output layer tergantung dari sistem ANN itu sendiri. Data output juga termasuk dari data training yang sebelumnya telah diberikan.

Konsep dari sistem ANN yang penting adalah nilai Error minimum yang diharapkan. Pada saat ANN di-inisialisasi akan dibangkitkan nilai random untuk koneksi antar node dari suatu layer dengan layer sesudahnya, jadi antar node-node di hidden layer saling terkoneksi satu sama lain dengan node-node di hidden layer, dan antar node-node di hidden layer akan saling terkoneksi satu sama lain dengan node-node pada output layer. Nilai koneksi antar node tersebut sering disebut 'bobot'. Nilai bobot inilah yang akan menentukan kecerdasan suatu

sistem. Pada saat proses training, nilai bobot tersebut akan terus berubah sehingga didapatkan kesesuaian antara input dengan output dengan Error minimum. Dengan kata lain, pada proses training kita akan menentukan nilai minimum error yang bisa di tolerir oleh sistem, sistem tidak akan memberikan kepastian jawaban untuk suatu kasus yang tidak pernah dilatihkan kepadanya, pasti ada nilai Error dari jawaban sistem dengan jawaban yang seharusnya, nilai Error tersebut yang harus di-definisikan oleh kita sebelum melatih sistem sehingga sistem bisa menjawab dengan tingkat kebenaran semaksimal mungkin (misalnya : tingkat kebenaran sistem 99,9999% dengan nilai Error 0.0001).

Contoh Aplikasi ANN penjumlahan sederhana dengan menggunakan bahasa C di OS Linux: Dengan menggunakan library, dari FANN (Fast Artificial Neural Network) fann.h
[Cyb3rh3b@pinguin.stttelkom.ac.id]$ cat sum_training.c #include "fann.h" int main(int argc, char *argv[]) { /* Ditentukan oleh kita, ada aturannya pada teori dasar ANN */ const float connection_rate = 1; const float learning_rate = 0.7; /* Jumlah input pada sistem penjumlahan */ const unsigned int num_input = 2; /* Jumlah output pada sistem penjumlahan */ const unsigned int num_output = 1; /* Jumlah layer: 1 input layer, 1 hidden layer, 1 output layer */ const unsigned int num_layers = 3; /* Jumlah node pada hidden layer */ const unsigned int num_neurons_hidden = 4; /* Minimal Error yang dapat ditolerir dari sistem */ const float desired_error = 0.000001; /* Jumlah max pengulangan (Epoch) pada proses training apabila Minimal Error didapat */ const unsigned int max_iterations = 500000; const unsigned int iterations_between_reports = 1000;

/* Proses inisialisasi ANN dengan kriteria parameter diatas (Jumlah layer, Error minimal, dll) */ struct fann *ann = fann_create(connection_rate, learning_rate, num_layers,num_input, num_neurons_hidden, num_output); /* Baca data latih dari file sum.data dan lakukan proses training terhadap seluruh data latih tersebut */ fann_train_on_file(ann, "sum.data", max_iterations, iterations_between_reports, desired_error); /* Simpan nilai bobot hasil training ke suatu file sehingga saat proses eksekusi nanti tidak perlu dilakukan training lagi */ fann_save(ann, "sum_data.net"); fann_destroy(ann); return 0; }

Kemudian compile file sehingga menghasilkan program executable dengan nama sum_training. Langkah selanjutnya adalah membuat file sum.data yang berisikan data training untuk sistem tersebut.
[Cyb3rh3b@pinguin.stttelkom.ac.id]$ cat sum.data 10 2 1 0.1 0.1 0.2 0.2 0.3 0.5 0.2 0.5 0.7 0.8 0.1 0.9 0.6 0.2 0.8 0.7 0.2 0.9 0.1 0.2 0.3 0.4 0.1 0.5 0.5 0.4 0.9 0.5 0.1 0.6

Pada baris pertama menunjukan informasi data latih: 10 -> ada 10 jenis data latih 2 -> jumlah input 1 -> jumlah output

Baris selanjutnya menunjukan pasangan input dan output, misal pada baris kedua dan ketiga: 0.01 0.01 -> Input ke-1 dan Input ke-2 0.02 -> Output Begitu seterusnya. Data yang dimasukan pada sistem ANN umumnya harus dinormalisasi terlebih dahulu sehingga nilainya berkisar antara 0 s/d 1 (tidak boleh lebih dari 1). Sistem akan membaca seluruh data latih tersebut dan diulang maksimal sebanyak 500000 kali (dalam ANN disebut Epoch) atau jika kondisi Minimum Error (0.000001) telah ditemukan. Setelah proses training dilakukan, maka seluruh nilai bobotnya akan disimpan pada file (dalam contoh program akan di simpan pada file sum_data.net). Langkah selanjutnya adalah melakukan proses testing terhadap hasil latihan sistem dengan memberikannya test berupa dua buah input dan melihat hasil outputnya, berikut program sederhana untuk test hasil latihan sistem diatas:
[Cyb3rh3b@pinguin.stttelkom.ac.id]$ cat sum_test.c #include <stdio.h> #include "floatfann.h" int main() { fann_type *calc_out; fann_type input[2]; /* Load data hasil training yang sebelumnya telah di simpan pada file */ struct fann *ann = fann_create_from_file("sum_data.net"); input[0] = 0.3; /* Test Input 1 */ input[1] = 0.4; /* Test Input 2 */ calc_out = fann_run(ann, input); printf("sum test (%f,%f) -> %f\n",input[0], input[1], *calc_out); fann_destroy(ann); return 0; }

Program tersebut akan meload data hasil training dari file "sum_data.net" dan melakukan test dengan data input "0.3" dan "0.4", bisa dilihat bahwa data input "0.3" dan "0.4" tidak terdapat diantara data latihan yang diberikan pada sistem, dan diharapkan sistem dapat melakukan

operasi penjumlahan dari kedua input tersebut. Compile code diatas menjadi program yang executable:
[Cyb3rh3b@pinguin.stttelkom.ac.id]$ gcc -lm -lfann sum_test.c -o sum_test Berikut hasil output dari eksekusi program sum_tes: [Cyb3rh3b@pinguin.stttelkom.ac.id]$ ./sum_run sum test (0.300000,0.400000) -> 0.707560

Hasil outputnya bernilai 0.707 ~ 0.7 (mendekati 0.7). Seperti yang dijelaskan diatas bahwa jawaban dari sistem ANN tidak pasti benar 100%, ada faktor Errornya, sehingga nilainya berupa nilai pendekatan. Tingkat keberhasilan sistem ANN juga tergantung dari jenis data latih serta proses training yang diberikan, jika pada saat proses training kita memberikan data latih yang kurang akurat atau jumlahnya kurang memadai maka tingkat kebenaran dari ANN tidak akan bagus, semua tergantung bagaiman cara kita melatih sistem tersebut.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->