You are on page 1of 6

c 

  c

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.

nput 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 might also like