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.

Iklan

Membuat Logika AND di Anfis

Upload Via Word, 1.11.2012. Tk. Elektronika

And merupakan operator logika dimana masukan kiri dan masukan kanan harus berharga ‘1’ jika ingin dihasilkan keluaran = 1. Untuk mempraktekannya coba buka Matlab anda. Masukkan data di matlab:

>> dat

 

dat =

 

0 0 0

1 0 0

0 1 0

1 1 1

Kemudian ketik anfisedit

Load data dari workspace yang baru saja dibuat, rancang struktur dengan dua mf di tiap tiap masukan. Hasilnya seperti ini, dibuat dua, karena rencananya hanya aka nada dua masukan dekat ke 0 atau ke 1

Lakukan training, kemudian simpan ke file. Buka fuzzy hasil create. Uji RULEnya.

Tarik garis merah ke kenan semua (berarti masukan 1 =1 dan masukan kanan 1), maka hasil output harus satu. Sebaliknya selain itu, missal kiri 0 dan kanan 1, hasilnya harus 0.

Membuat KLF di Simulink Matlab

Di antara berbagai jenis kontroler, Kontroler Logika Fuzzy (KLF) merupakan jenis kontroler terbaru dan memiliki kelebihan dari sisi kepraktisan dibanding dengan Proporsional Integral dan Differensial (PID) yang telah lama digunakan. Untuk mempraktekan KLF, buka Matlab.

  1. Arahkan “Current Directory” ke folder Anda.

  2. Kita akan mencoba membuat KLF paling sederhana, hanya dengan satu masukan, misalnya SUHU. Ketik “fuzzy” di command window.

  3. Secara default, Matlab memberikan satu masukan dengan satu keluaran, dan jenis fuzzy “Mamdani”. Baca teori fuzzy untuk mengetahui jenis-jenis fuzzy. Ganti nama input1 menjadi “error” dan output1 menjadi “respon”.
  4. Berikutnya adalah menyeting “Fungsi Keanggotaan (Membersip Function)“. Dobel klik pada masukan (error). Untuk sistem pemanas, kita akan membagi hanya menjadi dua MF, yaitu error yang rendah dan yang tinggi dengan range (jangkauan) antara -10 hingga 90 derajat. Maksudnya, jika error 90 derajat, berarti selisih antara masukan dengan keluaran sebear 90 derajat. Sedangkan -10 terjadi ketika keluaran lebih besar dari masukan. Tetapi kita masukan saja jangkauannya antara -90 dan 90 derajat.

  5. Berikutnya kita merancang keluaran (respon), dengan menekan respon. Sama dengan error, respon misalnya hanya ada dua MF, yaitu hidup dan mati dengan range antara 0 sampai satu.

     

  6. Setelah mengeset masukan dan keluaran, langkah terpenting adalah membuat rule (aturan) dengan if – then. Jika suhu keluaran dingin maka pemanas dihidupkan. Dingin berarti errornya tinggi, maka buat rule: jika error tinggi then respon hidup. Sebaliknya jika suhu keluaran melebihi set point (panas) maka pemanas dimatikan, rule-nya: jika error rendah then respon mati.

  7. Langkah berikutnya adalah menyimpan FUZZY dengan cara klik File – Export – to File. Beri nama, misalnya “pemanas”. Jika Anda lihat di folder kerja, akan tampak satu file fuzzy dengan nama “pemanas.fis”.
  8. Untuk mengujinya buka jendela model, klik (simulink), gambar bentuk di bawah ini, jika tidak bisa menemukan Fuzzy Logic Controller (FLC) ketik “fuzzy” di searching. Dobel klik pada “Fuzzy” di simulink, isi parameter dengan ‘pemanas.fis’ (gunakan petik satu).

     

  9. Jalankan dengan menekan tombol RUN. Lihat hasilnya dengan merubah-rubah nilai masukan. Hasilnya tampak pada Display.

  10. NOTE: untuk Matlab versi 7.0 ternyata ada masalah di Deffuzifikasi, oleh karena itu ganti metode defuzzifikasinya dari centroid menjadi “bisector”. 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.

Asyiknya Sidang Tugas Akhir

Selain mengajar dan meneliti, ternyata ada satu lagi aktivitas yang mengasyikkan sebagai dosen, yaitu menyidang tugas akhir / skripsi mahasiswa. Walau terkadang didapati mahasiswa yang kurang serius, ternyata banyak juga yang serius dan kreatif, terutama saat mengatasi permasalahan-permasalahan yang dihadapi. Periode yang lalu merupakan periode sidang tugas akhir/skripsi yang menurut saya menarik terutama saat peragaan alat robot. Permasalahan yang muncul ternyata bukan hanya masalah teknis saja, keuangan juga harus menjadi bahan pertimbangan.

 

Robot tampak bergerak timpang karena kurangnya motor penggerak kaki, sehingga mahasiswa menggunakan rangkaian penyambung antara kaki depan dengan belakangnya. Terlepas dari itu, ketekunannya menyelesaikan tugas akhir D3 patut diacungi jempol. Selamat.

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/

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.

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.

Mengarahkan Fuzzy C-Mean ke “Jalan Yang Benar”

Clustering merupakan masalah yang lumayan rumit. Misalkan kita punya serangkaian data yang terdiri dari dua kategori yaitu nilai IPA dan nilai IPS. Jika kita lakukan klasifikasi langsung dengan FCM kita tidak serta merta mendapatkan hasil klasifikasi nilai yang rata-rata besar di IPA dan yang rata-rata besar di IPS. Mengapa demikian? Karena ada kemungkinan data tersebut terklasifikasi menjadi nilai yang rata-rata IPA dan IPS kecil dan nilai rata-rata IPA dan IPS besar. Berikut ini grafik hasil olah data yang dilakukan oleh contoh help matlab (ketik help fcm). Coba lihat … data tercluster menjadi siswa yang pinter IPA dan IPS dengan yang bodoh IPA dan IPS, padahal yang kita cari siswa yang cenderung IPA (nilai IPA > IPS) dengan yang cenderung IPS (nilai IPS>IPA).


Oleh karena itu agar kita memperoleh klasifikasi antara kelompok IPA dan kelompok IPS kita harus menambahkan satu kategori di kolom berikutnya. Katakanlah jika kelompok IPA (besar nilai IPA-nya) kita kategorikan “1” dan sebaliknya IPS dengan “0”. Pindahkan ke Excel lalu beri satu kolom baru dengan instruksi IF: “=IF(A1<B1;0;1)”. Sehingga diperoleh data baru yang akan diklasifikasi oleh fcm.


… dst

Rename data lama dengan data baru yang tiga kolom ini, lakukan instruksi fcm seperti pada help fcm:

[center,U,obj_fcn] = fcm(data,2);

plot(data(:,1), data(:,2),’o’);

hold on;

maxU = max(U);

% Find the data points with highest grade of membership in cluster 1

index1 = find(U(1,:) == maxU);

% Find the data points with highest grade of membership in cluster 2

index2 = find(U(2,:) == maxU);

line(data(index1,1),data(index1,2),’marker’,’*’,’color’,’g’);

line(data(index2,1),data(index2,2),’marker’,’*’,’color’,’r’);

% Plot the cluster centers

plot([center([1 2],1)],[center([1 2],2)],’*’,’color’,’k’)

hold off;

center:

0.6525 0.2942 0.9853 à Pusat cluster IPA

0.3025 0.5733 0.0113 à Pusat cluster IPS

Hasilnya dapat dilihat pada grafik di bawah ini:


Hasilnya akurat bangettttt …

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