Friday, December 11, 2009

Self Organizing Map (SOM)


       SOM? Som? Somay? T_T Entah kenapa waktu mau nulis postingan ini bawaanya kepikiran somay terus,, Mau masuk musim dingin kali ya? Bawaannya jadi ngantuk dan laper terus, ehehe,,

       Self Organizing Map adalah salah satu tipe dari artificial neural network(ANN), termasuk tipe belajar tanpa bimbingan(unsupervised learning), juga termasuk competitive learning. Neuron-neuronnya biasanya dibuat beberapa dimensi, tapi yang sering di pakai adalah 1 dimensi atau 2 dimensi. Model SOM sebagai ANN diperkenalkan oleh Professor Teuvo Kohonen dari Finlandia, sehingga SOM juga sering disebut Kohonen map.


       Prosesnya sendiri mirip dengan ANN yang lain, yaitu merubah nilai-nilai weight pada neuron untuk tujuan tertentu. SOM yang sering di pakai adalah yang berstruktur 2 dimensi. Setelah dimasukkan input dan dilakukan proses pembelajaran (learning), neuron-neuron yang mempunyai nilai weight yang mirip akan berkumpul berdekatan sehingga terbentuk cluster-cluster. Kalau kita visualisasikan maka akan terlihat seperti peta.

       Karena bisa membentuk cluster-cluster pada 2 dimensi (sehingga memudahkan visualisasi data), SOM biasanya digunakan untuk mengklasifikasi informasi berdimensi tinggi ke dimensi lebih rendah (biasanya 2 dimensi) dengan tetap mempertahankan topologinya.

       Pada proses pembelajaran, perubahan weight menggunakan rumus Wv(t + 1) = Wv(t) + Θ (v, t) α(t)(D(t) - Wv(t)) , dimana Wv(t) adalah weight sebelum dirubah, Wv(t + 1) setelah dirubah, α(t) adalah kadar pembelajaran(learning rate), Θ (v, t) adalah fungsi penentu jumlah neuron tetangga yang memberi efek(neighborhood function), dan D(t) adalah nilai input. Ketika menentukan pemenang(winner) pada neuron ditentukan dengan neuron yang paling mirip/dekat dengan input, menggunakan Euclidean distance.

Secara ringkas algoritmanya adalah sebagai berikut:

Langkah 1 : Tentukan nilai weight awal secara random.
Langkah 2 : Set jumlah tetangga yang memberi pengaruh & kadar pembelajaran (atara 0 dan 1).
Langkah 3 : Selama syarat menghentikan proses belajar belum terpenuhi ulang Langkah 4 sampai Langkah 8.
    Langkah 4 : Untuk setiap input x lakukan Langkah 5 sampai 8.
       Langkah 5 : Hitung jarak/perbedaan antara input dengan setiap node menggunakan Euclidean distance.
       Langkah 6 : Tentukan node pemenang(winner) yaitu yang memiliki jarak terpendek.
       Langkah 7 : Update nilai weight node pemenang serta tetangganya yang ada dalam radius jumlah tetangga yang memberi pengaruh.
       Langkah 8 : Kurangi nilai kadar pembelajaran & jumlah tetangga yang memberi pengaruh.
       Langkah 9 : Tes apakah syarat untuk menghentikan proses sudah terpenuhi.

       Huh,, fiuh,, kalau dijelaskan dengan rumus dan kata-kata sepertinya ribet banget ya! Jadi saya lampirkan contoh program SOM sederhana yang dibuat dengan MFC(C++) dan Visual Studio 2005. Program ini menggunakan komponen warna R, G, B sebagai weight setiap neuronnya, sehingga lebih mudah di visualisasi dan terlihat jelas pembagian clusternya. Jumlah iterasi sebagai syarat berhenti proses pembelajaran.

Ini adalah kondisi awalnya. Neuron yang belum dilakukan proses pembelajaran memiliki nilai weight yang acak(random).

Pada bagian 'Set Parameter' bisa kita pilih warna-warna yang akan kita pakai sebagai input, kadar pembelajaran, jumlah neuron tetangga yang memberi efek, serta jumlah iterasi proses belajar.


Setelah di klik tombol 'Learning' maka akan terjadi proses pembelajaran dan terbentuk cluster-cluster.

Execute file dan source codenya bisa di download di sini.

Referensi :
- http://en.wikipedia.org/wiki/Self-organizing_map
- 뉴로 컴퓨터, 오창석저, 충복대학교 컴퓨터공학과

1 comment:

awid said...

Assalaamu 'alaikum Ayi ...
Apa kabar ..? aku pingin tau lebih lanjut ttg SOM neh, gimana ya caranya?