Penjelasan Sederhana Jaringan Syaraf Tiruan – Kasus Logika OR

Dulu sempat ambil mata kuliah “Artificial Intelligent & Neuro-Fuzzy” dengan buku referensi yang digunakan adalah “Neural Network Design” karangan Hagan. Materinya cukup berat karena satu buku tersebut harus dikuasai dalam setengah semester (sampai UTS/Midterm Examination). Selain itu buku tersebut sepertinya ditujukan untuk level advance (lanjut). Postingan ini bermaksud menjelaskan secara sederhana prinsip kerja jaringan syaraf tiruan. Kasus yang dijadikan contoh adalah bagaimana jaringan syaraf tiruan (JST) sederhana mampu menjalankan Logika OR.

Gambar berikut adalah JST dengan jumlah neuron hanya satu buah. Neuron adalah sel di otak yang memiliki kemampuan menyimpan dan mentransfer informasi. Disimpan dalam bentuk bobot dan bias serta mentransfer dengan fungsi aktivasi.

W1 dan W2 adalah bobot yang mengalikan tiap input yang akan diteruskan ke neuron lainnya. Sementara itu b adalah bias yang menjumlahkan total masukan yang telah dikalikan bobot. Pada gambar di atas fungsi aktivasi belum dilibatkan. Persamaan matematis gambar di atas adalah sebagai berikut:

Dengan cara training, misal backpropagation, W dan b dapat ditemukan. Tetapi sebenarnya dengan intuisi kita dapat menemukan bahwa W1 dan W2 berharga masing-masing “1” dan biasnya “nol”. Kita coba memasukan ke persamaan y di atas diperoleh akurasi yang baik hanya saja di bagian akhir, yaitu ketika masukan X1 dan X2 kedua-duanya “1” yang seharusnya keluaran y = 1 di sini berharga “2”. Oleh karena itu diperlukan fungsi aktivasi seperti gambar di bawah ini.

Di antara ketiga fungsi aktivasi, yaitu tangen sigmoid, tangga, dan purelin, yang cocok dengan kasus kita adalah tangen sigmoid. Di sini tangga bisa diterapkan, tetapi agak sulit jika digunakan untuk backpropagation yang membutuhkan diferensiasi. Tangen sigmoid (juga log sigmoid) jika diturunkan berharga -1, mudah untuk dikalkulasi saat proses pembobotan ulang (rambat balik dari target ke input). Sementara purelin tidak cocok karena jika input 2 keluarnya akan 2 juga (jika y=x persamaan purelin-nya). Dengan menambah fungsi aktivasi sebelum ke output, nilai 2 dengan fungsi tangen sigmoid bernilai 1 sehingga sesuai dengan table kebenaran logika OR. Gambar di atas sebenarnya cuplikan video yang saya upload di youtube berikut ini:

 

 

 

Iklan

Kuesioner (Questionnaire) untuk AHP

Analytic Hierarchy Process (AHP) merupakan teknik untuk membandingkan satu pilihan dengan pilihan lainnya. Sangat bermanfaat bagi pengambil keputusan. Vendor terkenal yang serius mengenai hal ini adalah expert choice, yang juga menyediakan software berbayarnya. Lihat post sebelumnya. Postingan kali ini mencoba sharing tentang kuesionar yang diperlukan untuk mengisi data sebelum diolah oleh AHP yang dicetuskan pertama kali oleh L. Saaty (Saaty, 2008).

Pairwise Comparison

Terus terang saya malah belum pernah mendapatkan kuesioner dalam bahasa Indonesia. Dalam jurnal-jurnal internasional, yang sering disebutkan adalah pairwise comparison survey, yang isinya membandingkan antara satu pilihan dengan pilihan lainnya.

Survey dapat dilakukan dalam bentuk lembaran kertas ataupun online. Biasanya menggunakan Google Form, dengan tampilan yang menarik, serta mudah untuk direkap via Ms Excel. Jumlah koresponden karena ini membutuhkan pakar (expert) maka tidak perlu banyak-banyak, dan bisa di bawah sepuluh orang.

Memulai

Ada baiknya menjelaskan terlebih dahulu secara singkat masalah yang akan disurvey. Jangan lupa data tentang koresponden sangat penting untuk diketahui. Berikut tampilan awalnya.

Bagian Inti

AHP membutuhkan perbandingan satu pilihan (choice) dengan lainnya. Ada enam pilihan dengan tingkat paling rendah hingga tinggi, berturut-turut: less, equal, moderate, strong, very strong, dan extreme. Berikut contohnya:

AHP mengharuskan kondisi dimana tingkat konsistensi harus kurang dari 0.1. Ini penting untuk menjaga keanehan-keanehan dalam perbandingan. Misal tikus takut kucing, kucing takut dengan seorang ibu, dan seorang ibu takut tikus. Pada contoh di atas, Physical Health akan dibandingkan dengan Psychological Condition, Social Relationships, Environment, Economic Condition & Development, dan Access to Facilities & Services. Berikut contoh survey yang pernah saya sebar.

Minta Contoh Penulis Jurnal

Terkadang ada baiknya meminta contoh kuesioner dari seorang penulis jurnal, baik nasional maupun internasional. Walau terkadang tidak dibalas, tetapi banyak juga yang membalas dan memberikan respon. Setidaknya jika tidak memberikan sample dia menjelaskan apa isinya saja. Contoh di atas saya peroleh ketika meminta dari jurnal internasional ini (Bhatti, Tripathi, Nitivattananon, Rana, & Mozumder, 2015). Silahkan baca sumber referensi tentang AHP dari Springer ini.

Referensi:

Bhatti, S. S., Tripathi, N. K., Nitivattananon, V., Rana, I. A., & Mozumder, C. (2015). A multi-scale modeling approach for simulating urbanization in a metropolitan region. Habitat International, 50, 354–365. http://doi.org/10.1016/j.habitatint.2015.09.005

Saaty, T. L. (2008). Decision making with the analytic hierarchy process. International Journal of Services Sciences, 1(1), 83. http://doi.org/10.1504/IJSSCI.2008.017590

Link dari Google

 

Klasifikasi, Pengklusteran dan Optimasi

Bahasa merupakan pelajaran pertama tiap manusia. Untuk mempelajari komputasi pun pertama-tama membutuhkan bahasa. Sebagai contoh adalah judul di atas yang terdiri dari tiga kata: klasifikasi (classification), pengklusteran (clustering) dan optimasi (optimization). Postingan ringan ini membahas secara gampang tiga kata di atas.

Klasifikasi

Sesuai dengan arti katanya, klasifikasi berarti memilah obyek tertentu ke dalam kelas-kelas yang sesuai. Komponen utama dari klasifikasi adalah classifier yang artinya pengklasifikasi. Jika tertarik dengan bidang ini maka akan bermain pada bagian pengklasifikasi ini. Jika menggunakan jaringan syaraf tiruan (JST) maka akan meramu bobot, bias, dan layer pada JST agar mampu mengklasifikasi suatu obyek. Jika menggunakan Support Vector Machine (SVM) meramu persamaan pemisah antara dua kelas atau banyak kelas (multi-class).
Sepertinya tidak ada masalah untuk konsep ini. Masalah muncul ketika ada konsep baru, misalnya pengklusteran.

Pengklusteran

Manusia itu makin belajar makin bertambah merasa bodoh, karena makin banyak pertanyaan yang muncul. Ketika klasifikasi tidak ada masalah dalam memahami maksudnya, munculnya konsep pengklusteran membuat pertanyaan baru di kepala, apa itu? Paling gampang memahami arti dari kluster, yaitu satu kelompok dalam area tertutup, zona, atau istilah lain yang menggambarkan kelompok yang biasanya memiliki kesamaan. Pengklusteran berarti mengelompokan beberapa obyek berdasarkan kesamaannya. Jadi harus ada obyeknya dulu, karena kalau tidak ada apa yang mau dikelompokan?

Lalu bedanya dengan klasifikasi? Penjelasan gampangnya adalah klasifikasi memisahkan berdasarkan kelas-kelas yang sudah didefinisikan dengan jelas sementara pengklusteran kelompok yang akan dipisahkan tidak didefinisikan lebih dahulu. Bisa juga dengan melatih berdasarkan data yang sudah ada kelasnya (target/label nya). Misal untuk kasus penjurusan, kita bisa saja mengklasifikasikan siswa masuk IPA jika nilai IPA nya lebih baik dari IPS dan sebaliknya untuk jurusan IPS. Sementara pengklusteran kita biarkan sistem memisahkan sekelompok siswa menjadi dua kelompok yaitu kelompok IPA dan IPS. Masalah muncul ketika mengklasifikasikan berdasarkan nilai IPA dan IPS-nya, jika guru IPAnya “Killer” sementara yg guru IPS “baik hati”, maka dengan classifier itu tidak akan ada yang masuk jurusan IPA. Sementara pengklusteran akan memisahkan siswa-siswa itu menjadi dua kelompok. Bisa saja yang nilai IPA nya misalnya 6 masuk ke kelas IPA karena nilai 6 itu udah top di sekolah itu.

Optimasi

Nah, apalagi ini? Kembali lagi sesuai dengan arti katanya optimasi berarti mencari nilai optimal. Optimal tentu saja tidak harus maksimal/minimal, apalagi ketika faktor-faktor yang ingin dicari nilai optimalnya banyak, atau dikenal dengan istilah multiobjective. Apakah bisa untuk klasifikasi? Ya paling hanya mengklasifikasikan optimal dan tidak optimal saja. Biasanya optimasi digunakan untuk mengoptimalkan classifier dalam mengklasifikasi, misal untuk JST adalah komposisi neuron, layer, dan paramter-parameter lainnya. Atau gampangnya, kalau klasifikasi mengklasifikasikan siswa-siswi ganteng dan cantik, optimasi mencari yang ter-ganteng dan ter-cantik. Sederhana bukan? Ternyata tidak juga. Banyak orang baik di negara kita, tetapi mencari beberapa yang terbaik saja ternyata malah “hang” sistemnya.

Metode Menentukan Bobot pada Multi-Criteria Selain Pairwise Comparison (AHP)

Untuk mencari lokasi yang cocok untuk penggunaan lahan tertentu, optimasi rancangan, dan sejenisnya ada empat metode yang terkenal: ranking, rating, trade-off, dan pairwise. Cara penggunaannya dapat dilihat pada artikel berikut ini, dalam jurnal teknik sipil.

Di bagian kesimpulan, ketika faktor biaya, waktu dan kemudahan penggunaan menjadi perhatian maka metode ranking, rating, dan trade-off layak untuk digunakan. Tetapi ketika faktor akurasi dan fondasi teoritis yang menjadi perhatian maka metode pairwise yang biasanya dengan analytic hierarchy process (AHP) digunakan, dengan software yang terkenalnya “expert choice”.

Kelemahan multi-criteria dalam menentukan kesesuaian (suitability) terhadap suatu hal adalah sangat bergantung dengan penentuan bobot seperti diutarakan dalam presentasi oleh ESRI (vendor dari ArcGIS) berikut ini:

Semoga postingan ini bisa bermanfaat, terutama saya sendiri baru saja menjawab pertanyaan mengapa menggunakan metode pairwise tidak dengan metode yang lainnya.

Referensi:

http://www.iaeme.com/MasterAdmin/UploadFolder/IJCIET_06_11_012-2/IJCIET_06_11_012-2.pdf

https://maps.uky.edu/esri-uc/esri_uc_2k12/Files/130.pdf

Menghitung Keluaran Fuzzy

Jika sebelumnya telah dibahas perhitungan keluaran JST, sekarang akan kita coba bahas perhitungan keluaran Fuzzy, atau sering disebut Fuzzy Inference System (FIS). Mungkin soal ujian akhir mata kuliah AI & Neuro-Fuzzy berikut ini bisa dijadikan pelajaran bagaimana menghitung keluaran FIS. Terutama bagaimana menghitung besar fungsi keanggotaannya.

SOAL:

In a simple fuzzy-servo control of a DC motor, only relative position error is used to calculate for the required relative average voltage of PWM signal from motor driver. Assume relative position error and relative average voltage of PWM signal, both varying from –1 to 1, are classified into 5 levels; Negative Big (NB), Negative Small (NS), Zero (Z), Positive Small (PS), and Positive Big (PB), when membership functions are shown in the below figures.

Tentukan Relative Average Voltage (RAV) ketika relative position error (RPE) menjadi 0.2, asumsikan fuzzy inference rule mengikuti hubungan berikut ini:

Relative Position Error         NB NS Z PS PB

Relative Average Voltage     PB PS Z NS NB

JAWAB:

Berdasarkan soal, relative position error yang 0.2 dijumlahkan secara grafis dan dihubungkan dengan rule yang disebutkan dalam soal.

Gambar di bagian atas, garis tebal 0.2 tidak memotong NB dan dengan demikian tidak ada nilai PB di sebelah kanan (menurut rule NB rpe= PB rav). Garis tebal 0.2 berikutnya memotong NS di titik vertikal lalu diarahkan ke grafik kanan membentuk luasan gambar PS yang diarsir (menurut rule NS rpe = PS rav). Dan diteruskan hingga fungsi keanggotaan RPE terakhir (paling kanan) yaitu PB.

Berikutnya dijumlah luasan RAV dari atas ke bawah membentuk gabungan bangun segitiga dan persegipanjang. Untuk menghitung luas dan titik berat perlu mengetahui luas tiap komponen serta titik berat dari bangun segitiga dan persegipanjang.

Hasilnya kira-kira sebagai berikut.

Titik Berat (Center of Gravity) berdasarkan rumus adalah ∑ (area x titik berat) / ∑ (area) akan menghasilkan titik berat itu sendiri. Cukup rumit juga menghitung manual, apalagi jika fungsi keanggotaannya bukan garis lurus melainkan gauss atau bell. Tetapi untuk prakteknya ya tidak dihitung manual. Gunakan saja fuzzy di Matlab untuk mengecek jawaban jika ingin berlatih. Bagaimana untuk rule yang memiliki operasi AND dan OR? Mudah saja, AND ambil yang terkecil, sementara OR ambil yang terbesar dari fungsi keanggotaan yang dioperasikan (AND atau OR).

Jadi lebih ribet menghitung Fuzzy dibanding JST menurut saya. Semoga bermanfaat.

Algoritma Genetika dengan Toolbox Matlab

Genetic Algorithms (GAs) digunakan untuk mencari nilai optimal (maksimum atau minimum) suatu fungsi. Fungsi itu dikenal dengan istilah fitness function, atau ada juga yang menyebutnya fungsi objektif. Sebelumnya optimasi dilakukan dengan cara matematis, kalau kita inget-inget lagi pelajaran SMA dengan menurunkan suatu persamaan dan disamadengankan dengan nol. Tetapi masalah muncul jika persamaan itu memiliki banyak nilai optimal, karena nilai optimal akan terjebak dalam lokal optimum. Contohnya adalah fungsi rastrigin dari Matlab yang memiliki banyak jebakan local minimum dan hanya ada satu global optimum (kayak tempat telor ya).

Ok, kita coba mengoptimasikan satu fungsi objektif dari penanya: y = 2*x(1)+3*x(2)+4*x(3)+4*x(4). Dengan constraint: 10<x(1)<20, 30<x(2)<40, 50<x(3)<60, 70<x(4)<80. Kayaknya susah. Sebelumnya, buat terlebih dahulu fungsinya di m-file. Praktisnya ketik saja edit fungsi jika kita mau membuat fungsi objektif itu bernama fungsi. Tekan “yes” jika ada pesan bahwa tidak ada m-file bernama “fungsi”. Berarti fungsi bernama fungsi itu tidak dimiliki oleh bahasa built-in bawan Matlab. Ketik fungsi y di atas di m-file editor yang baru saja terbuka.

Kok Cuma gitu? Ya iyalah, coba tes dengan x1, x2, x3, dan x4 berturut-turut 1,2,3, dan 4 di command window dengan mengetik y=fungsi([1 2 3 4]). Jawabannya harus 36 dan tidak ada pesan error. Oiya, ini harus benar, karena jika sampai sini tidak berhasil mengikuti ya dijamin ga bakal bisa terus ke algoritma genetik, tapi kalo hanya ingin membaca saja ya rapopo.

Seperti biasa, cara termudah mengoperasikan Matlab adalah dengan menggunakan toolbox yang tersedia. Untuk GAs, karena masuk dalam kategori optimization toolbox, gunakan fungsi optimtool di command window.

Setelah memilih jenis optimasinya (GAs), isi nama fungsi didahului @, jumlah variabel (4 variabel) dan perhatikan teknik mengisi bound yang sesuai persoalan. Di bagian kanan masih ada sebenarnya, tapi ga wajib. Centang pada isian plotting pada best fitness dan best individual sehingga ketika tombol “Start” ditekan, proses optimasi akan disertai pergerakan grafik yang interaktif. Oiya, tolong dicek benar atau tidak kalau itu nilai minimum. He he .. kayaknya ga perlu pake GAs saya juga bisa nebak, ya pasti batas bawah lah jawabannya (10, 30, 50, dan 70) soalnya fungsi kuadrat (membesar terus). Coba ganti fungsi yang lain.

Mengolah Data dengan Metode Analtytic Hierarchy Process (AHP)

Dulu sempat mengambil mata kuliah Decision Support System (DSS) dan memperoleh materi khusus AHP dan sekarang ternyata “butuh lagi”. Ketika membuka lagi folder-folder lama dan ternyata masih ada. Sayang softwarenya tidak bisa diinstal di laptop saya karena versi yang sekarang windows 64 bit. Untung ada yang “share” program aplikasi tersebut di internet, ya sudah saya “pinjam”.

AHP biasanya dipergunakan untuk memilih pilihan yang tepat dari kriteria-kriteria tertentu. Tetapi disertasi saya hanya membutuhkan berapa bobot yang tepat untuk menentukan goal-nya nanti, tidak dengan AHP melainkan algoritma tertentu. Oke lah, saya sebar kuesioner ke beberapa responden yang mengerti masalah urban, lingkungan, atau optimasi pengalokasian lahan. Kuesioner dibuat dengan menggunakan google form.

Buka expert choice dilanjutkan dengan memberi nama project yang akan dibuat di software tersebut. AHP ini idenya dicetuskan oleh Saaty dan Vargas tahun 2000, silahkan unduh sendiri jurnalnya. Berikutnya adalah kita masukan variabel-variabel pendukung keputusan di menu edit (Ctrl-H).

Setelah variabel-variabelnya dimasukan, isi data hasil kuesioner ke expert choice untuk mengetahui berapa bobot yang diperoleh berdasarkan jawaban dari responden. Berikutnya adalah mengisi data dari hasil kuesioner yang disebar. Tekan simbol 3:1 untuk mengisi pairwise comparison.

Isi satu persatu dengan hati-hati karena excel hasil jawaban dari google form kurang rapi dan dikhawatirkan jawaban tertukar. Biasanya agar tidak tertukar saya mengurutkan variabel dan tiap pergantian variabel saya batasi dengan warna.

Pilih responden yang mengisi kuesionar dengan benar sesuai dengan formatnya. AHP melarang nilai konsistensi yang kurang dari 0.1. Konsistensi bisa saja terjadi jika banyak variabel yang terlibat. Maksud dari konsistensi adalah misal jika A > B dan B > C maka C > A tentu saja tidak konsisten, walaupun bisa saja terjadi (wanita berani dengan kucing, kucing berani dengan tikus, tetapi wanita takut dengan tikus, misalnya). Klik simbol ABC, maka kita akan menemukan skala, dan sebaiknya kuesioner menyesuaikan dengan skala ini.

Jadi jika responden menjawab very strong, maka kita pilih nilai 7, equal nilainya satu, dan seterusnya. Jawab untuk satu responden hingga menghasilkan skor di bawah ini misalnya.

residential

Perhatikan konsistensinya lebih besar dari 0.1, tetapi jangan khawatir, ini masih responden pertama, kita masukan responden yang lainnya. Tetapi dicatat saja, jika konsistensi akhir di atas 0.1 maka responden ini menjadi kandidat untuk tidak diikutsertakan. Jangan lupa, arah skornya ke kanan apa ke kiri (tulisan angka BERWARNA MERAH atau HITAM), karena salah geser, ke arah lawannya. Lanjutkan hingga seluruh responden dimasukan. Klik simbol participant terlebih dahulu (gambar dua orang) di bagian menu, tambahkan berapa responden yang akan dimasukan ke expert choice.

Pilih participant yang akan dimasukan skor hasil kuesionernya. Pilih P2 di bagian menu participant. Lanjutkan dengan mengisi data seperti langkah sebelumnya. Untuk responden kedua, nilai agak mendingan (konsistensi 0.17).

residential

Combine data Anda baik (both data and judgment) untuk menghasilkan total bobot seperti gambar di atas. Dan coba jangan sampai inconsistency di atas 0.1, jika lebih buang yang scor inconsistency-nya buruk (tapi jangan utak-atik data ya, karena melanggar prinsip riset ilmiah – namanya fabrikasi). Karena Expert choice, maka tidak perlu data sampel yang banyak, tetapi yang mengisi adalah pakar di bidangnya.