CNN Menggunakan Matlab

Convolutional Neural Network (CNN) merupakan model awal Deep Learning. Model ini menerapkan prinsip konvolusi dengan proses filtering bertahap sebelum diperkecil dengan teknik pooling. Manfaatnya untuk mengurangi resolusi citra input agar mudah diproses sistem.

2D_Convolution_Animation

Untuk mencoba CNN dengan MATLAB bisa menggunakan MATLAB online (lihat pos yang lalu). Salah satu kendala MATLAB adalah harga lisensi yang mahal. Namun untuk pemula ada baiknya karena MATLAB menyediakan sumber yang lengkap dalam fasilitas helpnya, misal link berikut. Dan sumber tersebut gratis. Jika sudah mengerti silahkan lanjut ke Python, C++ dan lain-lain yang open source.

Berikut video materi kuliah online tentang CNN. Semoga bermanfaat.

Menjalankan MATLAB Gratis via Mathworks.com

MATLAB merupakan bahasa pemrograman yang dibuat oleh Mathworks, inc. Keunggulannya adalah kemampuan dalam mengelola matriks dan array. Sehingga bagi pemula lebih mudah mempelajarinya dibanding bahasa Python, apalagi bahasa C dan sejenisnya.

Salah satu kelemahan terbesarnya adalah lisensi yang cukup mahal. Versi terbaru sekitar 30-an juta rupiah. Jadi untuk industri pembuatan software kurang menguntungkan. Alhasil, bahasa ini untuk akademisi banyak digunakan tetapi di industri kurang diminati, jika dibandingkan dengan bahasa open source lainnya seperti Python atau Java.

Untungnya banyak cara untuk menggunakan aplikasi MATLAB tanpa membeli lisensi, tentu saja dengan cara yang legal, antara lain trial dan online. Karena trial hanya berlaku sebulan, maka cara kedua lebih layak, yaitu via online dengan mengakses www.mathworks.com.

Video berikut ini menjelaskan penggunaan MATLAB online untuk kasus Neural Networks. Di sini sedikit dijelaskan terlebih dahulu apa yang membedakan Artificial Intelligence dengan Computational Intelligence, atau yang dulu sering disebut Soft Computing.

Online Learning Using MATLAB

Today, it is undeniable that most machine learning researchers use Python, especially in industry. However, in research, due to its ease of use, MATLAB is still often used, especially those that are not too focused on coding.

One of the main problems of MATLAB users is, the license price is very expensive. Fortunately, registration to mathworks.com is still free and you can learn machine learning for free in the help and support section.

The data is already available in MATLAB, so it can be used as a reference/benchmarking. From a research perspective, MATLAB can be used as a fair ‘measurement’ and other researchers can also test it. So that the good or bad of a method does not depend on the machine or the quality of coding which may differ from one researcher to another.

The following video shows how to run Matlab online via mathworks.com. That’s all for this post, I hope it’s useful.

Transfer Learning with Matlab

Transfer learning is a term that is often encountered by deep learning practitioners. For those who do not understand, the following explanation may be useful.

In accordance with the ‘word’, transfer learning means using past learning to use new domains or cases. The benefit is that we don’t learn from scratch again. The easiest way is to freeze the pretrained model termed pretrained, and replaces the last layer of the old number of classes with the new model class.

The following video uses Matlab 2021a to demonstrate how transfer learning works, along with techniques for freezing and augmenting data with rotation and translation. The benefit of augmentation is to increase the amount of training data by changing ‘slightly’ from the initial training data.

Menghitung Mean Intersection over Union (mIoU)

Pada postingan yang lalu telah dibahas cara menghitung matriks konfusi. Matriks ini dapat digunakan untuk menghitung akurasi. Saat ini perhitungan akurasi dengan Mean Intersection over union (miou) banyak dipakai mengingat metode ini memberikan perhitungan yang ketat. Hal ini sangat memudahkan analisa dimana % akurasi model saat ini yang sudah sangat akurat (90% lebih).

Dengan perhitungan yang ketat diharapkan model usulan dapat dengan mudah membandingkan antara satu metode dengan metode lainnya. Prinsip dasarnya adalah mIoU membandingkan intersection prediksi dan ground truth (aktual) dengan union (gabungan) prediksi dan ground truth.

Secara logis, IoU lebih kecil dari % acurasi karena bagian penyebut hanya melihat sisi prediksi saja, yakni Area of Overlap/area of Prediction. Secara matematis persamaan berikut menunjukan IoU dengan tambahan False Negative (FN) yang merupakan sisi ground truth yang salah tebak.

Jika pada postingan yg lalu akurasi dapat langsung dihitung dengan menjumlahkan diagonal matriks konfusi sebelum dibagi total area, mean IoU dihitung dengan cara mererate seluruh IoU tiap-tiap kelas/segmen. Misal kasus berikut:

Matriks konfusi di atas menunjukan baris sebagai prediksi dan kolom sebagai nilai aktual/groundtruth. Misal, kita ingin menghitung IoU kelas ke-3 (yang berwarna kuning di atas). Dari rumus 8 di atas True Positive (TP) sebesar 62.413. Berikutnya menghitung False Positive (FP) dan False Negative (FN).

Nilai yang disorot warna hijau di atas merupakan FP dimana memprediksi kelas ke-3 tetapi hasilnya kelas yang lain. Sementara nilai yang disorot warna merah menunjukan nilai FN dimana ‘memprediksi yang bukan kelas ke-3 tetapi secara aktual (kolom) adalah kelas ke-3. Koding Matlab adalah sebagai berikut untuk kelas ke-3.

  • iou_3=matriks(3,3)/(sum(matriks(3,1:end))+sum(matriks(1:end,3))-matriks(3,3))

Bisa saja Anda menggunakan teknik yang lain misalnya menjumlahkan satu persatu tiap elemen, tapi lebih panjang sebagai berikut. Tapi yang penting logikanya mengerti.

  • iou_3=matriks(3,3)/( matriks(3,3)+ matriks(3,1)+ matriks(3,2)+ matriks(3,3)+ matriks(3,4)+ matriks(3,5)+ matriks(3,6)+ matriks(1,3)+ matriks(2,3)+ matriks(4,3)+ matriks(5,3)+ matriks(6,3)

Untuk menghitung rata-rata IoU, atau disingkat mIoU, caranya adalah menghitung IoU seluruh kelas, lalu merata-ratakannya seperti rumus 9. Diperoleh miou = 0.6391. Selamat mencoba.

Matriks Konfusi (Confusion Matrix)

Mengetahui performa model yang dirancang merupakan kewajiban bagi perancang model. Fungsinya adalah menjamin kualitas model usulan sebelum diimplementasikan. Apalagi jika model yang dirancang merupakan mesin pemelajaran (machine learning) yang memang mengandalkan data latih dan data uji dalam proses pemodelannya.

Salah satu metode yang biasanya digunakan dalam menghitung performa sebuah model adalah matriks konfusi. Prinsipnya sangat sederhana yaitu membandingkan hasil prediksi dengan data aktual. Data aktual untuk beberapa bidang, misalnya segmentasi semantik, sering disebut ground truth.

Menghitung Matriks Konfusi

Prinsip kerja menghitung matriks konfusi adalah dengan membandingkan ‘head-to-head’ hasil prediksi dengan ground truth. Pertama-tama adalah mengkonversi matriks menjadi vektor. Biasanya untuk data citra yang berupa piksel 2D, sehingga harus dikonversi menjadi vektor baris/kolom.

  • prd=reshape(prediksi,1,[]);
  • gt=reshape(groundtruth,1,[]);
  • matriks=confusionmat(prd,gt)

Perhatikan fungsi confusionmat adalah fungsi membuat matriks konfusi dimana parameter pertama, prd akan menjadi baris pada matriks konfusi, sementara parameter kedua, gt, akan menjadi kolom.

Angka-angka di atas merupakan jumlah elemen, misalnya baris kedua kolom kedua (192965) artinya ada sebanyak 192.965 elemen dimana prediksi kelas ke-2 yang sama dengan aktualnya (kelas ke-2 juga). Secara gampangnya, diagonal pada matriks konfusi merepresentasikan dengan jumlah yang tepat.

Menghitung Akurasi

Karena diagonal merepresentasikan jumlah prediksi yang tepat, maka prosentase akurasi merupakan jumlah yang tepat (elemen diagonal) dibagi dengan seluruh data. Secara sederhana program menghitung matriks konfusi di atas dilanjutkan dengan:

  • [baris,kolom]=size(matriks);
  • total=0;
  • for i=1:baris
  • total=matriks(i,i)+total;
  • end
  • akurasi=total/(sum(matriks,’all’))

Jika dijalankan akan menghasilkan akurasi dari matriks konfusi tersebut. Untuk Matlab, menghitung akurasi dapat dilankukan langsung dengan fungsi classperf dari matriks yang akan dibandingkan.

Perhatikan ‘CorrectRate’ gambar di atas yang menunjukan akurasi sebesar 0,8966 atau 89,66%. Untuk melihat hasil akurasi dengan cara mengetik akurasi.CorrectRate pada command window. Bagaimana dengan perhitungan jenis lainnya? Akan kita bahas pada postingan berikutnya, yaitu Mean Intersection over Union (mIoU) yang saat ini menjadi standar perhitungan akurasi, khususnya segmentasi semantik.

Running JApplet Pada Browser

JApplet merupakan fasilitas java yang dapat berjalan pada web lewat browser (chrome, mozilla, safari, dll). Berbeda dengan PHP yang terletak di sisi server (server side), applet berjalan di sisi klien (client side). Versi terbaru dari Applet adalah JApplet yang mempermudah programmer merakit GUI pada Netbeans.

Karena sifatnya yang berjalan di sisi klien, beberapa browser menganggap Applet berbahaya dan tidak lagi disarankan, seperti flash yang lebih dulu dihentikan operasinya. Apalagi dengan bahasa Java yang powerful, jika Applet itu dibuat oleh pihak yang tidak bertanggung jawab, akan merugikan pengguna karena sifatnya yang ‘mengunduh’ dan ‘eksekusi’ di komputer klien. Namun, Chrome masih melihat manfaat Applet sehingga memasukan ekstensinya agar bisa menjalankan browser: https://chrome.google.com/webstore/detail/cheerpj-applet-runner/bbmolahhldcbngedljfadjlognfaaein/related.

Namun Applet tidak bisa dijalankan tanpa menggunakan server, oleh karena itu terlebih dahulu harus menginstall server, misalnya Apache pada XAMPP.

Build Applet pada Netbeans setelah selesai dirakit dan dites. Sisipkan dengan kode berikut di bagian body.

<applet code=TicTacToe.class

archive=”TicTacToe.jar”

width=120 height=120>

</applet>

Misalnya kelas yang akan diakses ‘TicTacToe.class’ dengan JAR hasil build ‘TicTacToe.jar’. Ekstensi ‘class’ merupakan hasil build (atau clean and build). Jalankan aplikasi via browser dengan mengakses alamat web, dan jalankan extension chrome utk applet. Tunggu beberapa saat dan pastikan aplikasi berjalan dengan baik.

Silahkan lihat video youtube ini untuk lebih jelasnya, selamat mencoba.

Kompetisi Deep Learning

Tidak hanya American atau Indonesian’s Idol, ternyata ada juga kompetisi model Deep Learning dengan nama ImageNet Large Scale Visual Recognition (ILSVR) Challenge (lihat link resminya). Kompetisi berlangsung dari tahun 2010 hingga tahun 2017. Entah mengapa berhenti di tahun itu, mungkin karena akurasinya yang sudah sangat tinggi mirip kecerdasan manusia.

LeNet

Model ini digagas oleh pakar Deep Learning ternama, Yann LeCun di tahun 98. Mungkin nama “Le” diambil dari “LeCun”. Dengan keterbatasan hardware jaman itu tetapi model ini bekerja sangat baik dengan konsep konvolusi, sehingga sering disebut Convolusion Neural Network (CNN atau ConvNet).

Yann LeCun

AlexNet

Model ini sesuai namanya digagas oleh Alex dan kawan-kawan tahun 2012. Tahun sebelumnya dimenangkan oleh organisasi ternama, yakni Xerox. Model AlexNet banyak dikembangkan oleh organisasi-organisasi lain yang juga memenangkan kontes ILSVRC.

Alex Krizhevsky

GoogLeNet

Google dengan peneliti-penelitinya mampu menang di kontes tahun 2014. Dengan modul insepsi-nya yang mengurangi jumlah parameter AlexNet yang sebesar 60 juta menjadi 4 juta saja.

VGG Net

Model ini memang kalah oleh GoogLeNet, tetapi karena sifatnya yang terbuka, sangat disukai oleh komunitas visi komputer. Akurasinya pun hanya selisah 1 % saja dari GoogLeNet. Berbeda dengan GoogLeNet yang berbasis LeNet dari Yann LeCun, VGG Net berbasis AlexNet.

ResNet

Model ini singkatan dari Residual Neural Network yang menggunakan konsep residual. Gate yang ada di ResNet diterapkan dengan baik oleh Recurrent Neural Network (RNN) untuk data yang berbasis waktu (temporal).

Tokoh DL: Yann Lecun (Fb), Geoffrey Hinton (Google), Yoshua Bengio (Univ Montreal), Source: Link

Untuk menyaingi model-model di atas, walaupun tidak mustahil, sepertinya bagi mahasiswa-mahasiswa kita agak sulit. Hal ini karena model-model di atas dibuat oleh tim dari organisasi-organisasi besar seperti Xerox, Google, Facebook, dan puluhan lainnya. Mungkin kita bisa mengambil metode-metode itu untuk diterapkan di piranti-piranti kecil dan sederhana agar lebih bermanfaat, terutama pada aplikasi-aplikasi online untuk mendukung UMKM. Semoga bisa menginspirasi.

Dari Neural Networks ke Deep Learning

Neural Networks (NN) merupakan machine learning yang sudah dikenal lama. Pasang surut metode ini dapat dijumpai dari rekam jejak penelitiannya. Dari problem utama exclusive or (XOR) yang tidak dapat dikerjakan hingga ditemukannya backpropagation membuat metode ini timbul tenggelam. Termasuk kisah para pelopor bidang ini, dari yang sempat kuliah lagi di kedokteran hingga ada yang harus cuti karena tidak ada uang kuliah. Maklum bidang yang waktu itu masih baru dan belum jelas apakah bisa diselesaikan atau tidak.

Walter Harry Pitts & Jerome Lettvin, Cognitive Science, Source: Link.

Peran Google

Di tahun 2000-an ketika menyusun tesis, laptop yang saya gunakan untuk memproses NN sempat “hang” karen mengelola citra tanda tangan yang berukuran besar. Beberapa peneliti waktu itu, terutama yang dari Indonesia, mengurangi resolusi menjadi sangat kecil, mirip dengan seven segment agar bisa diproses. Terpaksa waktu itu saya menggunakan prinsip encoder agar tidak membuat vektor yang panjang, jadi prinsipnya hanya pencocokan pola, bukan identifikasi pola. Toh hanya digunakan untuk sistem absensi.

Ternyata perkembangan NN, khususnya untuk menangani citra berukuran besar sangat pesat, terutama ditemukannya CNN oleh Yann Lecun. Prinsip konvolusi dibantu dengan pooling mampu menurunkan resolusi citra hingga berukuran kecil tanpa menghilangkan “ciri” lewat preprocessing yang terintegrasi dengan NN. Di sinilah konsep DL muncul, yang di awal-awal sering disebut Deep Neural Network karena memiliki layer dan neuron yang banyak dan dalam.

Tokoh DL: Yann Lecun (Fb), Geoffrey Hinton (Google), Yoshua Bengio (Univ Montreal), Source: Link.

Peran utama Google cukup besar dengan menyediakan konsep tensorflow, serta menyediakan Google Colab untuk dipakai bersama. Hal ini tak luput dari perkembangan hardware yang kian cepat dan murah, terutama memori dan Graphic Processing Unit (GPU) yang bekerja paralel, ditambah lagi Tensor Processing Unit (TPU) yang bekerja hingga level matriks. Saat ini DL mampu memproses citra dengan memasukan unsur waktu/temporal dengan Recurrent Neural Network (RNN) dengan salah satu andalannya Long Short Term Memory (LSTM).

Bagaimana Riset DL Untuk Pemula?

Problem yang muncul adalah bagaimana memulai riset di bidang yang sangat cepat perkembangannya. Beberapa metode seperti VGG, AlexNet, dll bahkan memiliki akurasi yang mendekati 100% sehingga pemula akan kesulitan jika ingin mengalahkan metode-metode tersebut, bisa-bisa kelamaan kuliah doktoralnya.

Untuk mahasiswa master sepertinya tidak ada masalah, karena dengan membandingkan beberapa metode DL untuk kasus terapan di domain tertentu, kemudian membahas mana yang cocok. Nah, mahasiswa doktoral harus menemukan kebaruan/novelty dar metode-metode tersebut. Agak sulit memang tetapi pilihan ada dua, fokus ke metode atau ke domain dimana metode tersebut dipakai. Untuk metode, jika sulit mengalahkan akurasi, bisa mencoba improve di sisi efisiensi, ringan, dan bisa diterapkan di alat-alat kecil (embed). Atau hibrid/menggabungkan dengan metode lain baik di core-nya atau di parameter tertentu, silahkan searching riset-riset terkini.

Untuk fokus ke domain, kita harus belajar penerapan DL, misalnya jika untuk kedokteran, mau tidak mau harus mempelajari bidang spesifik kedokteran tersebut. Misalnya DL untuk mendeteksi COVID lewat hembusan nafas yang di kita dikenal dengan GeNose. Untuk optimasi lahan, misalnya, kita harus mempelajari data spasial serta konsep-konsep Sistem Informasi Geografis.

Bahasa Pemrograman

Saat ini Python masih menjadi andalan untuk menerapkan DL. Banyak contoh-contoh program yang dishare oleh peneliti-peneliti, misalnya via Github. Ketik saja di Google dengan kata kunci: “Colab <metode>”, maka kita segera menemukan Share program Python metode yang dicari tersebut. Tentu saja untuk yang ingin menerapkan ke piranti mobile atau embed terpaksa harus belajar bahasa lain seperti C++ atau Java dan Android.

Berikut video Youtube contoh mempelajari DL, sekaligus bagaimana mengelola data via Google Drive yang efisien dan murah-meriah. Sekian semoga tertarik.

Ngobrol Tentang Deep Learning – Webinar APTIKOM Jabar #1

Salah satu metode machine learning yang saat ini berkembang pesat adalah Deep Learning (DL). Metode ini merupakan kelanjutan dari Neural Networks dengan tambahan preprocessing di layer awal yang berfungsi mengekstrak ciri suatu citra, yaitu konvolusi dan pooling.

Jumlah layer yang banyak beserta neuron-neuronnya membuat DL sulit melakukan proses pelatihan (training) jika menggunakan metode biasa. Dengan hanya mengandalkan hardware biasa, waktu itu laptop sempat ‘hang’ ketika melatih sistem pengenalan tanda tangan dengan ukuran vektor citra yang besar (ribuan bahkan puluhan ribu baris/kolom per objek). Namun saat ini python menyediakan teknik agar proses pelatihan dilakukan di Graphic Processing Unit (GPU) dan Tensor Processing Unit (TPU) bukan hanya mengandalkan CPU. Postingan ini terinspirasi dari hasil webinar tadi pagi dimana saya ditunjuk menjadi moderator.

Akurasi model-model DL saat ini sudah luar biasa tinggi dan hampir mendekati 100%. Terlepas dari riset yang membuat model-model tersebut, beberapa permasalahan masih membutuhkan solusi. Salah satu problem adalah ketika akan menerapkan DL pada piranti-piranti kecil/embedded yang kebanyakan memiliki spesifikasi yang berbeda dengan komputer yang memang dikhususkan untuk komputasi.

DL sudah merambah bidang-bidang lain di luar ilmu komputer misalnya kesehatan, pertanian, geografi, dan lain-lain. Problem utama DL adalah karakternya yang karena menyerupai syaraf makhluk hidup terkadang sulit menemukan logika atau rule yang mendasari pengambilan keputusan model DL, dan menyebutnya dengan istilah black box. Walau bukti akurasi sudah nyata, terkadang seorang dokter membutuhkan alasan yang mendasari keputusan dari suatu model DL. Berbeda jika menggunakan metode fuzzy atau decision tree serta turunannya yang memiliki rule mengapa suatu model DL menyimpulkan suatu hasil.

Pembicara webinar merupakan alumni kampus Jepang. Saya sendiri pernah satu semester diajar oleh dosen alumni Tokyo University dan memang isi kuliah sangat teknis sekali dimana membutuhkan kemampuan matematik, baik aljabar linear untuk pengolahan matriks maupun persamaan diferensial untuk memahami prinsip pelatihan/training, misalnya gradient descent (GD), lavenberg marquadt (LM). Ada juga saran-saran untuk mahasiswa doktoral, khususnya bidang ilmu komputer, antara lain di enam bulan pertama harus segera terjun ke bidang yang digeluti sesuai dengan lab-lab yang ada di kampus, mencari informasi dari periset-periset lain misalnya via Github. Lebih jelasnya silahkan lihat pada Youtube berikut. Sekian semoga bermanfaat.

Belajar Recurrent Neural Network

Neural Network sejak lama diakui memiliki kemampuan mengenali citra atau pola tertentu. Beberapa metode seperti NARXNET telah dipakai untuk proyeksi/peramalan. Jika Deep Learning menggunakan Convolutional Neural Network (CNN) untuk mengenali citra, untuk mengenali data sekuensial Deep Learning menggunakan Recurrent Neural Network (RNN).

Untuk memahami metode RNN, kita banyak menjumpai di internet dengan bentuk animasi-animasi yang membantu memudahkan pemahaman. Jika ebook atau situs blog sulit, silahkan tonton video dari kanal-kanal youtube: https://www.youtube.com/watch?v=LHXXI4-IEns atau https://www.youtube.com/watch?v=Y2wfIKQyd1I. Untuk yang detil mungkin dari Massachusetts Institute of Techonology: https://www.youtube.com/watch?v=SEnXr6v2ifU.

RNN muncul karena CNN tidak sanggup mengklasifikasi data sekuensial/berurutan. Bayangkan kalimat: “i am a boy” dengan 4 buah bag of words (I, am, a, boy) tidak bisa membedakan dengan kalimat: “am I a boy” (lihat: https://www.youtube.com/watch?v=esrv7bahlng).

Untuk memahami RNN, kita harus menguasai dasar-dasar neural network, terutama feed forward beserta fungsi tangen sigmoid. Beberapa library seperti pada TensorFlow, sudah menyediakan fasilitas ini. Google translate memanfaatkan RNN, termasuk juga suggestion kata berikut ketika mengetik. Yuk, belajar implementasinya dengan Python.

Belajar Convolutional Neural Network

Kira-kira belasan tahun yang lalu saya mencoba menggunakan neural network untuk mengenali sebuah pola, misalnya tanda tangan. Beberapa referensi yang saya rujuk menggunakan metode menurunkan resoluse agar bisa diolah di komputer. Hal ini dilakukan karena sebuah objek citra harus dikonversi menjadi vektor yang tadinya matriks 2D. Tentu saja mengurangi resolusi mengakibatkan akurasi yang turun drastis. Namun beberapa tahun kemudian, deep learning diperkenalkan untuk mengatasi hal ini, salah satu tekniknya adalah Convolutional Neural Network (CNN).

Banyak sumber-sumber belajar deep learning di internet. Untuk pemula ada baiknya mencari sumber yang ringan dulu, biasanya disertai dengan simulasi dan durasinya yang kurang dari 10 menit agar tidak lelah, contohnya link youtube ini (https://www.youtube.com/watch?v=oI2rvjbzVmI).

Convolutional

Inti dari CNN selain dari neural network adalah prinsip convolutional, prinsip statistik yang dimanfaatkan untuk preprocessing di layer-layer awal CNN. Jika dulu saya gagal mereduksi neural network karena langsung mereduksi, pada CNN dengan layer convolutional di awal, fitur dapat diekstraksi ciri-nya lewat mekanisme filter. Filter yang digunakan pun lebih dari satu untuk menghasilkan ekstrasi ciri yang baik. Tentu saja ada istilah-istilah khusus pada tahap ini, baik dari cara memproses maupun sekedar istilah-istilahnya.

Pooling

Pooling di sini bermaksud mereduksi ukuran citra hasil convolution agar proses lebih cepat. Bayangkan satu citra berukuran 100×100 piksel maka jika akan diolah oleh neural network akan dikonversi menjadi array berukuran 10000 yang jika diolah dengan komputer langsung hang. Untuk mereduksi, Pooling bekerja dengan mekanisme baik mengambil nilai tertinggi dalam satu matriks ukuran tertentu (max pooling), misalnya 3×3, atau dengan mencari rerata dari matriks itu.

Fully Connected

Ini merupakan metode yang dipakai dalam neural network. Bedanya di sini karena mekanisme convolutional ada beberapa citra hasil filtrasi (jika lebih dari satu filter). Satu hal yang unik dari CNN adalah penggunakan fungsi softmax di akhir proses yang berisi angka-angka probabilitas. Nilai tertinggi merepresentasikan kelas terpilih hasil klasifikasi. Salah satu manfaat dari banyaknya sumber belajar di internet adalah kita bisa memilih mana satu sumber yang cocok dengan style kita. Jika di satu ebook/video/blog kurang dimengerti, segera cari sumber lain. Sekian, selamat belajar deep learning.

Membuat Tensor Sederhana dengan TensorFlow pada Google Colab

Istilah tensor dijumpai dalam matematika, khususnya dalam aljabar. Tensor sebenarnya bentuk umum dari besaran, jika dimensinya nol berarti skalar dan jika berdimensi satu ke atas, maka disebut vektor dan matriks. Istilah tensor digunakan juga oleh Google dalam library python “TensorFlow”. Istilahnya mirip tensor, terutama ketika mengelola vektor dan matriks.

Dalam penerapannya, TensorFlow sedikit membingungkan karena memiliki dua fase: konstruksi dan eksekusi. Tensor ketika digunakan berupa graph yang berisi nodes dan edges. Jika nodes berisi operasi, edges berisi tensor. Sementara itu, fase eksekusi membutuhkan session.

Untuk lebih jelsnya silahkan buka Google Colab. Buat satu notebook baru, beri nama misalnya FirstTensor.ipynb. Disini kita akan membuat satu tensor sederhana yang berisi satu variabel konstant 30. Operasi yang dilakukan adalah mencetak (print) konstanta tersebut. Masukan kode berikut dalam sel colab tersebut.

Di sini tensorflow versi 1.x digunakan. Secara default Colab menyediakan versi 2.x. Perhatikan sel pertama berisi impor library tensorflow. Line pertama merupakan instruksi standar penggunaan tensorflow versi 1. Sel kedua berisi konstruksi variabel konstan x=30. Selain itu dibuat satu session dengan nama “sess” yang kemudian dioperasikan berupa fungsi print.

Sepertinya agak ribet karena untuk mencetak konstanta 30 saja butuh beberapa line. Namun mengingat satu sesi bisa diterapkan untuk satu prosesor (GPU) maka komputasi bisa dilakukan dengan banyak prosesor yang bekerja secara paralel. Jadi walau agak sedikit merepotkan di awal tetapi ketika diterapkan dengan banyak prosesor, hasilnya lebih cepat. Biasanya diterapkan dalam sebuah framework deep learning. Sebagai ilustrasi, tensor dalam graph di bawah ini.

Hasil perkalian a dan b akan dikurangi hasil penjumlahan b dan c. Instruksi pythonnya adalah sebagai berikut menlanjutkan dari instruksi sebelumnya.


import numpy as np
a = tensorflow.constant(np.array([5, 7, 10]))
b = tensorflow.constant(np.array([2, 3, 21]))
c = tensorflow.constant(np.array([3, 5, 7]))
d = a * b  # tensorflow.multiply(a,b)
e = c + b  # tensorflow.add(c,b)
f = d - e  # tensorflow.subtract(d,e)
sess = tensorflow.Session()
outs = sess.run(f)
sess.close()
outs

Jalankan dan hasilnya harus sama dengan gambar di atas [5,13,182]. Selamat mencoba tensor dalam tensorflow.

Ref:

Self-Supervised Learning di AIS 2020

Hari ini ada acara spesial yakni Artificial Intelligence Summit (AIS) 2020. Beberapa keynote akan dilaksanakan. Salah satunya nanti Yann LeCun, penemu self-supervised learning. Hari ini pengenalan Self-Supervised Learning (SSL) diberikan oleh Prof Bambang dari ITB. Ide menarik dari metode ini adalah bahwa manusia belajar ketika anak-anak sebagian besar tanpa “supervised”/panduan. Mereka menggunakan self-supervised yang dalam SSL dikenal dengan kombinasi pretext dan downstream task.

Jenis pretext task ada banyak antara lain: rotation, colorization, in-painting, jigsaw, placing image patches, dan lain-lain. Presentasi disertai dengan demo program menggunakan Google Colab, lihat di sini programnya. Disertakan pula link Github sumbernya. Silahkan lihat record-nya di Youtube, atau video di bawah ini.

Adaptive Neuro-Fuzzy Inference System (ANFIS) dengan Python

Adaptive Neuro-Fuzzy Inference System (ANFIS) merupakan metode yang menggabungkan Jaringan Syaraf Tiruan (JST) dengan Fuzzy. Konsepnya adalah menjadikan “rule” sebagai “neuron”. Jumlah layer tersembunyi (hidden) hanya satu layer. Salah satu situs yang OK untuk mempraktikan ANFIS dengan bahasa pemrograman Python adalah salah satu TIM dari MIT di link berikut ini. Source code bisa diunduh dan penjelasannya lewat situs Github.

Instal Library ANFIS

Anaconda tidak memiliki pustaka ANFIS, oleh karena itu perlu mengunduh menggunakan PIP. Selain itu pustaka yang dibuat sendiri juga disertakan, misalnya anfis.py dan folder membership yang berisi dua file penting lainnya. Untuk mengetahui bagaimana fungsi eksternal bekerja silahkan lihat postingan saya yang lalu.

Menggunakan Google Colab

Memang lebih mudah menggunakan Google Colab karena sebagian besar pustaka sudah tersedia. Hanya saja untuk ANFIS terpaksa harus menginstal terlebih dahulu. Caranya adalah seperti instalasi PIP lewat terminal, hanya saja disini menggunakan tanda seru di awalnya.

Ketik !pip install anfis. Tunggu beberapa saat hingga Google Colab berhasil mengunduh dan menginstal pustaka ANFIS tersebut. Jangan lupa, file-file pendukung unggah di bagian File di sisi kiri Google Colab. Pastikan ketika impor pustaka di sel berikutnya berhasil. Buat folder baru dengan nama membership lalu isi dengan file pendukungnya. Jangan diletakan di luar semua.

Berikutnya adalah mengambil data latih dari file “beasiswa.txt”. Pastikan X dan Y sesuai dengan yang diinginkan sebagai data latih dan targetnya. Silahkan cari sumber referensi mengenai membership function. Di sini mf berfungsi mem-fuzzy-kan inputan. Jalankan dan pastikan grafik performa pelatihan muncul.

Perhatikan hasil latih yang berwarna merah sudah mendekati target yang berwarna biru. Satu untuk memperoleh beasiswa dan nol untuk yang tidak memperoleh beasiswa. Gunakan satu data sampel untuk menguji apakah menerima beasiswa atau tidak.

Perhatikan untuk input1 3.2 dan input2 3.4 hasilnya adalah 1. Silahkan menggunakan fungsi “round” untuk membulatkan apakah nol atau satu. Untuk jelasnya lihat video berikut ini. Sekian semoga bermanfaat.