Apa itu Deep Learning ??

Assalammu’alaikum,

Kali ini saya ingin share mengenai apa itu deep learning, setidaknya sejauh yang saya pelajari hingga hari ini, kebetulan di startup yang kami bangun (bareng teman-teman saya) di starlabs.id (PT. Starlabs Global Teknologi) sedang mencoba mengimplementasikan engine untuk machine learning dan dua algoritma deep learning.

Banyak referensi yang bisa kita gunakan mengenai deep learning, terutama dari berbagai perusahaan besar dunia sekelas google, facebook, baidu, microsoft, amazon, nvidia dan lain-lain. Apa itu Deep Learning? seberapa penting atau seberapa bernilai deep learning? terutama untuk business, siapa tokoh yang banyak melakukan riset atau membangun deep learning? Dan kenapa saya dan teman-teman ingin membangun engine sendiri untuk machine learning? bukankah banyak framework, library dan services (terutama seperti azure dan aws) untuk machine learning?

Saya tidak akan menjawab semua pertanyaan diatas, nanti kepanjangan hahaha, saya tulis segimana jari saya bergerak saja hahaha

Pada hari ini teknologi intelijensi buatan cukup menjadi sorotan beberapa pelaku bisnis dunia, terutama bisnis teknologi, bahkan dunia politik. Seperti di USA Obama yang memilih Chief Data Scientist pertama untuk Amerika.

Kalau kata wikipediaDeep learning (deep machine learning, or deep structured learning, or hierarchical learning, or sometimes DL) is a branch of machine learning based on a set of algorithms that attempt to model high-level abstractions in data by using model architectures, with complex structures or otherwise, composed of multiple non-linear transformations

Deep learning sendiri menurut pengamatan saya yang pas-pasan ini hehe, merupakan tumpukan atau stack dari beberapa algoritma atau metode, sehingga berkembang berbagai pendekatan deep learning dengan berbagai arsitektur. Beberapa tujuan dari tumpukan metode ini adalah feature extraction, juga memanfaatkan seluruh resource seoptimal mungkin. Resource apa? data, sebagian besar data di dunia ini tidak berlabel (terkategorisasi), deep learning biasanya merupakan tumpukan stack algoritma unsupervised dan supervised learning sehingga dapat memanfaatkan data yang berlabel maupun tidak berlabelDengan pemanfaatan informasi yang lebih optimal tentunya akan meningkatkan performa model yang dihasilkan.

Yang menarik adalah analogi Andrew .Ng, Chief Scientist Baidu  mengenai apa yang bisa dilakukan dengan data yang lebih banyak dan arsitektur yang lebih besar? dengan menggunakan analogi membangun roket.

Screen Shot 2015-07-26 at 10.01.29 PM

Di atas adalah resep Andrew Ng untuk membangun Good Machine Learning yang menurutnya cukup relevan. Pertanyaan selanjutnya adalah apakah harus memperbesar network seperti memperbesar rocket engine atau menambah lebih banyak data seperti menambah bahan bakar untuk roket dan apakah ini sudah cukup dan dapat selesai?? ternyata jawabannya tidak, selanjutnya adalah menemukan arsitektur network yang cocok untuk business yang sedang kita coba selesaikan dengan machine learning. Next…

Screen Shot 2015-07-26 at 10.01.45 PM

Menurut Andrew Ng, 50% pekerjaannya dihabiskan untuk melakukan modifikasi arsitektur dari network yang digunakan, dan dia memberikan istilah dalam proses pencarian arsitektur yang cocok adalah Black Magic hahahaa.

Di atas kita dapat melihat pendekatan yang sering digunakan untuk mengimplementasikan deep learning adalah graphical methods atau multilayer representation, atau multilayer graphical model seperti belief network, neural network, hidden markov, dan lain-lain.  Pada dasarnya metode-metode tersebut seperti halnya machine learning biasa merupakan metode statistik dan stokastik yang sebenarnya sudah banyak dikenal di dunia matematika terutama statistik.

Otak manusia dapat melakukan distributed representation. Ide nya pun dari sistem kerja otak manusia, contohnya seperti gambar dibawah ini, manusia menerima input dari indra pengelihatan mata, lalu di salurkan ke cortex di otak manusia, lalu disana akan terdapat beberapa bagian otak yang akan melakukan pengolahan informasi dan estraksi, seperti gambar berikut :

Screen Shot 2015-07-26 at 10.32.09 PM

Saya ambil dari slide Professor Hugo Larochelle, mata menerima input lalu diteruskan ke beberapa bagian otak yang setiap bagiannya melakukan estraksi seperti pada bagian LGN dia hanya melihat sebagai berbagai susunan bagian informasi kecil-kecil (seperti biner di komputer), lalu pada bagian V1 informasi itu di estrak kembali menjadi beberapa bentuk sederhana, lalu pada bagian selanjutnya V2 informasi di estrak menjadi bentuk lebih tinggi lagi beberapa bentuk baru dari group informasi sebelumnya, lalu pada bagian AIT di estrak kembali menjadi beberapa bagian yang lebih tinggi lagi seperti bentuk wajah dan lain-lain,  setelah itu baru dilakukan pengambilan keputusan dibagian otak lain seperti pada bagian PFC, lalu setelah itu baru otak kita memberikan respon tertentu yang mungkin berupa motorik.

Ide pada neuroscience tersebut dicoba diduplikasi pada area machine learning yang mana memiliki tujuan yang relatif sama atau dengan kata lain melakukan reverse engineering pada sistem berfikir manusia, seperti pada buku AI modern approach Russel, mengenai AI yang bertujuan membuat mesin salah satunya think like humans and think rationally.

Metode yang saya pikir sangat sesuai, dan beberapa pakar atau professor dalam area machine learning terutama dalam deep network adalah multilayer ataupun multilayer graphocal model. Neural network salah satunya, dengan melihat ide diatas, maka dapat dibangun menjadi Deep Neural Network dengan tujuan meniru cara kerja dari otak manusia.

Screen Shot 2015-07-26 at 11.29.44 PM

Slide5

Neural Network dalam Deep network dibuat memiliki lebih dari satu hidden layer, namun yang jadi permasalahan adalah ketika kita membuat lebih dari satu hidden layer. Kita ketahui fungsi yang berlaku dalam metode neural network backpropagation misalkan seperti ini :

Screen Shot 2015-07-26 at 11.26.20 PM

masalah yang muncul adalah nilai setiap gradient yang akan muncul akan semakin kecil (mendekati nol) untuk setiap hidden layer yang mendekati output layer, sehingga akurasi bukannya semakin baik, malah semakin buruk.

Lalu bagaimana penyelesaiannya? untuk kasus Deep Network dapat dengan manambahkan algoritma atau metode yang melakukan inisialisasi pada saat awal pembangunan network sebelum melakukan tuning . Salah satu metode yang dapat digunakan dan menurut saya paling mudah adalah dengan menggunakan autoencoder, mungkin akan saya jelaskan di tulisan berikutnya (kalau lagi gak males) hahaha. Autoencoder ini fungsinya sebenarnya adalah mengekstrak informasi relatif mirip seperti PCA yang dapat mengurangi dimensi dari data pada dataset.

autoencodergambar : http://kiyukuta.github.io/
simple-introduction-to-autoencoder-26-638

Di atas merupakan contoh model network dari autoencoder, sebenarnya fokusnya adalah pada hidden layer yang ada pada topologi network. Pada dasarnya autoencoder adalah unsupervised learning, sehingga tidak memerlukan label. Lalu darimana label atau bagaimana melakukan stochastic gradient descentnya? apa loss functionnya? (detilnya mungkin nanti hehe… )

Autoencoder konsepnya hanya meng-encode input yang ada atau dikompres atau meng-estrak fitur mana saja yang memang penting, lalu hasilnya adalah informasi yang ada pada hidden layer, lalu dicoba kembali di decode, dan dilihat apakah hasilnya dengan kondisi network saat itu sudah sesuai dengan hasil seharunya (kembali seperti semula sebelum di encode). Sehingga inferencesnya merupakan network beserta weight dari setiap synapsis atau edge yang menghubungkan setiap unit atau perceptron.

Dengan kata lain informasi yang nanti ada pada hidden layer atau nilai pada setiap unit pada hidden layer tersebut tersebut dapat mewakili input layer atau merupakan hasil ekstrak dari  informasi yang ada pada input layer, dan synapsis weight yang sudah sesuai tersebut dipindahkan ke network pada deep neural network, sebagai  inisialisasi awal antara synapsis input layer dan hidden layer pertama. Selanjutnya eksekusi kembali autoencoder antara hidden layer 1 dan hidden layar 2, begitu seterusnya hingga hidden layer ke n-1 dan hidden layer ke n.

Sehingga gradient yang nanti didapat ketika akan memulai tuning, tidak akan selalu mengecil mendekati nol.

Mungkin teknis sederhananya seperti itu untuk Deep Network, dan sebenarnya ini merupakan algoritma yang cukup sederhana. Ada beberapa algoritma lainnya seperti deep autoencoder, restricted boltzmann machine (rbm), stacked rbm, deep belief network dan lain-lain.

Deep learning sendiri sering disandingan dengan big data, yaitu menganalisis big data dengan 3V nya dengan menggunakan deep learning. Sehingga dengan melihat kompleksitas dari metode tersebut dibuthkan teknologi penopang seperti hardware dan pendekatan implementasi parallel ataupun cluster baik dari sisi implementasi algoritma ataupun data management  yang cukup cepat, sehingga dapat menekan kompleksitas waktu yang muncul dalam deep learning.

Terdapat berbagai pendekatan yang dilakukan dari mulai parallel programming dengan menggunakan multi core biasa, GPU, hingga message passing inteface misalkan memanfaatkan lebih dari satu mesin. Seperti yang dilakukan google, baidu, microsoft, bahkan nvidia yang mengeluarkan  Deep Learning GPU Training System (DIGITS) .

Kenapa saya dan teman-teman ingin membuat engine untuk deep learning atau mungkin minimal machine leanring biasa. Sebelumnya saya pernah bekerja untuk membuat suatu machine learning untuk kasus fraud detection system, tentu dengan tujuan dapat diimplementasikan di production. Ternyata dalam prosesnya yang paling sulit adalah memindahkan algoritma yang sudah diimplementasikan ke dalam sistem production, kenapa? karena perbedaan kebutuhan di lingkungan production. Machine learning harus dapat melakukan klasifikasi cepat, reliable, dan dapat berkala memperbaiki model yang ada atau scheduling, kalau melihat beberapa library yang sudah ada terutama weka atau scikit learning, saya merasa tidak puas. Weka ketika melakukan pemanggilan kembali model yang telah disimpan membutuhkan seluruh informasi sebelumnya yang membentuk model tersebut. Scikit learning membutuhkan seluruh load data untuk membentuk model (training), sedangkan banyangkan dimasa yang akan datang berapa banyak data yang harus diolah? dan weka lebih keren lagi, model yang dihasilkan misalkan sekitar 84 mb, bayangkan jika kita membuat service atau API untuk melakukan klasifikasi dan membutuhkan model tersebut, untuk membuat 1 object model membutuhkan 84 mb * ukuran informasi (dataset) dalam mb untuk 1 request? bayangkan jika datang 1000 request?

Kami berfikiri solusinya kita membuat sendiri enginenya atau kita menggunakan service yang sudah ada untuk tujuan tetentu (machine learning dengan fungsi spesifik, seperti fraud detectin syste, financial analytics, social network analysis dan lain2).

Saya dan teman-teman akhirnya memutuskan untuk mencoba membangun sistem atau engine tuntuk dapat mengcover berbagai kebutuhan machine learning atau deep learning ketika diimplementasikan di production, selain itu akan lebih mudah ketika kita melakukan adjustment untuk tujuan tertentu.

Dan orang-orang yang sering saya jadikan referensi, hhm banyak tapi ada 5 orang yang sering saya lihat tulisan dan video lecture atau seminarnya, yaitu :

  1. Prof. Tom Mitchel, Professor di Carniege Mellon University, buku pertama saya mengenai machine learning, banyak jadi referensi di berbagai universitas.
  2. Lalu Prof. Andrew Ng, professor stanford yang merupakan CEO Coursera dan Chief Scientist BAIDU, dan merupakan orang dibalik google brain sebelumnya,
  3. Prof. Geoffrey Hinton merupakan Distinguished Researcher google dan juga Distinguished Emeritus Professor di University of Toronto beliau merupakan figur penting dalam pergerakan deep learning.
  4. Hugo Larochelle, merupakan professor di Université de Sherbrooke
  5. Jeff Dean, merupakan computer scientist dan Google Senior Fellow pada group Systems and Infrastructure.

Nah kali ini sampai sini dulu, lumayan cape nulisnya hahaha.

thanks

Advertisements

9 thoughts on “Apa itu Deep Learning ??

  1. pribadihcr July 27, 2015 / 9:29 am

    wa’alaikumsalam,
    Excellent pak. kalau boleh tau productionnya pakai apa pak, spark kah?

  2. pribadihcr July 27, 2015 / 9:30 am

    wa’alaikumsalam,
    Excellent pak. kalau boleh tau productionnya pakai apa pak, spark kah?

    • situkangsayur July 27, 2015 / 2:51 pm

      Sekarang masih coba-coba, spark sempat masuk stack teknologi kita, tapi masih di coba, karena ada beberapa hal yang belum bs dicover (atau kita yang belum tau caranya) di spark, jd masih copot pasang. masih proses development 😀

  3. Arief Nda March 17, 2016 / 3:29 pm

    Tulisan yang menarik … terimakasih atas artikelnya

  4. Azzam Heranur March 23, 2016 / 1:34 pm

    wah sangat menarik gan. saya baru terjun untuk mendalami teori tentang deep learning.
    semangat dan terus belajar

  5. Azis November 19, 2016 / 10:55 pm

    wah ajib. Sudah dijadikan refrens tulisan ini.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s