Apa itu 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?

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 wikipedia :
Deep 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 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 berlabel. Dengan 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.

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.

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.

Dalam 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.

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 :

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.

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).


Referensi :
Prof. Tom Mitchel, Professor di Carniege Mellon University, buku pertama saya mengenai machine learning, banyak jadi referensi di berbagai universitas.
Lalu Prof. Andrew Ng, professor stanford yang merupakan CEO Coursera dan Chief Scientist BAIDU, dan merupakan orang dibalik google brain sebelumnya,
Prof. Geoffrey Hinton merupakan Distinguished Researcher google dan juga Distinguished Emeritus Professor di University of Toronto beliau merupakan figur penting dalam pergerakan deep learning.
Hugo Larochelle, merupakan professor di Université de Sherbrooke
Jeff Dean, merupakan computer scientist dan Google Senior Fellow pada group Systems and Infrastructure.
https://www.initialboard.com/perbedaan-al-marchine-learning-dan-deep-learning
https://situkangsayur.wordpress.com/2015/07/27/deep-learning/


Apa itu 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?

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 wikipedia :
Deep 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 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 berlabel. Dengan 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.

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.

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.

Dalam 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.

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 :

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.

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).


Referensi :
Prof. Tom Mitchel, Professor di Carniege Mellon University, buku pertama saya mengenai machine learning, banyak jadi referensi di berbagai universitas.
Lalu Prof. Andrew Ng, professor stanford yang merupakan CEO Coursera dan Chief Scientist BAIDU, dan merupakan orang dibalik google brain sebelumnya,
Prof. Geoffrey Hinton merupakan Distinguished Researcher google dan juga Distinguished Emeritus Professor di University of Toronto beliau merupakan figur penting dalam pergerakan deep learning.
Hugo Larochelle, merupakan professor di Université de Sherbrooke
Jeff Dean, merupakan computer scientist dan Google Senior Fellow pada group Systems and Infrastructure.
https://www.initialboard.com/perbedaan-al-marchine-learning-dan-deep-learning
https://situkangsayur.wordpress.com/2015/07/27/deep-learning/

Post a Comment

0 Comments