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.

Stochastic Gradient Descent

Ketika data latih yang kita miliki cukup besar, proses pelatihan menggunakan Gradient Descent bisa memakan waktu yang sangat lama. Jika diperhatikan, pada satu epoch hanya terjadi satu kali proses perbaikan model (Langkah 2) dan itu pun menggunakan rata-rata error semua data. Bayangkan jika ada 1,000,000 data, maka rata-rata errornya hanya akan memberi sedikit informasi untuk perbaikan model. Sehingga butuh jumlah epoch yang sangat besar untuk bisa melatih modelnya.

Pada Stochastic Gradient Descent (SGD), rumus perhitungannya tetap sama dengan Gradient Descent, yang membedakan adalah kapan Langkah 2 atau langkah perbaikan bobot model dilakukan. Pada SGD, Langkah 2 tidak dilakukan hanya sekali tiap epoch setelah memproses semua data, melainkan dilakukan setiap satu atau sejumlah data.

Misalnya kita memiliki 100 data latih, dan untuk setiap satu data dilakukan update bobot, maka ilustrasinya seperti di bawah ini. Satu data masuk, dihitung errornya, lalu dengan error tersebut model akan langsung d-update bobotnya.

Dan berikut ini ilustrasi jika dilakukan untuk setiap lima data. Untuk setiap lima data, dihitung rata-rata errornya, lalu menggunakan rata-rata error tersebut diupdate modelnya. Diulangi lagi untuk setiap lima data hingga data terakhir.

Mini Batch SGD Illustration

Definisi Batch, adalah sejumlah data atau subset data yang diproses menggunakan Langkah 1 sebelum akhirnya model diupdate menggunakan Langkah 2.

Batch Size adalah banyaknya data pada sebuah batch. Pada contoh di-atas diilustrasikan SGD dengan batch size bernilai 1 dan batch size bernilai 5.

Dari ilustrasi di atas tampak jumlah Langkah 2 yang terjadi pada sebuah epoch menjadi berbeda: Pada ilustrasi SGD dengan batch size 1, Langkah 2 dilakukan setiap 1 data sehingga untuk satu epoch terjadi 100 kali Langkah 2. Sedangkan pada ilustrasi SGD dengan batch size 5, langkah 2 dilakukan setiap 5 data, sehingga untuk 100 data, Langkah 2 dilakukan sebanyak 100/5 = 20 kali.

Mini-Batch Gradient Descent adalah jenis SGD dengan batch size lebih dari 1, tetapi bukan keseluruhan data. Seperti contoh di atas, batch size bernilai 5.

Definisi Steps sebenarnya definisi step ini berasal dari framework atau library yang biasanya kita pakai. Jadi silahkan cek kembali untuk memastikan. Tapi pada umumnya, orang-orang menggunakan istilah step untuk menunjukkan berapa kali Langkah 2 dilakukan pada sebuah epoch. Misalnya pada contoh di atas, Mini-batch SGD dengan batch size 5 memiliki 20 steps.

Sebagai penutup, perbedaan jumlah update bobot / backward propagation / Langkah 2 untuk setiap epoch sangat mempengarui proses pelatihan. Analoginya seperti kita sedang tanya alamat rumah di tengah kota, lalu kita menerima jawaban seperti ini:

  • Gradient Descent = “Rumahnya di Kota bagian Selatan” (jawaban terlalu umum)
  • Stochastic Gradient Descent = “Belok kiri di tikungan depan” (informasi detail tapi bisa jadi terlalu sedikit)
  • Mini-batch Gradient Descent = “Ke arah Timur dulu sampai ketemu masjid” (informasi pertengahan)

Sekian, semoga bermanfaat!


Photo by Andrei Castanha on Unsplash

About the author

Rian Adam

Lecturer at Universitas Islam Indonesia; Machine Learning Enthusiast

View all posts

Leave a Reply