batch epoch step

Batch, Epoch, Step. Istilah-istilah pada Gradient Descent

Ketiga istilah di atas sering muncul ketika kita sedang belajar atau implementasi model neural network, khususnya ketika membahas Gradient Descent. Batch, epoch, dan step, adalah sebagian istilah yang digunakan menjelaskan proses iterasi di Gradient Descent. Istilah-istilah itu tidak hanya ditemukan di buku teori, tetapi juga di dokumentasi-dokumentasi framework yang akan kita gunakan. Karenanya, sangat penting untuk bisa membedakannya dengan baik.

Gradient Descent

Gradient descent adalah algoritma optimasi yang digunakan untuk menemukan parameter yang menghasilkan nilai minimum pada suatu fungsi. Dalam kasus neural network, Gradient Descent digunakan untuk menemukan bobot model terbaik yang menghasilkan error minimum. Detail perhitungan gradient descent contohnya ada pada partikel sebelumnya, sedangkan implementasinya dapat di baca di artikel berikut ini.

Secara umum, langkah yang dilakukan untuk mencerdaskan model neural network menggunakan gradient descent adalah sebagai berikut:

  1. Sebuah input-xi masuk ke model neural network, lalu menghasilkan output / error Ei (forward propagation)
  2. Gradient descent terhadap output / error E untuk mengupdate nilai bobot model W (backward propagation)
  3. Lakukan kedua langkah di atas terhadap semua data berkali-kali hingga diperolah model terbaik.

Untuk kemudahan penjelasan, poin no. 1 di atas akan kami sebut sebagai Langkah 1 (bold dengan warna orange) dan poin no. 2 akan kami sebut sebagai Langkah 2 (bold dengan warna ungu)

Langkah-langkah di atas masih cukup umum, Jika ada lebih dari satu data langkahnya seperti apa? Dari sinilah akan muncul istilah-istilah di awal tadi. Misalkan kita memiliki 100 data latih, maka urutan yang dilakukan pada Gradient Descent adalah:

  1. Lakukan Langkah 1 untuk setiap data (dari data latih ke 1 hingga 100), sehingga diperoleh 100 nilai eror Ei
  2. Dari 100 nilai error itu, kita hitung rata-ratanya untuk memperoleh sebuah nilai error E
  3. Lakukan Langkah 2 menggunakan E untuk mengupdate W (hanya 1x)

Langkah diatas terjadi dalam satu epoch. Untuk mendapatkan model yang baik kita perlu mengulangi langkah di atas lebih dari satu kali (beberapa epoch).

Definisi sebuah Epoch, adalah ketika kita telah menggunakan semua data latih pada proses pelatihan. Pada contoh di atas, kita sudah melalui sebuah epoch karena kita telah menggunakan 100 data latih yang kita miliki.

Pada contoh tersebut sebuah epoch terdiri dari 100 kali Langkah 1 dan 1 kali Langkah 2.

Continue reading

Siamese Network: Neural network untuk menguji kemiripan

Bayangkan kita diminta membuat model machine learning yang akan digunakan untuk presensi mahasiswa menggunakan foto wajah. Universitas yang meminta dibuatkan model tersebut memiliki 10,000 mahasiswa. Jika kita mengasumsikan ini adalah permasalahan klasifikasi, apakah itu berarti ini adalah klasifikasi citra dengan jumlah kelas 10,000?

Klasifikasi dengan 10,000 class??

Itu jauh lebih banyak daripada data benchmark yang biasa digunakan klasifikasi citra, Imagenet, yang hanya 1000 kelas! Selain itu, tidak mudah juga untuk mendapatkan data per kelasnya. Apakah setiap mahasiswa harus difoto ratusan kali agar dapat data latih yang representatif? lalu bagaimana jika ada mahasiswa baru? nah, di sinilah Siamese Network bisa jadi salah satu solusinya.

Siamese Network

Siamese network adalah jenis arsitektur neural network di mana menerima dua input, yang masing-masingnya masuk ke subnetwork yang sama lalu digabungkan untuk dihitung kemiripan antara dua input tersebut.

Siamese network
Siamese Network untuk identifikasi wajah

Siamese network digunakan untuk menghitung kemiripan dua data. Kemiripan antara dua data di sini tergantung pada kasusnya, misal kemiripan wajah dari orang yang sama namun memiliki dua foto yang berbeda, atau kemiripan gaya berpakaian dari dua orang yang berbeda, dll. Model dilatih dengan menerima input pasangan data, dengan output yang dihasilkan bisa berupa biner (sama atau tidak) atau sebuah real value yang merepresentasikan tingkat tingkat kemiripan.

Siamese network tidak menspesifikkan arsitektur pada bagian subnetwork, asalkan dua arsitektur yang digunakan adalah sama (bentuk dan bobotnya). Kita bisa memakai konsep ini untuk beragam jenis data. Misalnya kita ingin mengecek kemiripan pertanyaan maka kita bisa menggunakan subnetwork berupa LSTM network, jika ingin mengecek kemiripan foto kita bisa gunakan CNN sebagai subnetworknya. Output dari subnetwork ini adalah vektor, dengan ukuran bebas (sebagai hyperparameter yang kita tentukan sendiri)

Ada banyak metode yang bisa dilakukan di bagian penggabungan (Merge) hasil dari dua subnetwork. Beberapa yang pernah saya tahu:

  • Hitung selisih absolut antar vektor output subnetwork lalu masukkan vektor selisihnya ke sebuah neural net,
  • Concat atau gabungkan kedua output lalu masukkan vektor gabungannya ke sebuah neural net,
Continue reading

Istilah penting di Neural Network dan Deep Learning (bagian 2)

Artikel ini adalah kelanjutan dari artikel sebelumnya tentang istilah-istilah di neural network ataupun deep learning bagian kedua. Sama seperti artikel sebelumnya, artikel ini bertujuan untuk menjelaskan istilah-istilah penting di neural network.

Error vs Akurasi

Error dan akurasi adalah 2 metode pengukuran performa model machine learning. Model machine learning pada umumnya akan menggunakan fungsi error (atau sering disebut juga loss/cost function) sebagai acuan untuk memperbaiki modelnya (a.k.a belajar). Hampir kebanyakan model machine learning termasuk deep learning menggunakan algoritma optimasi untuk meminimalkan error yang dihasilkan. Artinya, semakin kecil error yang dihasilkan akan semakin baik.

Pada proses training yang benar, grafik eror akan turun dan grafik akurasi akan naik

Sedangkan akurasi adalah pengukuran yang lebih “mudah” dipahami manusia. Biasanya akurasi tidak digunakan untuk acuan model belajar melainkan hanya untuk membantu manusia memahami sebaik apa model yang telah dihasilkan. Misalnya jika diketahui ada model yang mampu mendeteksi suatu penyakit dengan akurasi 90%, maka kita langsung bisa paham artinya dalam 100 kali percobaan ada kemungkinan sekitar 10 percobaan akan gagal. Hal tersebut lebih mudah dipahami oleh manusia ketimbang kita bliang: suatu model memiliki error 0.002 ._. Dari definisi tersebut, dapat dilihat semakin tinggi nilai akurasi akan semakin baik.

Juga perlu diketahui, ketika kita bilang “akurasi”, sebenarnya kita merujuk ke suatu rumus yang spesifik. Sedangkan istilah “error” adalah istilah yang lebih lebih umum, rumusnya ada banyak, misalnya log-likelihood. Metode pengukuran lain yang mudah dipahami selain akurasi adalah F1-Score yang biasa digunakan untuk mengevaluasi model dengan data yang classnya tidak seimbang (imbalance)

oh ya, saya juga dulu pernah bertanya di AI.SE tentang pemilihan model berdasar akurasi atau error di sini

Continue reading
memahami istilah-istilah deep learning

Istilah-Istilah di Neural Network ataupun Deep Learning (bagian 1)

Semester ini saya dapat kesempatan mengajar kelas Deep Learning di Program Studi S1 Informatika UII. Selama mengajari mahasiswa yang mayoritas masih awam dengan Deep Learning, bahkan Neural Network, saya merasakan ternyata banyak sekali istilah-istilah di Neural Network ataupun Deep Learning yang mungkin sulit untuk dipahami.

Karenanya, artikel ini saya buat dengan harapan dapat membantu teman-teman yang sedang belajar Neural Network ataupun Deep Learning untuk memahami istilah-istilah tersebut. Jika ada istilah-istilah yang belum tersampaikan / kurang jelas / malah salah maknanya silakan tulis di komentar ya 🙂

AI vs Machine Learning vs Neural Network vs Deep Learning

Kalau di kelas, saya menggambarkan diagram venn hubungan keempatnya seperti berikut ini.

John McCarthy, orang pertama yang memunculkan istilah Artificial Intelligence (AI) memberi definisi AI adalah “Science and engineering of making intelligent machines”1 atau saya sering mendefinisikan sendiri sebagai sekumpulan metode yang digunakan agar komputer dapat meniru atau bahkan melampaui kecerdasan manusia2.

Nah, Machine Learning merupakan salah satu teknik di bidang AI untuk membuat mesin mampu belajar dari data tanpa perlu diprogram secara eksplisit. Salah satu algoritma machine learning yang bisa digunakan adalah Neural Network (jaringan saraf tiruan). Suatu program yang memiliki banyak if-else, dapat meniru kecerdasan manusia (AI), namun bukan termasuk machine learning karena program tidak belajar dari data, melainkan dengan ditulis secara ekspliti oleh programmer.

Neural Network (NN) mencerdaskan mesin dengan membangun model matematika yang (berusaha) meniru bagaimana sel saraf bekerja. Pada NN bagian-bagian kecil (sel saraf) dirangkai untuk menciptakan arsitektur jaringan saraf yang sesuai untuk suatu masalah.

Continue reading

Parameter Tuning Model Secara Otomatis dengan Optuna

Apa itu Tuning Parameter

Ketika kita membuat model machine learning, kita tidak akan terlepas dengan yang namanya parameter tuning, yakni proses menentukan nilai parameter-parameter model ktia. Hampir semua model machine learning punya beberapa parameter (atau variabel) yang harus kita definisikan terlebih dahulu nilainya sebelum proses training. Nilai yang kita berikan pada parameter-parameter tersebut nantinya akan menentukan proses pelatihan model kita.

Sebagai contoh di neural network, kita harus menentukan parameter-parameter arsitektur kita, yang bisa meliputi: banyak hidden layer, banyak neuron di setiap layer, jenis fungsi aktivasi dan lain-lain. Penentuan angka-angka tersebut akan menentukan kualitas model kita. Misalkan, untuk tiga parameter yang disebutkan tadi kita menggunakan neural network dengan 2 layer, masing-masingnya 100 neuron, dan menggunakan fungsi aktivasi sigmoid. Itu berarti kita telah memilih nilai untuk tiga parameter yang disebutkan di atas dari banyak kemungkinan nilai. kenapa kok tidak 1 layer? atau 3 layer? kenapa tidak 50 neuron? atau 10 neuron? kenapa tidak pakai fungsi aktivasi lain? dan sebagainya.

Tentu pemilihan parameter harusnya memiliki suatu “dasar”. Biasanya parameter-parameter tersebut dipilih setelah melalui beberapa eksperimen dan merupakan parameter yang menghasilkan model terbaik untuk kasus yang digunakan.

Parameter Tuning model Neural Network

Pada contoh ini kita akan coba membuat model neural network sekaligus melakukan parameter tuning untuk kasus binary classification menggunakan data Sonar. Data tersebut berisikan ~200 pola sinyal sonar yang mendeteksi antara batu (kode “R”) atau besi (kode “M”). Dataset yang telah di-split dapat didownload di sini, contoh code dapat dilihat di Google Colab di sini

Langkah pertama, kita perlu load package dan dataset lalu ubah kode kelas “R”/”M” menjadi 1 dan 0.

Continue reading