Pengenalan Autoencoder : neural network untuk kompresi data

Autoencoder

Autoencoder adalah salah satu varian dari jaringan saraf tiruan (JST) yang secara umum digunakan untuk meng-“encode” suatu data. Berbeda dengan arsitektur JST pada umumnya yang dilatih untuk mengklasifikasi atau menghitung nilai regresi dari masukan, autoencoder dilatih untuk dapat menghasilkan output yang sama dengan inputnya. Autoencoder termasuk pada kategori Unsupervised Learning karena dilatih dengan menerima data tanpa label.

Traditional Neural Network vs Autoencoder

Pada ilustrasi tersebut, arsitektur di bagian atas adalah arsiktektur JST yang digunakan untuk mengklasifikasi citra bahan makanan di supermarket. Pada bagian bawah merupakan arsitektur autoencoder.

Lalu apa tujuannya sebuah model dilatih untuk menghasilkan citra yang sama?

Jika diperhatikan pada ilustrasi di atas, bagian yang menarik adalah bagian tengah autoencoder yang berupa sebuah vektor kumpulan neuron (ditandai dengan kotak warna kuning). Bagian tengah ini biasanya memiliki jumlah neuron yang lebih kecil dibanding layer di kanan atau kirinya (termasuk layer input dan outputnya). Sehingga jika model dapat dilatih dengan baik, bisa dikatakan bagian tengah ini merupakan representasi sederhana dari citra yang menjadi input. Apa maksud representasi sederhana? Karena vektor ini diperoleh dari citra input melalui arsitektur jaringan saraf tiruan (Encode), lalu dari vektor yang kecil ini bisa dibuat kembali citra yang serupa dengan inputnya (Decode).

Continue reading

Sekilas tentang Jaringan Saraf Tiruan dan Deep Learning

Jaringan Saraf Tiruan (JST) adalah sebuah model pada bidang machine learning yang dibuat (dengan asumsi) menyerupai cara kerja otak manusia.

Secara ringkas pada jaringan saraf tiruan terdapat tiga nilai atau variabel utama:

  • Nilai Input $X$: nilai yang diinputkan pengguna
  • Nilai Target $T$: nilai yang diharapkan pengguna
  • Nilai Prediksi $Y$: nilai yang dihasilkan JST

Jaringan saraf tiruan adalah sebuah algoritma yang akan menerima input $X$ dan akan menghasilkan suatu nilai prediksi $Y$ secara matematis. Nilai $Y$ tersebut diharapkan bernilai sama dengan nilai $T$.

Kenapa diharapkan? Karena awalnya nilai $Y$ ini akan bernilai acak. Dengan proses pembelajaran, jaringan saraf tiruan akan terus memperbaiki diri agar dapat menghasilkan nilai prediksi $Y$ yang sedekat (semirip) mungkin dengan nilai target $T$.

Dalam kasus aslinya JST akan menerima banyak nilai $X$ yang masing-masing punya nilai target $T$ yang bisa jadi berbeda-beda. Untuk itu, sangat sulit untuk mengatur rumus JST untuk menghasil nilai $Y$ yang persis sama dengan $T$ setiap kali diinputkan suatu nilai $X$.

proses pembelajaran atau learning di sini berarti pada awalnya model JST ketika menerima beberapa input $X$ akan menebak nilai $Y$ secara acak (tanpa knowledge), dan seiring berjalannya waktu, kita akan melatih model JST (dengan melihat pola contoh lain) sehingga dapat memperbaiki diri dan menebak nilai $Y$ dengan lebih baik (mendekati nilai target $T$).

Neuron

jaringan saraf tiruan neuron

Di atas adalah contoh sebuah neuron (elemen pada jaringan saraf tiruan) yang menerima input X dan menghasilkan nilai Y. Sebuah neuron adalah visualisasi dari perhitungan sederhana berikut:

$$ Y = \sigma ( X . W+ b) $$

Dengan $W$ adalah suatu nilai “bobot” (weight) yang awalnya bernilai random. Setiap kali melakukan proses pelatihan, nilai $W$ ini akan diubah sehingga JST dapat menghasilkan nilai $Y$ yang lebih baik (mendekati nilai $T$). Variabel $b$ biasa disebut dengan bias, konsepnya sama seperti $W$ dengan nilai awal yang bernilai random.

Continue reading

Review Course Online Berbayar tentang AI/ML/Deep Learning

Tahun 2018-2019 ini alhamdulillah saya dapat kesempatan untuk merasakan dua course online yang (seharusnya) berbayar dengan topik AI, machine learning, atau deep learning. Saya akan coba review singkat kedua course tersebut, semoga bisa jadi pertimbangan jika ada yang tertarik mengikutinya.

Datacamp

Datacamp Course Online

Course online pertama yang saya dapat adalah Datacamp, saya dapat premium student plan-nya berkat bantuan kerja sama Pak Widiawan, dosen UGM, sekitar pertengahan tahun 2018. Course tersebut berlangsung sekitar 4 bulan.

Continue reading

Mengenal Google Colab

Apa itu Google Colab?

Seperti Google Drive, Google Doc, dan sebagainya, Google Colab adalah salah satu produk Google berbasis cloud yang bisa kita gunakan secara gratis. Perbedaannya adalah Google Colab dibuat khusus untuk para programmer atau researcher yang mungkin kesulitan untuk mendapatkan akses komputer dengan spek tinggi. Google Colab adalah coding environment bahasa pemrograman Python dengan format “notebook” (mirip dengan Jupyter notebook), atau dengan kata lain Google seakan meminjami kita komputer secara gratis! untuk membuat program oleh Google.

Saya sendiri beberapa kali telah menggunakan Google Colab untuk beragam keperluan dan merasakan banyak manfaatnya, beberapa manfaat yang saya rasakan:

  • Free GPU! Google Colab memudahkan kita untuk menjalankan program pada komputer dengan spek tinggi (GPU Tesla, RAM ~12GB, Disk ~300GB yang masih bisa sambung dengan Google Drive, akses internet cepat untuk download file besar) dan running dalam waktu yang lama (Google Colab mengizinkan kita untuk merunning program hingga 12 jam). Karenanya, bagi teman-teman yang ingin belajar Deep Learning tidak perlu khawatir lagi akan terhalang sulitnya mendapatkan akses komputer dengan spek tinggi.
  • Colaborate! Google Colab juga memudahkan kita berkolaborasi dengan orang lain dengan cara membagi kodingan secara online (mirip Google Doc). Kita bisa lebih mudah bereksperimen secara bersamaan, atau sekadar menggunakan fitur ini untuk mempelajari codingan orang lain yang telah rapi (karena format notebook)
  • Mudah berintegrasi! Google Colab terbilang sangat fleksibel dalam hal integrasi. Kita dapat dengan mudah menghubungkan Google Colab dengan jupyter notebook di komputer kita (local runtime), menghubungkan dengan Google Drive, atau dengan Github
  • Fleksibel! Salah satu yang saya favoritkan adalah kita bisa dengan mudah merunning deep learning program via HP! ya karena pada esensinya Google Colab hanya perlu running di browser, kita bisa mengawasi proses training (atau bahkan coding) via browser smartphone kita selama smartphone kita terhubung dengan Google Drive yang sama.

Bagimana cara menggunakannya?

Seperti Aplikasi Google pada umumnya, yang kita butuhkan adalah akun Google dan silakan ke https://colab.research.google.com/. Setelah itu kita akan disuguhkan tampilan sebagai berikut:

tampilan google colab

Untuk membuat notebook baru, cukup klik New Python 3 Notebook (atau Python 2 tergantung apa yang akan digunakan) lalu kita akan dibawa ke halaman yang mirip dengan Jupyter Notebook. Nantinya, setiap notebook yang kita buat akan disimpan di Google Drive kita.

tampilan google colab 2

Pengaturan GPU

Jika kita ingin menjalankan program Python kita menggunakan GPU (atau bahkan TPU), kita cukup perlu klik “Edit > Notebook Settings”, lalu pada bagian “Hardware Accelerator” pilih GPU.

mengatur gpu google colab

Hal-hal lain seputar Google Colab

Di bagian ini saya akan menjelaskan catatan-catatan tambahan penggunaan Colab yang tidak wajib kalian tahu, tapi siapa tahu akan bermanfaat nantinya.

Pip Package Installation

Ketika kita butuh instal python package di Colab, kita bisa melakukan instalasi menggunakan pip.

!pip install seaborn

Jika diperhatikan perintahnya sama seperti perintah instalasi pip pada umumnya, hanya saja bedanya di awali dengan tanda !. Tanda tersebut digunakan sebagai penanda bahwa perintah yang akan kita jalankan adalah command line. Kita juga bisa menggunakan tanda ! untuk perintah terminal lain seperti !wget untuk mendownload dataset, !gzip untuk mengextract file zip, !cp untuk mengcopy file, dan sebagainya.

Menghubungkan dengan Google Drive

Google Colab akan mereset notebook beserta semua temporary filenya maksimal 12 jam sekali. Karenanya akan lebih baik jika file yang akan kita gunakan atau kita hasilkan tersimpan dengan rapi di Google Drive. Kita bisa melakukan hal tersebut dengan menjalankan program di bawah

from google.colab import drive
drive.mount('/content/drive')

Jika perintah di atas dijalankan, maka kita akan diberikan URL yang akan mengantarkan kita ke halaman permohonan akses Google Drive. Jika ktia sudah mengizinkan, kita akan diberikan kode yang dapat dituliskan di kolom kecil di akhir output tersebut.

Setelah terhubung, maka akan tampak daftar file di bagian kiri Notebook

Untuk mengakses file-file tersebut, kita arahkan proses load / save ke path drive/My Drive/FOLDERTUJUAN

Mengupload file ke Colab

Alternatif lain jika tidak ingin menghubungkan Google Colab ke Google Drive adalah dengan mengupload langsung file yang diperlukan ke Colab. Colab menyediakan tempat penyimpanan file sementara yang akan direstart (dihapus) dalam rentangan waktu tertentu.

Upload file ke Google Colab dengan perintah berikut:

from google.colab import files
upload = files.upload()

Jika perintah di atas di-run akan memunculkan kotak dialog untuk mengupload file. Perintah di atas cukup praktis untuk mengupload file-file kecil (bukan dataset besar, lebih mudah diletakkan di drive)

Pengaturan tema

Bagi yang suka coding dengan “night mode”, Colab juga menyediakan pilihan untuk mengubah tema notebooknya menjadi gelap. Pengubahan tema dilakukan di “tools” > “preferences” > “site”

dark google colab

Selain itu Colab juga menyediakan beberapa “hiburan” lain untuk diatur semisal memunculkan kucing (“kitty mode”) atau anjing (“corgy mode”) di atas layar atau juga percikan api (“power level”) jika mengetik panjang. Ini semua bisa ditemukan di “tools” > “preferences” > “miscellaneous”

Catatan seputar versi sistem

Perlu dicatat, tipe GPU dan versi Cuda (software “penghubung” komputasi menggunakan GPU) bisa jadi berbeda setiap kita buka Colab. Google Colab juga tidak menjamin akan selalu menginstall package Python termutakhir. Karenanya ada beberapa hal yang perlu diingat:

  1. Ketika melatih model machine learning pastikan semua-nya disimpan. “Semua” di sini mulai dari bobot neural network, parameter, modelnya, versi package, apapun! karena bisa jadi besok pas mau di-run lagi hasilnya berubah karena ada perubahan versi sistem. Ini khususnya ketika ada unsur “random” di kode kita.
  2. Ketika install package, pastikan dilengkapi dengan nomor versinya. agar tidak terpengaruh perubahan sistem:
!pip install torch==1.5 numpy==1.17

Penutup

Saya pribadi sangat merasa terbantu hingga saat ini dengan adanya Google Colab. Saya jadi tidak perlu repot izin pinjam komputer lab atau mengusulkan pembelian komputer spek tinggi di kantor. Saya sudah menggunakan Colab untuk beberapa projek Deep Learning yang tidak terlalu besar, dan sampai saat ini kesannya positif, lumayan untuk belajar atau bahkan untuk menghasilkan model yang baik di kasus-kasus sederhana. Batasan 12 jam running juga tidak terlalu menghalangi karena dengan spek komputer yang sudah baik, proses running jadi tidak perlu selama itu kok.

Selamat mencoba! dan semoga bermanfaat!

Instalasi Cuda di Ubuntu 16.04: Part 1

Kalau kalian sedang ingin belajar Deep Learning dan ingin mencoba utak-atik tensorflow, maka kalian pasti sadar kalau tensorflow tidak mau berjalan di Windows. Karenanya kali ini, mau sedikit lagi berbagi pengalaman langkah yang saya pakai untuk instalasi NVIDIA Cuda di Ubuntu.

Kalau mau langsung cepat, silakan baca bagian Referensi

Proses dan pengalaman

1. Awalnya saya ngiranya driver NVIDIA akan otomatis terinstall di Ubuntu 16.04 *kayaknya dikabarin sama siapa gitu, dan percaya-percaya saja* Karena kepercayaan itu langkah pertama yang saya lakukan adalah langsung download Cuda.

2. Setelah terdownload (cuda_7.5.18_linux.run) langsung run dengan perintah:

sudo sh cuda_7.5.18_linux.run --override

3. Nah, karena pas lagi install saya masih PeDe sudah ada nvidia drivernya akhirnya ketika ditawarin di menu installnya untuk instal nvidia driver saya ya jawab NO dan setelah itu proses instalasi tetap berjalan lancar dan berhasil.

4. Setelah berhasil terinstal, saya pingin coba cek apakah Cuda sudah berjalan dengan memainkan file sampel Cuda nya. Caranya tinggal tuju folder `home/user/NVIDIA_CUDA-7.5_Samples/1_Utilities/deviceQuery` Setelah itu, open terminal di lokasi tersebut dan run perintah `make` di terminal. Lalu jalankan program device query dengan perintah `./deviceQuery`.

5. Dan munculah tulisan seperti ini 🙁

-> CUDA driver version is insufficient for CUDA runtime version
Result = FAIL

6. Error tersebut menyadarkan ada yang salah dengan NVIDIA drivernya. Setelah coba cek dengan beberapa cara untuk mengecek apakah NVIDIA driver sudah terinstall, dengan perintah dpkg -l | grep nvidia, ternyata driver NVIDIA nya memang belum terinstall dengan baik 😐 karenanya saya langsung memulai proses instalasi NVIDIA Drivernya

–Bersambung di sini–

Referensi: