The ukuran bets mendefinisikan jumlah sampel yang akan disebarkan melalui jaringan.
Sebagai contoh, katakanlah Anda memiliki 1050 sampel pelatihan dan Anda ingin mengatur yang batch_size
setara dengan 100. Algoritma mengambil 100 sampel pertama (dari 1 hingga 100) dari dataset pelatihan dan melatih jaringan. Selanjutnya, dibutuhkan 100 sampel kedua (dari 101 ke 200) dan melatih jaringan lagi. Kami dapat terus melakukan prosedur ini sampai kami telah menyebarkan semua sampel melalui jaringan. Masalah mungkin terjadi dengan set sampel terakhir. Dalam contoh kami, kami telah menggunakan 1050 yang tidak habis dibagi 100 tanpa sisa. Solusi paling sederhana adalah hanya untuk mendapatkan 50 sampel terakhir dan melatih jaringan.
Keuntungan menggunakan ukuran batch <jumlah semua sampel:
Ini membutuhkan lebih sedikit memori. Karena Anda melatih jaringan menggunakan sampel lebih sedikit, prosedur pelatihan keseluruhan membutuhkan lebih sedikit memori. Itu sangat penting jika Anda tidak dapat memasukkan seluruh dataset ke dalam memori mesin Anda.
Biasanya jaringan berlatih lebih cepat dengan mini-batch. Itu karena kami memperbarui bobot setelah setiap propagasi. Dalam contoh kami, kami telah menyebarkan 11 kumpulan (10 di antaranya memiliki 100 sampel dan 1 memiliki 50 sampel) dan setelah masing-masing kami memperbarui parameter jaringan kami. Jika kami menggunakan semua sampel selama propagasi, kami hanya akan membuat 1 pembaruan untuk parameter jaringan.
Kerugian menggunakan ukuran batch <jumlah semua sampel:
- Semakin kecil batch, estimasi gradien akan semakin tidak akurat. Pada gambar di bawah ini, Anda dapat melihat bahwa arah gradien mini-batch (warna hijau) berfluktuasi jauh lebih banyak dibandingkan dengan arah gradien batch penuh (warna biru).
Stochastic hanyalah sebuah mini-batch dengan batch_size
sama dengan 1. Dalam hal ini, gradien mengubah arahnya bahkan lebih sering daripada gradien mini-batch.