Showing posts with label Artificial Intelligence. Show all posts
Showing posts with label Artificial Intelligence. Show all posts

Wednesday, 29 April 2009

Committee Neural Network


Salah satu metode dalam menyelesaikan suatu komputasi yang kompleks adalah dengan membagi proses komputasi menjadi beberapa bagian sederhana untuk kemudian menggabungkan hasil komputasi dari beberapa bagian tersebut. Dalam pembelajaran terbimbing (supervised learning), penyederhanaan komputasi dilakukan dengan mendistribusikan tugas pembelajaran kepada beberapa ahli (expert) yang mana akan membagi himpunan input menjadi beberapa sub himpunan input. Kombinasi ini lah yang akan menghasilkan apa yang disebut mesin komite (committee machine) atau lebih umum dengan committee neural network.

Pada dasarnya metode ini meleburkan pengetahuan yang diperlukan oleh beberapa expert yang terdapat dalam sistem untuk mendapatkan keputusan keseluruhan yang dapat dicapai oleh salah satu dari expert tersebut secara sendirian. Ide committee machine ini mulai dikenalkan oleh Nilsson pada tahun 1965. JST yang dibangun diasumsikan terdiri dari lapisan perceptron yang diikuti oleh perceptron pengambil keputusan pada lapisan berikutnya. Committee neural network adalah penafsir universal yang secara umum dapat diklasifikasikan menjadi dua kategori berdasarkan strukturnya, yaitu:
1. Struktur Statis
Pada tipe ini, tanggapan dari beberapa penafsir (expert) dikombinasikan dengan cara yang tidak melibatkan sinyal masukan karena sifat statisnya tersebut. Kategori ini terdiri atas dua metode yaitu:
- Ensemble averaging, yaitu dengan mengkombinasikan secara linier keluaran expert yang berbeda untuk mendapatkan keluaran keseluruhan. Pada metode ini tiap expert dilatih dengan data pelatihan yang sama, namun dengan kondisi inisial pelatihan yang berbeda. Metode yang paling sederhana adalah stacked generalization, yaitu ketika tiap expert dilatih secara independen untuk kemudian digunakan secara bersamaan, dengan konfigurasi diagram blok seperti pada gambar 1.

Saturday, 28 March 2009

Programming Backpropagation Neural Network Using MATLAB


Salam;

Bikin program buat melatih dan menguji Neural Network (NN) kalo pake' NNTools-nya Matlab gak sulit kok, cukup simple. Beberapa tipe algoritma NN yg cukup familiar udah ada di Matlab, mulai Hebb, Adaline, Perceptron, sampe Probabilistic NN juga ada. Di bawah ini ada langkah yang mungkin bisa dicoba buat yang lagi belajar coding NN, especially Backpropagation Neural Network (BPNN) pake' Matlab by .m file editor, lets try;

Buat nginputkan data, kita bisa pake matrix yang berisi data input dan target NN kita nanti, kita bisa pake' 1 matrix yang dibagi2, ato masing2 1 matrix buat input n data. Tlg diingat, matrix input n target harus di-transpose, biar sesuai buat format itungan fungsi NN ntar. Misalnya kita punya matrix "Data" yang berisi data input n target buat NN kita, kita bisa membagi matrix itu utk variabel input dan target kita, just like these;%%%%% Data Input %%%%%Input = Data(1:m,1:n)';Target = Data(1:m,n+1:o)';

Sebelum data yg kita punya diproses, kita perlu melakukan proses normalisasi dan preprocessing dulu, biar nilai masing2 data bisa diitung dengan nilai yg lbih kcil tanpa khilangan karakteristiknya sendiri, just like these;
%%%%% Preprocessing / Normalisasi %%%%%
[Inputn,meanIn,stdIn,Targetn,meanT,stdT] = prestd(Input,Target);
those variables means :
Inputn = normalisasi
InputmeanIn = mean InputstdIn = standar deviasi Input
Targetn = normalisasi
TargetmeanT = mean TargetstdT = standar deviasi Target

Friday, 27 February 2009

Lets Study Backpropagation Neural Network


Algoritma pelatihan Backpropagation Neural Network (BPNN) pertama kali dirumuskan oleh Werbos dan dipopulerkan oleh Rumelhart & Mc.Clelland. Backpropagation neural network merupakan tipe jaringan saraf tiruan yang menggunakan metode pembelajaran terbimbing (supervised learning). Pada supervised learning terdapat pasangan data input dan output yang dipakai untuk melatih JST hingga diperoleh bobot penimbang (weight) yang diinginkan. Penimbang itu sendiri adalah sambungan antar lapis dalam JST. Algoritma ini memiliki proses pelatihan yang didasarkan pada interkoneksi yang sederhana, yaitu apabila keluaran memberikan hasil yang salah, maka penimbang dikoreksi agar galat dapat diperkecil dan tanggapan JST selanjutnya diharapkan dapat mendekati nilai yang benar. BPNN juga berkemampuan juga berkemampuan untuk memperbaiki penimbang pada lapis tersembunyi (hidden layer).
Secara garis besar BPNN terdiri atas tiga lapis (layer) yaitu lapis masukan (input layer) xi, lapis tersembunyi (hidden layer) yj, dan lapis keluaran (output layer) zk. Lapis masukan dan lapis tersembunyi dihubungkan dengan penimbang wij dan antara lapis tersembunyi dan lapis keluaran dihubungkan oleh penimbang w’jk. Pada pelatihan BPNN, ketika JST diberi pola masukan sebagai pola pelatihan maka pola tersebut akan menuju ke unit pada lapis tersembunyi untuk diterusan pada unit yang berada pada lapis keluaran. Keluaran sementara pada lapis tersembunyi uj akan diteruskan pada lapis keluaran dan lapis keluaran akan memberikan tanggapan yang disebut sebagai keluaran sementara u’k. Ketika u’k ≠ ok dimana ok adalah keluaran yang diharapkan, maka selisih (error) keluaran sementara u’k akan disebarkan mundur (backward) pada lapis tersembunyi dan diteruskan ke unit pada lapis masukan. Oleh karena itu proses tersebut disebut propagasi balik (backpropagation) dimana tahap pelatihan dilakukan dengan merubah penimbang yang menghubungkan unit dalam lapis JST ketika diberi umpan maju dan umpan balik. Untuk mempercepat proses pelatihan digunakan parameter laju pelatihan (learning rate) yang nilainya berada pada kisaran 0-1. Selain parameter laju pelatihan, untuk mempercepat proses pelatihan dapat digunakan parameter tambahan berupa momentum yang nilainya dijaga antara 0.5-0.9. Ketika proses pelatihan selesai dan JST dapat digunakan untuk menyelesaikan masalah, tahap tersebut disebut sebagai tahap penggunaan yang disebut mapping atau pemetaan.
Gambar lapis dan aliran sinyal dalam algoritma BPNN