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
- 뉴로 컴퓨터, 오창석저, 충복대학교 컴퓨터공학과