Saya menggunakan Python Keras package
untuk jaringan saraf. Ini tautannya . Apakah batch_size
sama dengan jumlah sampel uji? Dari Wikipedia, kami memiliki informasi ini :
Namun, dalam kasus lain, mengevaluasi jumlah-gradien mungkin memerlukan evaluasi mahal dari gradien dari semua fungsi puncak. Ketika set pelatihan sangat besar dan tidak ada rumus sederhana, mengevaluasi jumlah gradien menjadi sangat mahal, karena mengevaluasi gradien memerlukan evaluasi semua gradien fungsi fungsi puncak. Untuk menghemat biaya komputasi pada setiap iterasi, sampel keturunan gradien stokastik bagian dari fungsi puncak pada setiap langkah. Ini sangat efektif dalam kasus masalah pembelajaran mesin skala besar.
Informasi di atas menggambarkan data uji? Apakah ini sama dengan batch_size
keras (Jumlah sampel per pembaruan gradien)?
sumber
Jawaban:
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:
Stochastic hanyalah sebuah mini-batch dengan
batch_size
sama dengan 1. Dalam hal ini, gradien mengubah arahnya bahkan lebih sering daripada gradien mini-batch.sumber
batch_size=1
. Gagasan di balik pembelajaran online adalah Anda memperbarui model Anda segera setelah Anda melihat contohnya. Dengan ukuran batch yang lebih besar, ini berarti bahwa Anda pertama-tama melihat-lihat beberapa sampel sebelum melakukan pembaruan. Dalam ukuran RNN batch dapat memiliki arti yang berbeda. Biasanya, itu biasa untuk membagi urutan pelatihan menjadi jendela dengan ukuran tetap (seperti 10 kata). Dalam hal ini termasuk 100 jendela ini selama pelatihan berarti Anda memilikinyabatch_size=100
.Dalam terminologi jaringan saraf:
Contoh: jika Anda memiliki 1000 contoh pelatihan, dan ukuran batch Anda adalah 500, maka dibutuhkan 2 iterasi untuk menyelesaikan 1 zaman.
FYI: Ukuran batch tradeoff vs jumlah iterasi untuk melatih jaringan saraf
sumber
Saat menyelesaikan dengan CPU Masalah Optimasi, Anda menerapkan Algoritma pada beberapa Data Input. Di setiap iterasi ini, Anda biasanya memperbarui Metrik masalah Anda melakukan beberapa Perhitungan pada Data. Sekarang ketika ukuran data Anda besar, mungkin perlu banyak waktu untuk menyelesaikan setiap iterasi, dan mungkin menghabiskan banyak sumber daya. Jadi terkadang Anda memilih untuk menerapkan perhitungan berulang ini pada Bagian Data untuk menghemat waktu dan sumber daya komputasi. Bagian ini adalah batch_size dan prosesnya disebut (dalam Neural Network Lingo) pemrosesan data batch. Ketika Anda menerapkan perhitungan Anda pada semua data Anda, maka Anda melakukan pemrosesan data online. Saya kira terminologi berasal dari tahun 60an, dan bahkan sebelumnya. Apakah ada yang ingat. file DOS kelelawar? Namun tentu saja konsep yang menjelma berarti utas atau sebagian data yang akan digunakan.
sumber
Dokumentasi untuk
Keras
tentang ukuran batch dapat ditemukan di bawahfit
fungsi dalam Model (API fungsional) HalamanJika Anda memiliki dataset kecil, akan lebih baik untuk membuat ukuran batch sama dengan ukuran data pelatihan. Pertama coba dengan batch kecil kemudian tingkatkan untuk menghemat waktu. Seperti disebutkan oleh itdxer , ada tradeoff antara akurasi dan kecepatan.
sumber