Melihat Surface Jaringan Syaraf Tiruan (JST)

Surface merupakan istilah yang digunakan Matlab terhadap bidang tiga dimensi. Variabel yang ada adalah X, Y, dan Z. Terkadang kita ingin melihat surface JST yang telah kita training untuk mengetahui kinerjanya seperti pada Fuzzy Inference System (FIS) dan Adaptive Neuro-Fuzzy Inference System (ANFIS). Sebagai bahan perbandingan perhatikan data berikut ini yang akan kita latih dengan ANFIS dan JST.

Kolom satu dan dua adalah variabel masukan, sedangkan kolom ketiga menyatakan target pembelajaran. Berikutnya kita latih sistem kita, baik dengan ANFIS maupun JST. Dengan anfis kita peroleh surface sebagai berikut:

Mengenai cara pembuatannya, lihat tulisan saya terdahulu mengenai pelatihan ANFIS. Untuk JST harus kita buat struktur network dan kemudian melatihnya dengan data di atas. Berikut ini contoh code untuk membuat grafik 3D JST dengan nama ‘net‘.

Di sini saya menggunakan resolusi dua digit di belakang koma, dari 0.01 hingga 4. Hasilnya adalah grafik di bawah ini. Lumayan lama (lebih dari 10 menit) ketika kode di atas dijalankan.

Jika dirasa terlalu lama prosesnya, dapat kita turunkan resolusinya menjadi satu digit di belakang koma. Untuk warna data dilakukan dengan perintah di belakang plot3, dengan if-else untuk wilayah warna tertentu.

Sebenarnya ada cara untuk membuat lewat instruksi ‘surface’ atau ‘mesh’, tetapi untuk kasus fungsi ‘sim’ pada matlab tidak bisa dijalankan. Berikut ini contoh script untuk 3D fungsi matematis biasa.

Paten pada Rekayasa Perangkat Lunak

Rekayasa Perangkat Lunak (Software Engineering) merupakan bidang baru yang banyak diminati oleh anak-anak muda kita. Bahkan menjadi jurusan yang laris di tingkat Sekolah Menengah Kejuruan. Berbeda dengan perangkat keras yang jelas terlihat hasil jadinya, pada perangkat lunak, hasil kreasi kita tidak tampak secara langsung sehingga muncul pertanyaan bagaimana bentuk hak cipta-nya? Mengingat saat ini mudah sekali dibajak/digandakan.

Tuntutan Apple terhadap Samsung dan Google terhadap aplikasi yang dibuatnya membuat saya ingin mengetahui lebih jelas seluk beluk Paten, yang dijadikan dasar tuntutan. Paten sendiri dengan mudah dapat kita searching di Google. Sebagai contoh Paten terhadap bidang yang saya tekuni, yaitu Soft Computing. Gambar berikut salah satu contoh sketsa paten yang diajukan oleh Dingding Chen, Syed Hamid, Harry Smith tentang Jaringan Syaraf Tiruan dengan Neuron yang disusun berdasarkan Optimasi oleh Algoritma Genetik.

(Sumber: Paten US 20050246297 A1 http://patentimages.storage.googleapis.com/US20050246297A1/US20050246297A1-20051103-D00000.png )

Sementara itu, dijelaskan pula angka-angka tersebut, misalnya 18 yang berisi rangkaian Algoritma Genetika, sebagai berikut:

18. Apparatus for producing as outputs synthetic values of at least one geophysical parameter for a well in response to inputs of actual values of geophysical parameters measured in the well, comprising a neural network ensemble selected by:

training a set of individual neural networks to produce one or more synthetic output values of at least one geophysical parameter for a well in response to a plurality of inputs of actual values of geophysical parameters measured in the well, and

using a genetic algorithm having a multi-objective fitness function to select at least one ensemble, comprising a subset of the set of individual neural fnetworks, having a desirable fitness function value.

Terlihat sederhana tetapi di dalamnya terkandung riset yang telah dilakukan oleh peneliti bidang Rekayasa Perangkat Lunak. Yang terpenting adalah kita tidak boleh seenaknya mengaku penemu jika belum mematenkan apa yang telah kita temukan. Gambar di atas, sebaiknya tidak kita copas langsung tanpa referensi.

Support Vector Machine (SVM) di Matlab

SVM merupakan metode algoritma yang sering digunakan untuk regresi dan klasifikasi. Cara kerjanya adalah membuat sebuah bidang batas antara kluster. Bila dibandingkan dengan Jaringan Syaraf Tiruan, beberapa literatur menunjukkan keunggulan SVM yang bekerja secara global optima, sedangkan JST local optima. Walaupun berbeda prinsip, antara SVM dengan JST memiliki tipikal yang sama yaitu data input dan data target dilatih untuk menghasilkan kecerdasan pada sistem. Jika JST menghasilkan bobot dan bias, pada SVM menghasilkan persamaan batas klasifikasi.

SVM di Matlab

Berbagai implementasi telah dilakukan dalam berbagai macam bahasa pemrograman. Untuk Matlab, kita dapat mendownload m-file yang berisi routin untuk penerapan SVM. Link dapat didownload di:

Setelah selesai mendownload, copy folder svm pada C:\program files\Matlab\R2008\Toolboxes kemudian arahkan Path variabel ke situ dengan cara klik File – Set Path.

Klik “Add Folder” untuk menambahkan folder svm ke toolbox Matlab. Setelah itu svm Anda siap digunakan. Sebelum menggunakan ada baiknya Anda mengetik help svm pada command window atau doc svm (versi chm). Alasan utama mengapa kita harus meletakan path adalah karena apabila toolbox svm tersebut tidak diletakkan di path Matlab, maka toolbox itu tidak dapat dijalankan jika kita mengarahkan Current Directory (Direktori Kerja) pada folder yang tidak sama dengan folder toolbox tersebut. Cara mengetes apakah path sudah berjalan adalah dengan merubah current directory di luar directory svm kemudan ketik help svm atau doc svm, jika Matlab menjawab folder not found berarti path belum disetting, selamat mencoba.

Biometrics

Biometrics is my research focus. I interest to it because they have many advantages compared to conventional method such as user-id and password for login. I ‘ve been looking for biometrics text book in Indonesian, but I have not find it yet until now. Thanks to someone who has upload this book, finally I found it.

If you want to make fingerprint, iris, face, signatture, and others identification system, you must read this book. Also, it discusse more about the standard of biometrics system, what are their limitations?, characteristic?, etc. After the fast development of web-based system (internet), the web-based biometrics system is very interesting to many researcher today.

Kendala Pada Matlab

Matlab merupakan bahasa komputasi teknis yang bermaksud membantu para saintis dalam melaksanakan kegiatan sehari-harinya (riset, project, data processing, dan sebagainya). Kendala mahasiswa yang menggunakan matlab sebagai tool pendukung adalah saat disidang mahasiswa tersebut tidak sanggup menjelaskan konsep dasar yang melatar belakangi operasi pada Matlab. Beberapa penguji terkadang meminta source code dalam bahasa tertentu seperti C++ dan Java. Jika mahasiswa yang bersangkutan sudah mempelajari teori dasarnya terlebih dahulu mungkin tidak ada masalah, namun jika karena terdesak oleh waktu dan mahasiswa itu tidak sempat mempelajari dasar teori algoritma yang mendasarinya, malapetaka akan menimpa mahasiswa itu. Sebenarnya pada help Matlab, setiap akan memberikan referensi tutorial, Matlab memberikan dasar teori pendukungnya dengan disertai oleh buku rujukan yang bisa kita beli atau download di internet.

Untuk kasus dimana dosen penguji meminta kode sumber, mungkin agak sedikit bermasalah terutama jika dosen penguji tersebut tidak mengakui M-file sebagai bahasa pemrograman layaknya C++, Java, VB dan sejenisnya. Untuk menyiasati hal itu ada baiknya kita mengkonversi bahasa matlab menjadi bahasa C++. Langkahnya adalah dengan membuat deployment project (file – new – Deployment Project). Setiap kita selesai membuat kompilasi program menjadi exe, Matlab selalu menyediakan source code dalam bahasa C++ di folder “Src”. Berikut ini contoh program menghitung beasiswa dengan menggunakan FIS dan ANFIS yang setelah dikompilasi muncul file dalam bahasa C++.

Sebenarnya inti dari programming adalah algoritma, jadi jika kita memahami algoritma maka bahasa apapun dapat kita kuasai. Fanatik terhadap satu bahasa menurut saya kurang baik. Tetapi sebisa mungkin kita memahami dua atau tiga bahasa pemrograman yang dapat kita jadikan alat dalam menterjemahkan algoritma yang telah kita kuasai atau sedang dipelajari.

Gambar di atas mengilustrasikan hasil running file executable hasil kompilasi dari bahasa Matlab. Tampak bahwa matlab sudah mampu membuat aplikasi layaknya bahasa pemrograman yang umum dipakai, disetai dengan GUI yang sudah maju sejak versi 6 hingga sekarang (versi 7).

Salam …

Rahmadya Trias Handayanto

Soft Computing

Istilah soft computing merupakan pelengkap dari hard computing yang merupakan komputasi berdasarkan ketidakpastian. Banyak yang bingung apa bedanya soft computing dengan artificial intelligent (AI). AI lebih dahulu muncul, merupakan metode komputasi berdasarkan simbol-simbol dan dikembangkan oleh bahasa pemrograman tertentu seperti prolog, lisp, clips, dan sejenisnya. Soft computing tidak jauh berbeda dengan AI dalam hal penerapan, tetapi dari sisi perhitungan tetap menggunakan notasi-notasi numerik hanya saja dengan algoritma-algoritma tertentu yang saat ini berkembang pesat antara lain: Fuzzy, ANFIS, Jaringan Syaraf Tiruan, Algoritma genetik dan yang terakhir Bayes. Karena berdasarkan algoritma tertentu maka bahasa pemrograman seperti C++, Java, Matlab dan sebagainya dapat digunakan dan tidak lagi dimonopoli oleh bahasa khusus AI.

Fuzzy yang dipelopori oleh Lutfi Askar Zadeh, pria keturunan Iran yang sempat mengenyam pendidikan di Rusia dan saat ini tinggal di Amerika Serikat merupakan dasar dari Soft Computing. Algoritmanya merupakan konversi dari numerik biasa yang diistilahkan dengan CRISP menjadi fungsi keanggotaan Fuzzy yang bersifat manusiawi (linguistik). Beberapa kritikus menanyakan mengapa fuzzy tetap menyandarkan pada aritmatika, sehingga munculah Fuzzy tipe-2 yang memasukkan unsur ketidakpastian.

Jaringan Syaraf Tiruan, yang merupakan metode yang dikembangkan oleh mcculloch – pitts merupakan algoritma yang berusaha meniru bentuk syaraf biologis makhluk hidup. Dengan konsep Neuron-nya disertai dengan bobot dan fungsi aktivasi merupakan terobosan dalam algoritma soft computing. Setelah sempat redup di tahun 70-an karena tidak sanggup menyelesaikan kasus serderhana seperti XoR, akhirnya algoritma ini marak diteliti kembali setelah Hopfield menemukan metode pembelajaran rambatan kesalahan (backprogragation error) yang sanggup mengeset bobot sesuai dengan target pembelajaran.

ANFIS yang merupakan singkatan dari Adaptive Neuro Fuzzy Inference System merupakan penggabungan dari Fuzzy dengan Jaringan Syaraf Tiruan. Bedanya hanya pada rule yang dibentuk lewat mekanisme pembelajaran (learning). Di antara tiga metode pembuatan rule Fuzzy (Mamdani, Sugeno dan Tsukamoto) hanya Sugeno yang secara efisien mampu diaplikasikan pada ANFIS.

Algoritma Genetik yang masuk dalam kategori Evolutionary Computing merupakan algoritma yang berusaha meniru sifat adaptive dari alam sekitar (mirip teori darwin) dimana organisme yang hidup saat ini adalah organisme terbaik yang berhasil unggul dibanding organisme lain yang sudah punah. Metodenya adalah membangkitkan sembarang bilangan, kemudian dievaluasi dengan fungsi objective dan jika kurang baik maka dimusnahkan, sedangkan yang baik, dikawin silangkan serta dimutasi sehingga menghasilkan individu baru yang lebih baik dari induknya. Operasi ini terus berlangsung hingga dihasilkan individu terbaik hasil dari kawin silang dan mutasi.

Bayes, pertama kali dimunculkan dalam bentuk Naive Bayes yang merupakan komputasi berdasarkan statistik probabilistik. Pengambilan keputusan berdasarkan dengan peluang terbesar di antara kandidat yang ada. Terkadang kondisi di lapangan sangat jarang dijumpai kondisi pasti antara A,B,C atau D, seperti pendeteksian penyakit, peramalan cuaca dan sebagainya. Oleh karena itu hasil dari metode bayes ini merupakan peluang terbesar dari suatu kondisi (tidak 100 % akurat).

Metode tersebut di atas terkadang digabungkan antara satu dengan lainnya untuk menghasilkan akurasi, kecepatan dan efisiensi dalam pengoperasiannya. Karena antara satu metode dengan metode lainnya memiliki kelemahan dan kelebihan masing-masing. Metode mana yang Anda gunakan semua ada di tangan Anda. Termasuk bahasa pemrograman yang menjadi pilihan Anda. Untuk saat ini saya sedang mengimplementasikan algoritma Soft Computing dalam bahasa Java, karena bahasa ini merupakan selain bahasa yang open source, banyak dipakai di peralatan, juga dapat berjalan di aplikasi berbasis Web yang saat ini sedang booming.

Rahmadya Trias Handayanto

Hidden Layer Pada Jaringan Syaraf Tiruan

Dari dua jenis cara membuat Jaringan Syaraf Tiruan (JST), cara pembuatan dengan command window sebaiknya dilakukan jika Anda ingin membuat JST dengan beberapa hidden layer karea cara GUI (dengan nntool) tidak menyertakan hidden layer di dalamnya.

    Sesuai dengan namanya, JST bermaksud membuat sistem yang mirip syaraf biologis dengan suatu algoritma (ingat, syaraf tiruan dengan “y”, bukan saraf, itu lain lagi artinya J ). Jika kita punya data masukan dengan keluaran tertentu maka kita dapat mengajarkan ke JST sehingga apabila ada masukan yang berbeda, sistem akan mampu memprediksi keluarannya berdasarkan aturan yang dipelajari lewat mekanisme learning/training.

    Misal kita ingin mengajari JST pemangkatan. Tentu saja jika pemangkatan tidak perlu dengan JST, hard computing pun bisa. Tapi ini kita jadikan percobaan karena mudah dalam memverifikasikan hasilnya. Kenyataan di lapangan terkadang kita tidak menjumpai kasus yang memiliki formula matematis dalam menghitungnya misalnya tanda tangan, kita tidak dapat membuat formula matematis suatu tanda tangan.

    Buat suatu input = [1 2 3 4 5 6 7 8 9 10]; dan output = [1 4 9 16 25 36 49 64 81 100]; yang merupakan pangkat dari input. Untuk membuat JST dengan katakanlah dua hidden layer dengan masing-masing layer memiliki 30 neuron. Banyak istilah asing ya .. emang bikin pusing, neuron itu merupakan analogi yang dalam hal ini fungsi alih yang fungsinya meneruskan sinyal atau sebaliknya mematikan sinyal. Saatnya meramu JST, misal kita butuh neuron input sebanyak data masukan, 10 buah dan keluaran 10 buah.


Sengaja nih saya gunakan image, biar Anda belajar dengan mengetik langsung (tidak copy – paste). Baris pertama bermaksud mendefinisikan matriks masukan, dilanjutkan dengan keluarannya. Karena keluaran (diistilahkan dengan target) didefinisikan maka JST yang kita buat masuk kategori Supervised Learning (pembelajaran terpandu). Baris ketiga bermaksud membuat suatu jaringan syaraf tiruan dengan dua buah hidden layer, masing-masing 30 neurons dan input dengan 10 neurons. Sebenarnya parameternya ada banyak (lihat baris keempat), goal, epoch, dan lain-lain. Sebaiknya lihat help pada matlab dengan mengetik help newff. Di akhir script, JST yang kita buat akan melakukan proses learning.


Perhatikan gambar di atas, tampak dua buah hidden layer. Apakah hasilnya akurat? Tentu saja tidak, saya dan siswa-siswa saya terkadang berkali-kali meramu JST sehingga dihasilkan hasil yang optimal. Untuk mengujinya, lakukan perintah “sim”.


Lihat simulasi yang terakhir, ngaco kan? Masak 3 kwadrat = 61? Tambahkan jumlah Neuron di lapis tersembunyi (Hidden Layer). Menurut riset di jurnal-jurnal, hidden layer yang optimal itu satu saja, perlu diingat, makin banyak hidden layer, proses menjadi sangat lambat dan terkadang komputer Anda tidak sanggup memprosesnya sehingga muncul pesan “Out of Memory “. Coba ramu lagi, Cao ..


Rahmadya Trias Handayanto

Update: 26 Nov 2015

Ada yg bertanya jumlah hidden yang terbaik, apa patokannya. Referensi yg jelas-jelas mengatakan bahwa jumlah hidden optimal satu saja cukup adalah karangan Laurent Fausett judulnya: Fundamental of Neural Network: Architecture, Algorithms, and Applications, hal 299.
one hidden layer

Sementara kalo mau tau alasan detilnya mengapa harus ada hidden layer, baca bukunya Hagan (Neural network Design). Katanya untuk mengatasi problem logika XOR yang bikin JST sempat mengalami masa suram krn ga bisa menyelesaikannya.

Update: 31 Juli 2018

Berkembangnya piranti hardware saat ini memungkinkan JST untuk memproses jumlah neuron dan hidden layer yang lebih banyak. Akibatnya, dalam perkembangannya JST dioptimalkan dengan menambah jumlah neuron dan hidden layer. Istilah JST dengan jumlah hidden layer yang banyak dikategorikan sebagai deep learning. Saat ini deep learning banyak diriset. Jadi JST dengan jumlah hidden layer lebih dari satu belum tentu tidak optimal. Beberapa trik diperlukan, salah satunya adalah memodifikasi fungsi transfer.

Buku Penerapan Soft Computing dengan Matlab

Hasil dari tulis menulis di blog, terbit buku tentang penggunaan Matlab bersama pembimbing saya Dr. Prabowo Pudjo Widodo. Diterbitkan oleh penerbit: Rekayasa Sains.

Buku “Penerapan Soft Computing dengan MATLAB” membahas seluk beluk Soft Computing yang terdiri dari Fuzzy, ANFIS, Jaringan Syaraf Tiruan dan Algoritma Genetik. Walaupun terasa materi yang dibahas sangat luas, tetapi penulis yakin dengan memanfaatkan software Matlab, pembaca akan mampu membuat aplikasi dengan basis Soft Computing yang canggih.

Setiap bab dimulai dengan teori dasar singkat dengan harapan pembaca dapat mengerti algoritma dasar Soft Computing yang digunakan dan diakhir bab diakhiri dengan studi kasus penerapannya dengan Toolbox Matlab. Pada buku ini digunakan Matlab atas dasar pertimbangan kemudahan dibanding dengan bahasa lainnya yang sejenis. Sebagai penopang utama Soft Computing, Fuzzy dibahas lebih rinci dibanding dengan yang lain.

Untuk mempermudah mempelajarinya, diharapkan pembaca sudah menginstal software Matlab dan mempraktekannya secara langsung saat membaca buku ini. Di bab terakhir diberikan contoh kasus pembuatan aplikasi lengkap dengan bantuan Graphic User Interface (GUI). Untuk mengatasi lisensi Matlab yang mahal, dipelajari juga teknik kompilasi script Matlab menjadi program executable yang dapat dijalankan di komputer lain yang tidak terinstal Matlab.

Oiya, lihat buku saya yg terbaru : https://biobses.com/product/pemrograman-basis-data-di-matlab-dengan-mysql-dan-microsoft-access-dvd/

ICACSIS 2011

I have presented some papers on International Conference, but it is the first time I submit the paper for ICACSIS 2011. This conference is about Computer Science and Information System that committed by Universitas Indonesia. The conference will be held at Mercure Hotel, Ancol, North Jakarta, Indonesia. Unfortunately, at that day, I will attend the IELTS Test in PPB UGM, so I asked the second writer, Mr Haryono to present our paper. I hope he will be able to present our paper without any mistakes and there is no problem about the language.

Our research is about real time network monitoring using artificial neural network of our hotspot area. The committee of ICACSIS 2011 said that our research is has a novelty and interesting, but there are so many grammar error. The important critics is about cross validation that I did not mention in our paper. The cross validation is a testing method that use some groups. Every group must be tested after training by other group and vice versa.

If you want to join this conference as a participant, you can attend this on 17 – 18 December 2011. It costs Rp. 200.000,00 and I think it is not expensive compared to the experience that you will get there, as many researcher from overseas will come and present their interesting paper.

Update: 19/04/2017

The paper was indexed by IEEE (http://ieeexplore.ieee.org/document/6140744/) and Scopus (http://www.scopus.com/inward/authorDetails.url?authorID=55014574400&partnerID=MN8TOARS), with 2 citated (not bad 🙂 )

Compiling the m-file

Compiling the m-file means we convert the source code of matlab into executable file, so the other computer can run it although there is no matlab software being installed. Of course if the computer which run the application has matlab software we don’t need to compile it.

Because there are a lot of file which build matlab-based application, we must prepare them first. Application with Graphic User Application (GUI) need at least two files: the fig-file for interface and m-file for source code. If you use some toolbox on it, you must include that files to your deployment project. For example, if you create fuzzy-based application, you mast include the fis-file to your deployment project.

Let’s open your matlab software and I suggest you to change the current directory into the same directory as your programming file. Matlab provide project for compiling by clicking the file, new and deployment project in the menu bar. This figure shows you deployment project window.


Please try to compile your own matlab application. As an information, matlab use Matlab Compile to C (mcc) to convert code in matlab into c++ first before converting to exe.

Artificial Neural Network Tutorial for Matlab (Presentation)

Artificial Neural Network (ANN) is my favorit algoritm because it use analogy of biological neural system. It is very interesting, neurons and axons convert to algorithm of transfer function and weight that can be adjust by activity called “learning”. When doing learning, ANN use some iteration to match the target with the input by changing it weight and some correction number, called bias.

Classification, Pattern Matching, signature identification, and other similar usage usually use ANN with some modification on input data and target. Because ANN has an ability to store memory on it neurons, some vendor use it for Pattern Matching application. There are some problem when using ANN, because when training, a lot of memory must be available if you don’t want your system being “hang”. The learning algorithm usually use the famous one, called backpropagation (from John Hopfield invention). But some research add other soft computing algorithms to enhanced the speed of learning and accuracy.

The language for creating ANN may be C++, Java or the easiest one, Matlab. I use Matlab for most of my application. Of course there is a classic problem by using Matlab, the lisence. But some language, for example, Octave, Scilab, etc, are open source and free for download. And the most important is the same syntax with Matlab. Of course we must build our function of ANN in open source language, because a lot of function (called M-file) does not available. If you want to know more about ANN with Matlab you can see www.mathworks.com or other millist, for example www.techsource.com.sg and free for sign up. This is a presentation form of explanation about ANN using Matlab you can download from techsource. Please find by your self in www.google.com.


Ok .. if you could not find, this is the link for download from my own storage: http://www.ziddu.com/download/16472066/neuralnetworkinmatlabtutorialpresentation.rar.html

Automatic Neural Network-Based Network Analyzer for Hot Spot Area

After about three months, we’ve just finished the Automatic Neural Network-Based Network Analyzer for Hot Spot Area. We created it by Matlab program and by other softwares such us Wireshark (http://www.wireshark.org) and Quick Screenshot Capture.

This system works simple by analyzing the image (with Artificial Neural Network Algorithm) from network traffic graph of wireshark that has captured periodically by Quick Screenshot Capture (or other application that available in the market). The resume will cluster the network by three cluster: Normal Condition, High Traffic Condition and Unnormal Condition. The unnormal condition may be happen if the viruses or DOS attacks threat our Hot Spot. Here is the demonstration of our application.

instead of for Network Analyzer, this system can be implemented for analyzing surveillance by using web cam or other devices.

Menampilkan gambar pada Form di Matlab

Biasanya pada gui yang kita rancang membutuhkan logo atau informasi lainnya yang berkaitan dengan software yang kita buat. Matlab menyediakan fasilitas menampilkan gambar dengan fungsi-fungsinya.

Langkah pertamanya adalah mendrag objek Axes ke layar disain Form. Karena axes inilah yang akan menayangkah gambar yang kita perlu tampilkan. Berikut ini contoh script sederhana yang diletakkan pada fungsi “Opening Function”.

 

  1. axes(handles.axes1);
  2. image(imread(‘logo’,‘jpg’));
  3. grid off;
  4. axis off;

 

Penjelasan:

Baris 1) bermaksud mengarahkan gambar (image) ke object bernama axes1 dilanjutkan dengan line 2) membaca (imread) file gambar bernama “logo.jpeg”. Baris 3) dan 4) hanya bermaksud meniadakan grid dan axis karena memang yang ditampilkan bukan grafik (citra).

 

Membuat Jaringan Syaraf Tiruan (JST) di Matlab

Beberapa literatur banyak kita jumpai baik terbitan lokal maupun internasional yang membahas mengenai JST. Teknik yang merupakan salah satu dari sekian banyak teknik dalam Soft Computing. Ada baiknya kita membaca landasan teori mengenai JST pada salah satu buku itu, bila perlu buat ulang dari algoritma yang tersedia dengan bahasa pemrograman yang Anda kuasai seperti C++, Pascal atau Java. Matlab menyediakan toolbox yang dapat kita lihat struktur programnya. Misal kita ingin tahu bagaimana Matlab membuat JST. Ketik saja di command window: >> edit newff. Maka kita dapat melihat alur program M-File yang merupakan fungsi untuk merakit JST.

Misalnya kita memiliki tiga buah masukan dan satu keluaran. Keluaran yang dihasilkan akan kita arahkan ke sasaran tertentu. Teknik ini sering dikenal dengan nama Supervised Learning. Misal kita memiliki tiga buah sampel yang masing-masing menyatakan kurang, baik, dan cukup. Katakanlah sampel itu A, B, dan C. A=[0; 0; 1], B=[1; 0; 1] dan C=[1; 1; 1]. Perhatikan, di Matlab vektor kita nyatakan dengan matriks kolom. Berikutnya, karena bertipe pembelajaran terpandu, kita harus membuat target, T=[1 5 10]. Perhatikan, untuk target matriks dibuat dengan vektor baris. Artinya jika ada masukan seperti A, keluarannya harus mendekati target=1, jika masukan B, keluaran harus mendekati 5, dan begitu pula untuk masukan C. Untuk pembelajarannya, JST melakukan secara simultan A, B dan C. Jadi input untuk pembelajarannya: Input = [A B C] yang sama dengan, Input =[0 1 1; 0 0 1; 1 1 1] yang merupakan matriks tiga baris dan tiga kolom. Jika seluruh matriks sudah diinput pada command window, maka kita sudah siap untuk merakit JST. Ketik “nntool” pada Comand Window.

Klik Import, pilih variabel input pada workspace untuk input dan T pada workspace untuk target. Klik OK saat Anda diminta konfirmasinya. Jika sudah berarti kita telah memberikan masukan dan target pembelajaran. Tinggal kita merakit JST, klik “New” dilanjutkan dengan melakukan setting di Toolbox. Pilih masukan dan targetnya (Input dan T). Secara default, jumlah neuron per layer adalah 10 (layer tersembunyi). Di sinilah letak kelemahan JST. Jika Anda gunakan neuron terlalu banyak, jangan heran jika ada pesan kesalahan “Out of Memory”.


Jika sudah OK, pada nntool, dobel klik network1. Tentu saja Anda boleh merubah nama network1 menjadi nama lain sesuai selera. Lakukan proses pembelajaran dengan mengklik “Train”. Kembali kita diminta memilih Input dan Target. Jika sudah klik “Train Network”.


Selamat, Anda telah berhasil membuat JST sekaligus melakukan pembelajaran terhadap JST tersebut dengan tiga masukan tersebut. Kembali ke nntool, langkah terakhir yang tidak kalah pentingnya adalah mengeksport JST itu ke workspace dengan mengklik tombol “Export”. Pilih salah satu saja yaitu network1, karena akan kita gunakan untuk menguji masukan tertentu apakah masuk kategori kurang(1), cukup(5) atau baik(10).

Untuk mengujinya, pada command window, jika anda ketik sim(network1,A), anda harus menemukan jawaban= 1. sim(network1,B), jawabannya harus 5, begitu juga yang C, jawaban harus 10. Coba misalkan ada data baru D=[1; 1; 0], cenderung masuk kelas baik, cukup atau kurang? Ketik saja sim(network1,D). Jawabannya adalah 10, berarti dia masuk kelas “Baik”. Mudah bukan? Tinggal tugas Anda adalah membuat tampilan visualnya (GUI) agar pengguna mudah memakai program JST yang baru saja Anda hasilkan lewat console. (Note: untuk yang ingin mengetahui competitive network, lihat posting berikutnya). Siapa tahu ada yang ingin melihat penerapan JST di identifikasi pola, lihat di sini. Atau jika ada yang tertarik untuk menerapkan JST untuk peramalan, bisa lihat di sini.


Rahmadya Trias Handayanto


Seputar Jaringan Syaraf Tiruan

Jaringan Syaraf Tiruan (JST) merupakan salah satu teknik dalam Soft Computing yang bermaksud meniru mekanisme otak biologi. Otak biologi yang terdiri dari Neron dengan Axon dan Dendritnya ditiru oleh JST berupa pembobotan pada neuronnya. Bobot dapat berisi penguatan ataupun pelemahan dengan fungsi yang berbeda-beda seperti linear, sigmoid, tangen sigmoid, dan fungsi matematis lainnya. Untuk merubah bobot agar sesuai dengan yang diharapkan perlu dibuat mekanisme pembelajaran. Salah satu teknik pembelajaran yang terkenal adalah perambatan balik (backpropagation).

Matlab menyediakan toolbox yang lengkap untuk membuat sistem JST, baik berupa fungsi ataupun layanan GUI-nya. Untuk yang gemar mempelajari Algoritma, ada baiknya Anda membaca algoritma dari M-File yang ada pada Source Code Matlab. Karena beberapa dosen tidak menyukai Matlab untuk pembelajaran karena khawatir mahasiswanya tidak berfikir tentang Algoritma pemrograman dan cenderung tinggal pakai. Sebenarnya banyak situs-situs yang menyediakan source code dengan bahasa C++ untuk sistem JST (atau mungkin Java). Akan tetapi jika anda sudah familiar dengan algoritmanya, dan ingin membangun aplikasi dengan cepat dan berpenampilan visual yang menarik, tentu saja pilihan kita jatuh ke software yang mendukung untuk itu, salah satunya adalah Matlab.

Salah satu yang kerap mengganggu saya untuk membuat aplikasi berbasis JST adalah kendala pembelajaran (learning). JST sangat membutuhkan sumber daya RAM yang tinggi, kerap kali jika neuron terlalu banyak, Matlab terkadang memunculkan pesan Out of Memory. Salah satu contohnya adalah saat saya membuat klasifikasi dari grafik yang diumpan oleh software “Wireshark” dengan target klasifikasi ke dalam kategori jaringan normal, padat ataukah tidak normal (ada virus, DOS, dan sejenisnya). Matriks gambar ukuran 200 x 300 harus sanggup saya konversi menjadi berukuran kecil bervektor kolom 100, dan tetap saja meminta saya menaikan RAM 3 Gb, padahal laptop saya memiliki RAM 2 Gb dan terpaksa saya perkecil lagi resolusinya menjadi vektor kolom 20 saja. Tentu saja akurasinya akan berkurang. Oleh karena itu saat pembelajaran sebaiknya pinjam saja komputer setara server dengan RAM yang besar dan Prosesor terbaru.


Aslinya gambar tersebut adalah grafik trafik jaringan dengan axis dan ordinat yang dibuang dengan fungsi “Imcrop” yang merupakan fungsi cropping suatu gambar untuk menghilangkan bagian lain yang diperlukan.


Pengolahan citra bermaksud mengkonversi gambar menjadi matriks dan vektor yang kemudian akan diolah oleh JST untuk keperluan pembelajaran ataupun klasifikasi ke dalam kelas tertentu. Sehingga saat dijalankan akan menghasilkan pesan tertentu.


Selamat mencoba


Rahmadya Trias Handayanto