Pengantar Deep Learning
Analisis tren yang mendorong perkembangan deep learning dan contoh di mana dan bagaimana penerapannya saat ini
Halo dan selamat datang. Banyak ahli berkata “AI is the new electricity”. Sekitar 100 tahun yang lalu, listrik berperan dalam transformasi setiap industri, mulai dari transportasi, manufaktur, kesehatan, telekomunikasi, dan masih banyak lagi. Dan sekarang kita melihat arah yang jelas dari AI untuk membawa transformasi yang besar ini secara berimbang. Tentu saja, bagian dari AI yang sedang berkembang pesat dan berperan banyak dalam pengembangan AI adalah deep learning. Jadi sekarang, deep learning adalah salah satu skills yang paling banyak dicari di dalam dunia teknologi.
Apa itu Deep Learning?
Istilah Deep Learning merujuk pada proses training Neural Network, kadang Neural Network yang berukuran sangat besar. Coba kita lihat contoh di bawah:
Kita mulai dengan contoh prediksi harga rumah. Misalkan kita punya sebuah dataset yang berisi 6 rumah, jadi diketahui ukuran rumah dalam satuan meter persegi dan harga rumah tersebut, lalu kita ingin menentukan sebuah fungsi untuk menentukan harga rumah berdasarkan ukurannya. Jika kalian sudah familiar dengan regresi linier, maka tinggal taruh garis lurus pada data tersebut sehingga hasilnya seperti gambar di atas. Supaya lebih tepat, kita tahu kalau harga tidak mungkin negatif kan? Jadi dari pada hanya sekedar garis lurus yang mana dapat menjadi nilai negatif, maka bagian bawah garis dibuat kurva sehingga nilainya akan menjadi 0. Garis biru ini adalah fungsi untuk memprediksi harga rumah berdasarkan ukurannya.
Kita bisa anggap fungsi yang diterapkan pada kasus harga rumah tadi sebagai Neural Network sederhana. Gambarannya dapat dilihat sebagai berikut:
Dari gambar di atas terdapat input dari Neural Network, yaitu ukuran rumah x. Dilanjut ke lingkaran tengah dan kemudian output y. Jadi lingkaran di atas, yang mana merupakan neuron, di dalamnya terdapat fungsi dari gambar sebelumnya. Proses yang terjadi di dalam neuron di antaranya yaitu memasukkan ukuran rumah, menghitung fungsi linier, membatasi nilai terendah menjadi 0, dan menghasilkan output perkiraan harga.
Ngomong-ngomong, di dalam pembahasan Neural Network kita akan sering melihat fungsi ini. Fungsi ini disebut fungsi ReLU yang mana singkatan dari rectified linear units. Jadi Re-L-U, rectify artinya memperbaiki nilai terendahnya menjadi 0 sehingga bentuk fungsinya seperti ini:
Tidak usah khawatir dulu soal ReLU, mungkin akan saya bahas di tulisan lain. Jadi, contoh sebelumnya adalah Neural Network dengan 1 neuron, Neural Network yang sangat kecil, sedangkan Neural Network yang lebih besar dibentuk dari banyak neuron dan ditumpuk menjadi 1. Kita coba lihat contohnya:
Semisal, dari pada memprediksi harga rumah hanya dari ukurannya, sekarang kita punya features lain. Beberapa hal yang berkaitan dengan rumah seperti jumlah kamar tidur dan mungkin 1 hal yang sangat mempengaruhi harga rumah yaitu jumlah anggota keluarga, apakah rumah ini cukup untuk 3, 4, atau 5 orang? Hal itu berkaitan dengan ukuran meter perseginya dan jumlah kamar tidur yang menentukan apakah rumah tersebut cukup untuk semua anggota keluarga. Selanjutnya mungkin diketahui juga alamat kode pos dari rumah yang mana bisa saja menentukan apakah lingkungan rumah bagus untuk pejalan kaki atau tidak. Selain itu alamat kode pos dan tingkat pendapatan dapat mengindikasikan seberapa bagus kualitas sekolah di sekitar rumah. Terakhir dari hal-hal tersebut kita bisa memperkirakan berapa harga yang mau dibayar untuk rumah tersebut.
Jadi yang coba kita implementasikan adalah ini, di mana terdapat sebuah neural network dengan 4 input. Jadi inputnya berupa ukuran rumah, jumlah tempat tidur, alamat kode pos, dan tingkat pendapatan dari 1 area perumahan. Dari input features ini, tugas dari Neural Network adalah untuk memprediksi harga y. Perlu diketahui juga untuk lingkaran-lingkaran di gambar sebelumnya disebut hidden units dari Neural Network itu sendiri, yang mana setiap hidden units menerima keempat input features.
Jadi node pertama tidak bisa lagi merepresentasikan jumlah anggota keluarga karena jumlah anggota keluarga hanya berdasarkan 𝑥1 dan 𝑥2. Maka dari itu kita serahkan ke Neural Network untuk menentukan representasi dari masing-masing node. Hal yang perlu dicatat dari Neural Network adalah dengan data 𝑥 dan 𝑦 yang cukup, Neural Network cukup baik dalam menentukan fungsi yang dapat memetakan 𝑥 ke 𝑦 secara akurat.
Supervised Learning dengan Neural Networks
Supervised Learning
Di dalam Supervised Learning, terdapat input 𝑥 dan kita ingin mempelajari bagaimana caranya memetakan fungsi ke output 𝑦. Jadi untuk contohnya bisa dilihat pada gambar di bawah:
Sebagai contoh, pada penerapan real estate yang kita lihat di bagian sebelumnya, kita menggunakan arsitektur Standard Neural Network kan? Untuk real estate dan periklanan online bisa menggunakan Standard Neural Network, seperti yang sudah kita lihat.
Untuk penerapan pada gambar, kita akan sering menggunakan Convolutional Neural Network, atau sering disingkat CNN.
Dan untuk data yang berurutan, contohnya suara yang memiliki temporal component. Suara diputar dengan durasi waktu, jadi suara itu contoh yang paling alami dari time series atau temporal sequence 1 dimensi. Untuk data yang berurutan, kita akan sering menggunakan RNN, Recurrent Neural Network.
Contoh Neural Network
Supaya lebih konkrit mengenai seperti apa arsitektur CNN dan RNN yang standar, dari beberapa sumber lain kalian mungkin akan melihat gambar seperti ini:
Data Terstruktur dan Tidak Terstruktur
Kalian mungkin juga sudah mendengar mengenai penerapan machine learning untuk data terstruktur dan tidak terstruktur. Berikut maksud dari istilah-istilah tersebut.
Data terstruktur secara umum berarti data dari database atau data yang memiliki kolom-kolom.
Sebaliknya, data tidak terstruktur mengacu pada data seperti suara, teks, atau gambar di mana tujuannya adalah untuk mengenali apa yang ada di dalam gambar atau teks tersebut.
Mengapa Deep Learning Berkembang Pesat?
Jika ide teknis di balik Deep Learning dan Neural Network sudah ada sejak beberapa dekade lalu, mengapa baru sekarang Deep Learning berkembang pesat? Untuk itu lihat gambar di bawah ini:
Pada gambar di atas terdapat sumbu x yang mana adalah jumlah data yang digunakan dan sumbu y yang mana adalah performa dari algoritma misalnya akurasi model klasifikasi spam, prediksi klik pada iklan, atau akurasi Neural Network pada kasus penentuan posisi self driving car. Jika kita lihat untuk algoritma tradisional seperti Support Vector Machine atau Logistic Regression, garis kurva yang terbentuk performanya naik di awal dan ketika jumlah data ditambah akan cenderung mendatar.
Sejak 20 tahun terakhir dengan banyaknya aplikasi digital, tentu kita sudah mengakumulasi semakin banyak data yang mana melebihi kemampuan algoritma tradisional dalam mengolahnya secara efektif. Jika dilihat lagi, performa yang dihasilkan Neural Network yang berukuran kecil sedikit lebih baik. Jika Neural Network yang dilatih lebih besar maka performa yang dihasilkan akan lebih baik dan lebih baik lagi.
Jika kita ingin mendapat performa dengan tingkat yang sangat baik, maka kita membutuhkan 2 hal: pertama kita harus mampu melatih Neural Network berukuran besar untuk mengolah data yang besar dan yang kedua, kita membutuhkan data dengan jumlah yang banyak. Jadi skala yang besar telah mendorong perkembangan Deep Learning dan skala yang besar tersebut meliputi baik dari sisi ukuran Neural Network yaitu jumlah hidden unit, parameter, lapisan network-nya, dan juga dari sisi skala data.
Jadi, pesatnya perkembangan Deep Learning didorong oleh:
- Data — seperti pada penjelasan tadi bahwa data dengan jumlah yang banyak dibutuhkan untuk mendapatkan performa terbaik.
- Komputasi — kemampuan untuk melatih Neural Network yang berukuran besar baik dengan CPU atau GPU.
- Algoritma — banyak inovasi algoritma sudah dicoba agar membuat Neural Network berjalan semakin cepat. Untuk contoh konkritnya, salah 1 terobosan di Neural Networks yaitu pergantian penggunaan fungsi sigmoid ke fungsi ReLU:
Jika kalian masih belum paham mengenai detail dari fungsi-fungsi di atas jangan khawatir, intinya salah 1 masalah penggunaan fungsi sigmoid dan machine learning adalah terdapat area di mana slope/kemiringan fungsi di mana gradient mendekati 0 sehingga proses training menjadi sangat lambat, karena ketika kita menerapkan gradient descent dan gradient-nya adalah 0, parameter akan berganti dengan sangat lambat. Dari proses training yang sangat lambat itu dengan mengubah fungsi aktivasi dari Neural Networks menjadi fungsi rectified linear unit atau ReLu, maka gradient akan bernilai 1 untuk semua nilai input yang positif dan gradient yang nilai inputnya negatif akan menjadi 0. Hasilnya, dengan mengganti fungsi sigmoid dengan fungsi ReLU telah membuat algoritma gradient descent bekerja lebih cepat dan ini merupakan contoh sederhana dari inovasi algoritma.
Pada akhirnya, dampak dari inovasi algoritma ini sangat membantu komputasi. Sebenarnya masih banyak contoh lain di mana kita mengubah algoritma supaya code bisa berjalan lebih cepat sehingga kita bisa melakukan training Neural Networks yang lebih besar. Alasan lain bahwa komputasi yang cepat itu sangat penting adalah proses melakukan training Neural Networks itu sifatnya sangat intuitif:
Sering kali ketika memiliki ide untuk arsitektur Neural Networks dan akan mengimplementasikan lalu menuliskan kode untuk ide tersebut. Setelah mengimplementasikan dan membuat kode kemudian melakukan eksperimen yang mana akan menunjukkan seberapa bagus hasil Neural Network dan setelah melihatnya lalu kembali lagi mengubah detail dari Neural Network dan itu dilakukan berulang-ulang kali. Jika Neural Network membutuhkan waktu yang lama saat dilakukan training maka kita hanya akan berputar-putar sehingga berdampak besar pada produktifitas.
Subscribe supaya artikel lainnya bisa terkirim langsung ke inbox kalian: Subscribe Artikel
Support dengan cara berdonasi untuk membantu pembuatan artikel lain seperti artikel ini: Donasi