Membedah AlphaGo


Mungkin Anda sempat mengikuti berita tentang AlphaGo beberapa bulan lalu. AlphaGo merupakan sistem artificial intelligence (AI) yang didesain oleh Google DeepMind yang berhasil mengalahkan pemain Go manusia. Pemainnya bukan sembarang pemain. Melainkan seorang master Go dengan 18 title juara dunia, Lee Sedol. AlphaGo menang dalam pertandingan best-of-five dengan skor 4-1 !

3013s
Sumber: http://www.theguardian.com/technology/2016/mar/12/alphago-beats-lee-sedol-in-third-consecutive-go-game

Pencapaian ini cukup mengejutkan banyak pihak, termasuk perancangnya sendiri, DeepMind. Selama ini Go dianggap sangat kompleks (intractable) untuk dapat dimainkan oleh komputer/AI dibandingkan board games lainnya seperti catur, checkers, dan othello.

Para ahli sebelumnya memprediksi bahwa dibutuhkan paling tidak 1 dekade mendatang agar AI mampu mencapai performa level superhuman di permainan Go. As it happened, fakta yang terjadi dilapangan ternyata jauh lebih cepat dari perkiraan.

Tentunya kita bertanya-tanya, bagaimana bisa AlphaGo mampu mengalahkan juara dunia Go? Apa rahasia dibalik kesuksesan AlphaGo? Dapatkah sekarang kita menyimpulkan bahwa kecerdasan yang dimiliki komputer sama atau bahkan melampaui manusia seperti karakter-karakter film: skynet, ultron?

Tulisan kali ini mencoba membedah cara kerja AphaGo. Sebagian besar tulisan ini berdasarkan paper tentang AlphaGo yang di-publish di Nature.

Continue reading

(Deep) Convolutional Neural Networks – Part 1


(Deep) Convolutional Neural Networks (ConvNets) merupakan special case dari artificial neural networks (ANN) yang saat ini diklaim sebagai model terbaik untuk memecahkan masalah object recognition dan detectionTrend terakhir di bidang Computer Vision, kita akan sangat mudah mencari paper yang di judulnya terdapat kata “Deep Learning” atau “Convolutional”. Model ini juga merupakan model favorit di ranah industri. Perusahaan-perusahaan besar seperti Google, Facebook, Microsoft, dan Baidu membangun pusat riset khusus di bidang ini.

Pembahasan mengenai ConvNets akan saya bagi menjadi 2 bagian. Pada bagian 1 ini kita akan fokus pada model standar ANN, yaitu multilayer perceptrons (MLP), dari arsitektur hingga algoritma learning. Penting untuk memahami MLP terlebih dahulu sebelum ke ConvNets karena hanya satu perbedaan antara MLP dan ConvNets: arsitektur model. Algoritma learning yang digunakan persis sama. Arsitektur ConvNets akan secara detil dibahas pada bagian 2.

Bagian 1 ini terdiri dari 1) sekilas sejarah, 2) ANN, MLP, dan backpropagation, dan 3) implementasi dengan menggunakan keras.io.

Continue reading

Just a chunk of mathematical proof about machine learning


Beberapa minggu yang lalu, saya sepertinya (masih menunggu hasil review) berhasil membuktikan sebuah teori tentang machine learning dalam konteks domain adaptation. Domain adaptation merupakan salah satu cabang yang relatif baru di machine learning yang concern dengan bagaimana caranya mengadaptasi / mentransfer pengetahuan sebuah learnt model di lingkungan/domain yang baru, lihat bagian 2 pada tulisan saya di sini.

Sebelumnya saya juga sempat menulis tentang salah satu algoritma yang saya rancang bernama Scatter Component Analysis (SCA). Salah satu teori penting dari SCA adalah hubungan antara 2 besaran jarak: domain scatter vs Maximum Mean Discrepancy (MMD), lihat Teorema 3 pada tulisan tersebut.

Kali ini saya coba menunjukkan secara matematis bahwa domain scatter dan MMD berhubungan dengan domain adaptation learning bound (yang berarti memang benar-benar mampu menghasilkan model domain adaptation yang baik), dengan meminjam sebuah framework dari Mansour et al. COLT 2009.

Continue reading

Support Vector Machines: Penjelasan Matematis dan Intuitif


Support Vector Machines (SVM) merupakan salah satu algoritma machine learning yang paling efektif, baik dari sisi praktis maupun teoretis. Pada awal tahun 90’an hingga awal 2000’an, SVM arguably mengambil alih peran Neural Networks sebagai algoritma yang most favorable dikarenakan kecepatan, keakuratan, dan garansi untuk selalu menghasilkan solusi yang global optimum — hingga sekitar tahun 2006-2007, neural networks (yang dibungkus dengan nama Deep Learning) mengambil alih kembali peran tersebut, terutama untuk large scale problem , i.e., jumlah data latih > ~10,000.

Kali ini saya akan membahas SVM dengan fokus pada masalah (linear) binary classification, baik secara perlahan-lahan (mungkin sedikit bertele-tele), intuitif, matematis, dan sekaligus implementasi sederhana dengan menggunakan library LIBSVM/LIBLINEAR untuk memecahkan masalah handwritten digit recognition.

Kekuatan sebenarnya dari SVM adalah dengan memanfaatkan kernel trick  untuk memecahkan masalah non-linear. Namun pada tulisan ini kita hanya fokus pada linear SVM tanpa kernel trick.

Continue reading

Pengantar PAC Learning


Saat ini, Machine Learning is all about “belajar dari data”. Ketika sedang mendesain atau menganalisis algoritma learning, terkadang sering muncul pertanyaan-pertanyaan:

  • Berapa jumlah data/sampel yang dibutuhkan agar proses pembelajaran berhasil? (sample complexity)
  • Hal apakah yang dapat dipelajari secara efisien? problem apa yang sulit dipelajari? (time and space complexity)
  • Adakah algoritma learning yang dapat mempelajari semua hal? (general model of learning)

Untuk mengurangi proses trial-and-error dalam mendesain algoritma learning atau agar Machine Learning lebih dari sekadar seni, dibutuhkan sebuah framework formal yang mencoba menjawab pertanyaan-pertanyaan di atas. Salah satu framework yang dapat digunakan adalah Probably Approximately Correct (PAC) Learning.

Continue reading

Fast Domain Generalization with Kernel Methods – Part 4 (Scatter Component Analysis)


Ini merupakan seri terakhir dari tulisan saya mengenai metode kernel pada domain adaptation/generalization. Akhirnya summer project kali ini ditutup dengan men-submit sebuah paper ke International Conference on Machine Learning (ICML). Kami merancang sebuah algoritma transfer learing / domain adaptation yang dinamakan Scatter Component Analysis (SCA) pada aplikasi object recognition.

Ide utama dari algoritma ini adalah mengekstrak representasi (features) yang memiliki 3 buah sifat berikut ini:

  1. Persebaran data (total variance) maksimum
  2. Perbedaan antar domain (domain mismatch) minimum
  3. Persebaran representasi berdasarkan kategori / kelas maksimum

Kesemua sifat tersebut dapat dicapai dengan menggunakan sebuah tool bernama scatter.

Continue reading

Berdansa Bersama Papa


Music by Ghifary and Lyrics by Syva

Verse 1

Indah musik mengalun merdu
Ingin menari fikirku
Ku kenakan gaun princess ku
Ku cari papa ku

Verse 2

Kulihatnya sedang bekerja
Ayo dansa papa ku pinta
Papa pun langsung bergaya
Seakan di ruang pesta

Reff

M’langkah berputar
Badan melayang
Kaki dan tangan gerak berirama
Sungguh asyiknya
Sungguh senangnya
Berdansa bersama papa

Verse 2 -> Reff -> break -> Reff (2x)

Fast Domain Generalization with Kernel Methods – Part 3 (PCA, KPCA, TCA)


Walaupun teori tentang Principal Component Analysis (PCA) dari sudut pandang statistics ataupun information theory dapat ditelusuri hingga tahun 1901, penggunaannya secara praktis dimulai pada tahun 1980an seiring dengan perkembangan teknologi komputer. Saat ini PCA merupakan metode yang sangat populer di berbagai bidang seperti signal processing, neurosciencemachine learning, finance, hingga ke social science. Secara umum, PCA digunakan untuk mencari atau menganalisis pola dari data yang berdimensi banyak. Salah satu hal yang disukai dari PCA adalah proses komputasi yang relatif efisien.

Di berbagai aplikasi, seringkali kumpulan data yang berdimensi banyak dapat dijelaskan hanya dengan beberapa variabel saja (mulai saat ini kita sebut variabel tsb dengan istilah variabel latent). Ambil contoh kasus heart disease prediction untuk mendeteksi apakah seseorang mengidap penyakit jantung diberikan sejumlah variabel. Terdapat 76 variabel yang perlu dianalisis dimulai dari usia, jenis kelamin, tekanan darah, detak jantung, dsb. Pertanyaan yang sering diajukan pertama kali adalah mampukah prediksi tersebut dilakukan dengan menggunakan lebih sedikit variabel dengan hanya memilih variabel-variabel paling informatif ? Hal ini mungkin dilakukan secara manual oleh human experts. Namun demikian, akan lebih elegan apabila komputer dapat mengidentifikasi variabel latent secara otomatis. Di Machine Learning, permasalahan ini dikaji secara intensif dalam sub-bidang yang dikenal sebagai Dimensionality Reduction.

Saat ini PCA telah berkembang menjadi berbagai bentuk. Pada kesempatan kali ini saya coba bermain-main dengan PCA beserta 2 variannya: Kernel Principal Component Analysis (KPCA) dan  Transfer Component Analysis (TCA). Yang terakhir ini khusus dirancang untuk aplikasi transfer learning / domain adaptation.

Continue reading