Memahami Epoch Batch Size Dan Iteration
Contents
Jika anda adalah seseorang yang sedang menggeluti bidang Machine Learning atau Deep Learning pasti sangat familiar dengan ketiga hal ini, namun mungkin juga anda sering bingung sampai menggaruk-garuk kepala anda dan bertanya-tanya “Mengapa saya mengetik ketiga istilah ini dalam kode saya dan apa bedanya? fungsinya apa?” karena semuanya terlihat sangat mirip.
Baiklah mari kita bahas, tapi untuk mengetahui perbedaan antara ketiga hal ini kita perlu mengetahui beberapa istilah pada Machine Learning seperti Gradient Descent agar kita lebih memahami fungsi dari Epoch, Batch Size, dan Iterations.
Gradient Descent
Gradient Descent adalah algoritma untuk mengoptimalkan iteratif yang digunakan pada Machine Learning untuk menemukan hasil yang terbaik (minima kurva). Algoritma iteratif berarti bahwa kita perlu mendapatkan hasilnya berkali-kali untuk mendapatkan hasil yang paling optimal atau bisa dikatakan hampir sempurna. Kualitas iteratif dari Gradient Descent membantu grafik yang tidak dilengkapi untuk membuat grafik sesuai dengan optimal pada data.
Gradient Descent mempunyai sebuah parameter yang bernama learning rate, seperti yang anda lihat di atas (sebelah kiri). Pada awalnya, langkahnya lebih besar yang berarti learning rate tersebut tinggi dan dipertengahan hasilnya menurun, learning rate menjadi lebih kecil dengan ukuran langkah yang lebih pendek. Begitupun juga dengan Cost Function yang menurun atau _Cost_nya menurun. Kadang, mungkin anda pernah mendengar orang mengatakan bahwa _Loss Function_nya menurun atau _Cost_nya menurun, dan perlu diketahui juga bahwa “Cost” dan “Loss” merupakan hal yang sama. Dan jika Cost atau _Loss_nya menurun itu bagus karena pada prinsipnya semakin kecil kerugian yang kita dapatkan akan semakin bagus untuk kita, kan?.
Mungkin juga anda bertanya-tanya mengapa ada istilah Epoch, Batch Size, dan Iterations di Machine Learning. Jawabannya adalah, karena ketiga hal ini menjadi sebuah solusi untuk menangani data yang jumlahnya besar yang mana komputer kita tidak memungkinkan untuk men-training data begitu banyaknya dalam satu kali training. Jadi, untuk mengatasi masalah ini kita perlu membagi data menjadi ukuran yang lebih kecil dan memberikannya ke komputer kita satu per satu dan memperbarui weight (bobot) pada Neural Network di akhir setiap langkah agar sesuai dengan data yang diberikan.
Epoch
Epoch adalah ketika seluruh dataset sudah melalui proses training pada Neural Netwok sampai dikembalikan ke awal untuk sekali putaran, karena satu Epoch terlalu besar untuk dimasukkan (feeding) kedalam komputer maka dari itu kita perlu membaginya kedalam satuan kecil (batches).
Tapi, mengapa kita perlu lebih dari satu Epoch? Kita tahu itu tidak masuk akal di awal bahwa melewati seluruh dataset melalui jaringan saraf tidak cukup dan kita perlu melewati dataset penuh beberapa kali ke jaringan saraf yang sama. Namun perlu diingat bahwa kita menggunakan dataset yang terbatas dan untuk mengoptimalkan pembelajaran dan grafik yang kita gunakan adalah Gradient Descent yang merupakan proses iteratif. Jadi, mengupdate weight (bobot) dengan satu epoch saja tidak cukup.
Satu epoch mengarah pada underfitting pada grafik (di bawah).
Seiring bertambahnya jumlah epoch, semakin banyak pula weight (bobot) yang berubah dalam Neural Network dan kurvanya melengkung dari kurva yang kurang sesuai hingga selaras dengan kurva yang overfitting.
Lalu berapakah jumlah epoch yang harus kita tentukan? Sayangnya, tidak ada jawaban yang benar untuk pertanyaan ini. Jawabannya berbeda untuk dataset yang berbeda tapi anda bisa mengatakan bahwa jumlah epoch terkait dengan beragamnya data anda, jadi jumlah epoch tergantung dataset yang anda miliki.
Batch Size
Batch Size adalah jumlah sampel data yang disebarkan ke Neural Network. Contoh: jika kita mempunyai 100 dataset dan batch size kita adalah 5 maka algoritma ini akan menggunakan 5 sempel data pertama dari 100 data yang kita miliki (ke1, ke2, ke3, ke4, dan ke5) lalu disebarkankan atau ditraining oleh Neural Network sampai selesai kemudian mengambil kembali 5 sampel data kedua dari 100 data (ke6, ke7, ke8, ke9, dan ke10), dan begitu seterusnya sampai 5 sampel data ke 20 (100⁄5=20).
Tapi, apa itu Batch? Seperti yang penulis katakan sebelumnya, kita tidak bisa melewati seluruh dataset ke dalam jaring saraf sekaligus. Jadi, kita membagi dataset menjadi sejumlah atau satu set atau bagian. Sama seperti kita membagi sebuah naskah skripsi yang panjang menjadi beberapa bagian seperti BAB 1, BAB 2, dan BAB 3 yang memudahkan kita untuk pembacanya dan memahami keseluruhan naskah tersebut. 😄
Iterations
Iterations adalah jumlah batch yang diperlukan untuk menyelesaikan satu epoch. Tapi, untuk memahami iterasi sebenarnya kita hanya perlu mengetahui tabel perkalian atau memiliki kalkulator 😜
Note: Jumlah batch sama dengan jumlah iterasi untuk satu epoch.
Katakanlah kita memiliki 2000 contoh training yang akan kita gunakan, maka kita dapat membagi dataset dari 2000 contoh tersebut menjadi batch dari 500 maka akan dibutuhkan 4 iterasi untuk menyelesaikan 1 epoch 😉
Referensi : Machine Learning 101