Sabtu, 31 Desember 2011

Tulisan Singkat di Penghujung Tahun 2011

Saat ini udara kota Turin begitu dinginnya, hampir nol derajat. Ya, tampaknya winter ini semakin hari semakin dingin saja. Suasana malam yang dingin ini menjadi malam pergantian tahun menuju 2012.

Ini adalah malam tahun baru kedua saya di Italia. Kembali ke tahun lalu, sebuah memori seakan bangkit lagi. Adalah Piazza Vittorio Venetto, sebuah alun-alun terbesar di kota Turin, tempat dimana ribuan orang berkumpul untuk merayakan pergantian tahun. Di depan piazza ini, terbentang sungai terbesar di kota Turin, namanya sungai Po. Di seberang sungai inilah sekelumit kembang api beserta kelengkapannya dipasang. Seolah-olah tidak peduli karena udara begitu dinginnya, rasa ingin tahu untuk menikmati suasana pergantian tahun di kota ini begitu besarnya. Datang dan menunggu di pinggir sungai sampai akhirnya sejumlah kembang api diluncurkan tepat pukul 00.00. Hanya sendiri saat itu, tiada berkawan diantara ribuan orang yang berkumpul. Hehehehe...

Tahun ini begitu berbeda. Malam tahun baru ini cukup saya rayakan dengan hanya tinggal di apartemen yang hangat dan jauh dari keramaian. Menulis blog ini sambil tiduran dan .... sebentar lagi akan tidur. Hehehe... Namun tetap, harapan akan perubahan ke arah positif di tahun depat masih belum padam :)

Felice anno nuovo 2012!!!
Selamat tahun baru untuk teman-teman semua ^^

Ciao ciao ...

Senin, 26 Desember 2011

O My Dear Lord ...

O Sri Krishna, Tuhan yang hamba cintai ...
Maafkanlah hamba
Begitu banyak dosa yang telah hamba perbuat

O yang terkasih, berilah hamba kekuatan
Agar hamba menjadi lebih baik
Jangan biarkan hamba terjatuh lagi, Ya Tuhan

Radha Syamasundara, karuniailah cinta kasihMu
Hamba menderita Ya Tuhan...

Radha Rasesvara, bersihkanlah diri hamba
Hamba sudah sangat ternoda

Radha Ramana ...
Tumbuhkanlah karunia berupa bhakti dalam hati hamba
Sesungguhnya, Engkaulah kekasih kekal hamba, Ya Tuhan

Minggu, 25 Desember 2011

Jaringan Saraf Tiruan Menggunakan Neural Network Toolbox™ Matlab

Halo teman-teman… kali ini saya akan mencoba mengenalkan Jaringan Saraf Tiruan (JST) menggunakan Matlab dan Neural Network Tollbox. Mmmmm…. Ada satu syarat yang wajib untuk teman-teman lakukan, yaitu menginstal Matlab dan toolbox-nya. Program dalam tulisan ini dibuat dengan spesifikasi sebagai berikut:

Matlab Version 7.8 (R2009a)
Neural Network Toolbox Version 6.0.2 (R2009a)

Untuk mengecek versi yang terinstal di komputer teman-teman, bisa ketik perintah "ver" di command window pada Matlab

Mungkin sintax dalam program ini akan sedikit berbeda jika teman-teman memakai Matlab versi sebelum 7.6. Anyway, saya berasusmsi kalau teman-teman sudah memiliki pengetahuan dasar mengenai JST. Yuppp…. mari kita lanjutkan topik kita…. ^_^

Kasus :

Bayangkan jika kita mempunyai sekumpulan angka yang kita berikan nama matriks P, sebagai berikut:
P = [1 2 3 4 5 6 7 8 9 10]
Dan kita juga punya matriks lain, sebut matriks T :
T = [6 12 14 21 27 29 36 41 44 51]

Matriks P adalah input untuk JST kita dan T adalah targetnya. Dengan kata lain, kita akan mengajari P agar mencapai hasil seperti T. Paham, bukan? ^_^

Ada berbagai jenis algoritma dalam JST. Nah, untuk kasus ini saya akan menggunakan Backpropagation.

Neural Network Toolbox
Sekarang mari kita bermain-main menggunakan Neural Network Toolbox.

 
1.        Mari kita bangun arsitektur jaringannya.
Syntax:

net = newff(P,T,[S1 S2...S(N-l)],{TF1 TF2...TFNl},BTF,BLF,PF,IPF,OPF,DDF)

Penjelasan:
Mmmm…. Sintaknya panjang amat. Untuk kesempatan kali ini, kita akan mengurangi input dan hanya menggunakan beberapa saja. Parameter input yang lain kita biarkan pada nilai default-nya. Ok..? Nah, kita reduksi menjadi seperti ini :

net = newff(P,T,[S1 S2...S(N-l)])

P dan T masing-masing adalah input dan Target JST kita, sedangkan S1 S2...S(N-l) adalah jumlah neuron dalam layer JST. Asumsi kita membentuk arsitektur sebagai berikut :

 

Kita mempunya 2 layer tersembunyi (hidden layer), dan kita namai HL 1 dan HL2. HL 1 dan 2 masing-masing memiliki jumlah neuron 3 dan 2.

Nah, sampai saat ini, kita dapat memprogram JST kita sebagai berikut:

% input
P = [1 2 3 4 5 6 7 8 9 10];
% target
T = [6 12 14 21 27 29 36 41 44 51];
% bangun JST
JST = newff(P,T,[3 2]);

2.        Kita bisa mensimulasikan JST kita, karena pada saat ini Matlab sudah membangkitkan nilai-nilai bias dan bobot awal pada tiap-tiap konelsi dan neron. 

Sintax:

Y = sim(JST,P);

Hasilnya dapat kita plot dengan perintah berikut:

plot(P,T,'*',P,Y,'o');

    
Target yang ingin kita capai adalah lambang bintang (*), dan hasil simulasi diperlihatkan dengan tanda  lingkaran (o).

       * Jangan khawatir kalau hasilnya akan berbeda, karena Matlab akan membangkinkan bilangan acak.      Dengan kata lain, bobot dan bias yang dihasilkan akan berbeda, sehingga hasil akhirnya akan berbeda pula.

Sampai saat ini kita telah menulis sintak berikut:


% input
P = [1 2 3 4 5 6 7 8 9 10];
% target
T = [6 12 14 21 27 29 36 41 44 51];
% bangun JST
JST = newff(P,T,[3 2]);
% simulasikan JST
Y = sim(JST,P);
%plot hasilnya
plot(P,T,'*',P,Y,'o');

 Well……. Dengan kata lain, JST kita belum pintar… kita harus melatihnya agar pintar.

3.        Sekarang kita akan melatih JST kita agar pintar dan mencapai target yang diinginkan :)
Sintak yang kita gunakan sebagai berikut:

JST.trainParam.epochs = 5;
JST = train(JST,P,T);
       
Maksud sintak ini adalah kita akan melatih JST sebanyak 5 iterasi (epoch) maju-mundur (backpropagation). Kemudian akan muncul jendela nntraintool.

Untuk saat ini, mari kita abaikan dulu jendela ini. Kita lanjut ke langkah berikutnya.

4.        Sekarang kita simulasikan dan plot hasil pelatihan tadi.
Sintak :
Y = sim(JST,P);
plot(P,T,'*',P,Y,'o');

Diperoleh hasil seperti berikut :
 


Wah.. sepertinya JST kita sudah semakin cerdas. Tanda lingkaran sudah mendekati tanda bintang. Namun belum sepenuhnya mencapai target yang diinginkan. Sampai saat ini, sintak yang sudah kita buat adalah sebagai berikut:


% input
P = [1 2 3 4 5 6 7 8 9 10];
% target
T = [6 12 14 21 27 29 36 41 44 51];
% bangun JST
JST = newff(P,T,[3 2]);
% simulasikan JST
Y = sim(JST,P);
%plot hasilnya
plot(P,T,'*',P,Y,'o');
%latih JST sebanyak 5 epoch
JST.trainParam.epochs = 5;
JST = train(JST,P,T);
%simulasikan JST setelah pelatihan
Y = sim(JST,P);
plot(P,T,'*',P,Y,'o');

 
5.        Agar JST kita lebih pintar, kita harus melatihnya lebih banyak lagi. Sekarang kita naikkan epoch menjadi 30 dan selanjutnya kita latih dan simulasikan lagi.

Syntax :
    JST.trainParam.epochs = 30;
    JST = train(JST,P,T);
    Y = sim(JST,P);
    plot(P,T,'*',P,Y,'o');

     Hasil akhir yang diperoleh sebagai berikut:



Sintak lengkapnya sebagai berikut :

   % input
   P = [1 2 3 4 5 6 7 8 9 10];
   % target
   T = [6 12 14 21 27 29 36 41 44 51];
   % bangun JST
   JST = newff(P,T,[3 2]);
   % simulasikan JST
   Y = sim(JST,P);
   %plot hasilnya
   plot(P,T,'*',P,Y,'o');
   %latih JST sebanyak 5 epoch
   JST.trainParam.epochs = 5;
   JST = train(JST,P,T);
   %simulasikan JST setelah pelatihan
   Y = sim(JST,P);
   plot(P,T,'*',P,Y,'o');
   %naikkan epoch
   JST.trainParam.epochs = 30;
   JST = train(JST,P,T);
   Y = sim(JST,P);
   plot(P,T,'*',P,Y,'o');

Apa yang saya tulis adalah pengetahuan yang sangat dasar mengenai JST. Begitu pula dari sisi pemrograman. Untuk menghasilkan performance yang lebih baik, teman-teman dituntut untuk belajar lebih lanjut lagi dengan mengatur berbagai parameter dari JST tersebut, baik melalui pengaturan arsitektur JST, pengaturan bobot dan bias awal, momentum, metode pelatihan dan lain-lain.
       
Selamat belajar ^_^


Salam hangat..
Torino, 25 Desember 2011, 09.44PM


     

Dear Lord...

Natal tahun ini

Wah... Tidak terasa. Hari ini natal kedua saya sejak melanjutkan studi di kota ini, Turin, Italia.

Teringat tahun lalu. Tinggal sendiri di apartemen lantai 8. Teman satu apartemen pulang ke Indonesia. Seperti biasa, udara winter sangat dingin... Yg bikin berkesan karena heater di apartemen mati! Hahaha.. Dinginnya mantap, sampe ke tulang rusuk. Belum lagi harus belajar karena akan ujian stelah liburan. Maklum, semester pertama masih deg-degan. Hahaha. Terpaksa belajar dengan tubuh terbungkus selimut tebal! Belajarnya tidak di meja belajar, tapi di atas kasur. Hehehe. Tapi tidak dapat dipungkiri, apartemen ini adalah salah satu yang terbaik! Apalagi dr segi ketenangan dan lokasinya yang strategis.

This year is totally different!! Natal kedua ini benar-benar berbeda. Setelah pindah apartemen, sekarang dapat di lantai 1. Heater menyala dengan panasnya. Flatmate teman-teman dari vietnam. Di rumah ramai dan penuh canda tawa, saling ejek satu sama lain. Hehehe..

Yup.. Tetap bersyukur atas segala nikmat karunia ini :)

Torino, 25 Desember 2011, 08.41 PM

Kamis, 22 Desember 2011

Turin pagi ini

Hari ini, seperti biasa, udara di kota ini begitu dingin. Saat tulisan ini dibuat, suhu menunjukkan 2,3 derajat celcius. Mmmm.... Masih seperti hari-hari sebelumnya, hari inipun saya berharap salju segera turun. hehehe.. kangen sama salju euy!!!

Wah, tahun ini salju terancam tidak turun nih T_T
Denger-denger sih bakalan turun Januari tahun depan. well.... coba saya buktikan...

Salam hangat,
Torino, 22 Desember 2011

Water Filling ... My new blog's name

Mmmm.. lama sekali tidak memposting sesuatu di blog ini. Lama sudah terbengkalai. Parahnya, saya lupa alamat email dan password untuk login ke blog ini! Wuih... pemilik blog yang aneh. ck.ck.ck..

Kasihan juga rasanya. Pagi ini, saya sedikit merubah penampilannya.... ganti layout, ganti warna, ganti jenis tulisan, dan..... yang paling mendasar berganti alamat blog!!! hahaha....
Moving from 'hasrat pujangga' to 'water filling' ...

Mmm... why water filling was chosen? well... alasannya simple. Saya enak mendengarnya. hehe.. Dan, dari mana nama ini muncul? Istilah water filling saya dapatkan karena mengikuti kuliah Communication System. Water filling adalah suatu metode untuk mendistribusikan power pada suatu channel berdasarkan atenuasi yang terjadi di channel tersebut. Sistem ini diterapkan pada sistem komunikasi menggunakan metode OFDM (Orthogonal Frequency-division Multiplexing). OFDM adalah sistem untuk mengirimkan data menggunakan multiple frequency carrier. Untuk memperoleh sistem distribusi yang tepat, power didistribusikan seperti memasukkan air ke tiap kotak yang berbeda-beda ketinggian dasarnya, namun permukaan keseluruhan kotak tersebut sama. Well.... mungkin bagi beberapa dari teman2 kebingungan (saya juga tidak menjelaskan dengan baik. hehehe). Coba deh lihat gambar berikut :

source : Communication systems course slide by Roberto Garello (Politecnico di Torino, Italy)

c adalah kapasitas channel, sedangkan alpha adalah atenuasi yang terjadi di tiap kotak (bins). Metode ini dikenal efektif untuk mengirimkan data, baik pada sistem dengan atau tanpa kabel (wireless). welll..... mungkin sekian saja penjelasan ilmiah water filling (saya masih harus banyak belajar mengenai topik ini. hehehe)

Lha... apa hubungannya dengan nama blog???? hehehe... enak didengar aja sih. Lagipula saya punya filosofi sendiri mengenai water filling ini. Kita harus bisa menerapkan kecerdasan dan kekuatan kita (power) dalam berbagai situasi (atenuasi), namun tetap menjaga "standard" atau prinsip hidup kita (channel). Kapan kita harus keras, kapan harus mengalah, kapan harus bicara, kapan harus betindak, dsb. hehehehe ^_^

Yup... semoga teman2 yang menyempatkan diri berkunjung ke blog ini mendapatkan manfaat.. Salam hangat.... (Torino, 22 Desember 2011)