Belajar Deep Learning (2)

Lanjutan dari posting bagian pertama 

Walaupun memiliki banyak keunggulan, deep learning juga masih punya beberapa masalah:

  • Perlu sumber komputasi yang besar.  Dari dulu neural net termasuk teknik yang memerlukan waktu training yang relatif lama dibandingkan teknik lain, apalagi sekarang untuk deep learning yang memiliki topologi kompleks dengan jutaan parameter. Tanpa GPU atau multi cpu atau cloud, proses training akan bisa menghabiskan waktu yang lama. Masalahnya GPU itu mahal, biaya sewa cloud yang didukung GPU juga mahal.  Tapi untuk tahap belajar untungnya masih bisa menggunakan CPU biasa.
  • Dasar teori deep learning belum stabil (formal matematisnya). Kalau lihat paper-paper deep learning umumnya berbasis eksperimen. Mungkin mirip seperti teknologi mesin uap saat teori termodinamika belum lengkap. Bukan berarti tidak bermanfaat ya.
  • Parameter learning (hyperparameter) masih perlu di-tuneup manual. Misalnya jumlah hidden layer, jumlah neuron per layer, fungsi aktivasi dan jumlah batch tetap masih perlu coba-coba dan saat ini belum ada patokan standard. Itu sebabnya sekarang penelitian DL mulai bergeser ke meta-learning.
  • Saat ada teknik yang lebih bagus, deep learning bisa ditinggalkan dengan cepat. Sama saat neural net ditinggalkan di akhir tahun 90an saat teknik berbasis kernel unggul.

Ada tiga kelompok pengguna deep learning (atau lebih umumnya machine learning) :

  1. Peneliti.  Berkutat dengan paper-paper, menghasilkan paper-paper.  Tapi mereka juga banyak melakukan eksperimen terutama untuk teknik-teknik baru.
  2. Data scientist (walaupun menurut saya sebagian besar lebih cocok disebut data engineer). Kelompok ini lebih fokus untuk memanfaatkan teknik deep learning untuk berbagai domain.  Mereka banyak melakukan eksperimen untuk mengutak-atik model dan praproses data.
  3. Programmer pengguna. Jenis ini tinggal menggunakan model yang sudah jadi (pretrained) atau lewat API. Tidak perlu eksperimen lagi, model sudah jadi dan tinggal digunakan.

Saya sendiri masuk ke kategori dua, khususnya untuk aplikasi di domain computational linguistic. Itu sebabnya nanti isi blog ini lebih ke arah aplikatif daripada ilmiah. Inginnya sih nanti bisa masuk juga ke kategori satu dan menghasilkan paper  🙂

Sebelum belajar DL, ada beberapa hal yang perlu disiapkan dan dipelajari kalau belum bisa:

  1. Machine learning. Penting karena tidak semua masalah cocok diselesaikan dengan deep learning.
  2. Neural network. Dasar DL  adalah neural network, jadi penting untuk dipelajari. Bagaimana reprenstasi input dan output, hidden layer, fungsi aktivasi, bobot, forward & back propagation.
  3. Topologi neural network, terutama  CNN (convolution neural net) dan RNN (recurrent neural net).

Untuk dasar teori di atas pada saat awal tidak perlu terlalu mendalami detil, tapi setidaknya tahu gambaran  umumnya.

Untuk tools, alternatifnya banyak, tapi yang saya gunakan:

  1. Linux. Bisa diinstall dengan virtual machine atau dual boot.  Pernah saya coba Windows, baru install Python dengan beberapa lib saja langsung kena masalah.
  2. Python. Python digunakan dalam Tensorflow, Keras dan Pytorch. Python  sebelumnya juga sudah menjadi tools favorit untuk data engineer. Saya jadi “terpaksa” belajar bahasa ini. Tapi tidak terlalu sulit kok, menurut saya lebih enak daripada PHP dan lebih gampang daripada Java. Tidak heran Python jadi bahasa pemrograman awal untuk beberapa jurusan computer science.
  3. Tensorflow. Memang ini punya Google, jeleknya mungkin kita jadi bergantung dengan Google, tapi enaknya dukungan dan perkembangannya toolsnya mantap. Enak untuk belajar karena saat bertemu masalah, dengan search banyak solusinya ( Posting saya tentang instalasi tensorflow). Ada yang lain seperti Theano dan PyTorch, tapi sayangnya saya tidak sempat untuk mempelajari semua.
  4. Keras. Ini semacam interface ke Tensorflow, Theano, CNTK.  Dengan Keras, kita bisa bermain di level abstraksi yang lebih tinggi, jadi bisa lebih fokus pada pembentukan modelnya. Cocok bagi pemula yang baru belajar deep learning seperti saya.

Setelah ini dapat langsung menginstall tools deep learning dan pendukungnya (posting saya tentang setup Keras dan Tensorflow) .  Rencananya saya akan lanjutkan dengan materi tentang CNN dan RNN dan implementasinya dengan Keras.  Setelah itu dibahas aplikasi deep learning ini bidang teks. Untuk teori machine learning dan neural net saya pikir sudah banyak sekali materi dan tutorial yang ada di internet termasuk yang berbahasa Indonesia, jadi tidak perlu ditulis lagi.

 

Sumber belajar:

 

Leave a Reply

Your email address will not be published. Required fields are marked *