Apa itu epoch dan batch size dalam machine learning?
Epoch adalah satu putaran penuh model melewati seluruh training dataset. Batch size adalah jumlah contoh yang diproses model sebelum setiap pembaruan weight. Jadi, satu epoch berisi pembaruan sebanyak ukuran dataset dibagi batch size, dibulatkan ke atas, dan setiap pembaruan disebut iterasi atau langkah.
Epoch dan batch size bersama-sama menentukan berapa banyak pembaruan yang terjadi saat training dan seberapa besar noise pada tiap pembaruan. Framework deep learning seperti PyTorch dan TensorFlow menyusun training sebagai perulangan atas epoch, dengan perulangan di dalamnya atas mini-batch yang sudah diacak. Pilihan kedua nilai ini memengaruhi waktu training, pemakaian memori GPU, dan kemampuan generalisasi model akhir.
Ide utama
- Epoch adalah satu putaran penuh melewati data training.
- Batch size adalah jumlah contoh yang dirata-ratakan untuk setiap pembaruan weight.
- Jumlah pembaruan per epoch sama dengan ukuran dataset dibagi batch size, dibulatkan ke atas.
- Batch lebih kecil memberi pembaruan yang lebih banyak dan lebih ber-noise; batch lebih besar memberi pembaruan yang lebih sedikit dan lebih halus.
- Shuffling di setiap epoch menjaga mini-batch tetap mewakili seluruh dataset.
- Jumlah epoch biasanya ditentukan dengan memantau validation loss.
Pertanyaan umum
Berapa epoch yang cukup?
Tidak ada angka pasti. Pantau validation loss setelah setiap epoch dan berhenti kalau tidak membaik selama beberapa epoch, sambil menyimpan checkpoint terbaik. Cara ini disebut early stopping, dan pengaturan patience menentukan berapa epoch tanpa perbaikan yang masih diizinkan.
Apakah batch size yang lebih besar membuat training lebih cepat?
Setiap epoch biasanya selesai lebih cepat, karena GPU memproses satu batch besar lebih efisien daripada banyak batch kecil. Namun, model juga mendapat lebih sedikit pembaruan per epoch, jadi mungkin butuh lebih banyak epoch, learning rate lebih besar, atau keduanya untuk mencapai loss yang sama. Melewati ukuran tertentu, menambah batch size tidak lagi mengurangi jumlah pembaruan yang dibutuhkan.
Apa itu gradient accumulation?
Gradient accumulation menjumlahkan gradient dari beberapa batch kecil dan menerapkan satu pembaruan setelah batch terakhir. Cara ini meniru efek batch besar ketika batch besar itu tidak muat di memori GPU. Training dengan 4 akumulasi batch berisi 8 berperilaku mirip training dengan batch berisi 32, walaupun statistik batch normalization tetap memakai batch yang lebih kecil.
Apakah data validasi dan data uji perlu diacak?
Tidak perlu. Evaluasi tidak memperbarui weight, jadi urutan contoh tidak mengubah metrik. Shuffling hanya berpengaruh pada training, karena urutan menentukan contoh mana yang berada dalam satu batch dan bagaimana urutan pembaruannya.
Penjelasan terkait
- Gradient Descent · Optimasi dengan mengikuti kemiringan ke bawah
- Hyperparameter · Pengaturan yang kamu pilih sebelum training dimulai
- Optimizer · SGD, momentum, dan Adam: gradient descent yang lebih cerdas
- Learning Rate Scheduling · Step decay, cosine annealing, warmup, dan cyclical LR
- Overfitting dan Underfitting · Bias-variance tradeoff dan generalisasi
- Training, Validation, dan Test Set · Membagi data untuk mengukur generalization dan menghindari overfitting
Referensi
- Goodfellow, Bengio & Courville (2016), "Deep Learning", section 8.1.3: Batch and Minibatch Algorithms
- Bottou (2010), "Large-Scale Machine Learning with Stochastic Gradient Descent", COMPSTAT
- Masters & Luschi (2018), "Revisiting Small Batch Training for Deep Neural Networks"
- Devlin et al. (2018), "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding"
Terakhir diperbarui