Artificial Neural Networks

9 10 2008

Neural Networks (Artificial Neural Networks atau Jaringan Saraf Tiruan) merupakan sudah metode softcomputing atau data mining yang banyak digunakan untuk melakukan pengklasifikasian dan prediksi. Artificial Neural Networks (ANN) pertama kali dikembangkan oleh McCulloch dan Pitts (1943), dan sekarang ini telah banyak dikembangkan menjadi bentuk ANN yang bermacam-macam. Perubahan bentuk ini dapat berupa perubahan activation function, topology, learning algorithm dan lain-lain.

Salah satu algoritma yang sering digunakan dalam melakukan learning terhadap ANN adalah Backpropagation algorithm. Algoritma ini dikembangkan oleh Rumelhart dan McClelland (1986). Sebuah neural networks umumnya terdiri dari input, output dan hidden layer. Single layer ANN merupakan bentuk yang paling populer, tetapi seperti gambar di bawah, sebuah ANN juga bisa mempunyai lebih dari single hidden layer.

Neural Networks Diagram

Dalam algoritma Backpropagation, proses learning dilaksanakan dengan, pertama, melakukan proses feed forward dengan mengirimkan signal ‘forward’. Adapun proses yang dilakukan dalam proses feed forward ini untuk sebuah neuron digambarkan dalam gambar berikut ini.

Activation of Single Neuron

Seperti yang digambarkan, kegiatan yang dilakukan dalam proses feed forward adalah menghitung Weighted Sum dan mengirimkan jumlah tersebut ke suatu Activation Function sehingga menghasilkan Output. Adapun rumus yang digunakan untuk menghitung weighted sum adalah:

A_j(X,W) = SUM(i=1 to n) x_i * w_ji

dimana:
j : indeks dari output
i : indeks dari input
x_i : input ke i
w_ji : weight dari input ke i ke output ke j

Untuk Activation Function, ada banyak yang bisa digunakan, tetapi yang paling banyak digunakan adalah Fungsi Sigmoid yang dirumuskan sebagai berikut:

O_j(X,W) = 1 / (1 + exp(A_j(X,W)))

dimana:
O_j(X,W) : output ke j

Dengan sifat dari fungsi sigmoid ini, output dari neuron dapat dilakukan dengan lebih smooth. Selanjutnya apabila semua output sudah didapatkan, yang perlu dilakukan adalah membandingkan antara output yang dikeluarkan dari perhitungan dengan output riilnya (perlu diingat bahwa ANN merupakan salah satu metode supervised classification, dimana output riil akan menjadi bagian dalam proses pemodelan. Dalam hal ini, output yang dihasilkan dari perhitungan akan dicocokan dalam proses learning dengan output riilnya). Adapun rumus yang digunakan untuk menghitung perbedaan tersebut adalah sebagai berikut:

E_j(X,W,d) = (O_j(X,W) – d_j)^2

dimana:
E_j(X,W,d) : error/perbedaan antara hasil output perhitungan dengan output riil
d_j : output riil ke j

Secara umum, perbedaan output perhitungan dan output riil dihitung dengan rumus:

E(X,W,d) = SUM(j=1 to m) (O_j(X,W) – d_j)^2

Setelah mendapatkan perbedaan output tersebut, apabila perbedaan yang ada masih di atas threshold, maka error yang ada di-‘propagate’ backward dengan melakukan adjustment terhadap weight yang ada pada networks. Adapun metode yang bisa digunakan adalah metode gradient descendent dengan rumus berikut ini:

Diff w_ji = – eta dE/dw_ji

dimana:
eta : a constant
dE/dw_ji : the derivative of error E with respect to the weight w_ji

Di sini goal yang ingin dituju, bagaimana caranya agar weight yang didapatkan dapat meminimalisasikan error yang muncul. Untuk keperluan tersebut, sebelum menghitung langsung pengaruh weight terhadap error, kita perlu menghitung pengaruh output penghitungan terhadap error dengan rumus sebagai berikut, yang merupakan penurunan dari derivative dari error terhadap output perhitungan:

dE/dO_j = 2 * (O_j – d_j)

Selanjutnya adalah melihat pengaruh weight terhadap output perhitungan yang dihitung dengan nilai derivative dari output perhitungan terhadap weight sebagai berikut:

dO_j/dw_ji = dO_j/DA_j * dA_j/dw_ji = O_j*(1-O_j)*x_i

Sehingga,

dE/dw_ji = dE/dO_j * dO_j/dw_ji = 2 * (O_j – d_j) * O_j * (1 – O_j) * x_i

Dan akhirnya,

Diff w_ji = – 2 * eta * (O_j – d_j) * O_j * (1 – O_j) * x_i

Apabila di depan layer yang bersangkutan masih terdapat layer yang ingin dihitung atau di-adjust weightnya, maka proses di atas perlu diulang dengan menganggap bahwa input pada layer yang telah diadjust weightnya sebagai output dari layer yang sedang dihitung dengan rumus:

Diff v_ik = – eta * dE/dv_ik = – eta * dE/dx_i * dx_i/dv_ik

Seperti yang dijelaskan di atas rumus ini sebenarnya sama dengan dengan rumus sebelumnya, tetapi di sini weightnya disimbolkan dengan v_ik dan outputnya disimbolkan dengan x_i.

Referensi:
McCulloch, W. and Pitts, W. (1943). A Logical Calculus of the Ideas Immanent in Nervous Activity. Bulleting of Mathematical Biophysics, Vol. 5, pp. 115-133.
Rumelhart, D. and McClelland, J. (1986). Parallel Distributed Processing. MIT Press, Cambridge, Massachusset, USA.


Actions

Information

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s




%d bloggers like this: