Berapa besar ukuran batch untuk keturunan gradien stokastik?

Jawaban:

72

"Ukuran sampel" Anda berbicara tentang disebut sebagai ukuran bets , . Parameter ukuran batch hanyalah salah satu dari hiper-parameter yang akan Anda tala ketika Anda melatih jaringan saraf dengan mini-batch Stochastic Gradient Descent (SGD) dan bergantung pada data. Metode paling dasar dari pencarian hyper-parameter adalah dengan melakukan pencarian grid pada laju pembelajaran dan ukuran batch untuk menemukan pasangan yang membuat jaringan berkumpul.B

Untuk memahami apa ukuran bets seharusnya, penting untuk melihat hubungan antara penurunan gradien bets, SGD online, dan SGD mini-batch. Berikut adalah rumus umum untuk langkah pembaruan berat dalam mini-batch SGD, yang merupakan generalisasi dari ketiga jenis. [ 2 ]

θt+1θtϵ(t)1Bb=0B1L(θ,mb)θ
  1. Keturunan gradien batch,B=|x|
  2. Keturunan gradien stokastik online:B=1
  3. Keturunan gradien stokastik mini-batch: tetapi.B>1B<|x|

Perhatikan bahwa dengan 1, fungsi kerugian bukan lagi variabel acak dan bukan merupakan perkiraan stokastik.

SGD konvergen lebih cepat daripada penurunan gradien "batch" normal karena memperbarui bobot setelah melihat subset yang dipilih secara acak dari set pelatihan. Biarkan menjadi set pelatihan kami dan biarkan . Ukuran batch hanyalah kardinalitas :.xmxBmB=|m|

Turunan gradien batch memperbarui bobot menggunakan gradien dari seluruh dataset ; sedangkan SGD memperbarui bobot menggunakan rata-rata gradien untuk mini-batch . (Menggunakan rata-rata sebagai lawan dari jumlah mencegah algoritma dari mengambil langkah-langkah yang terlalu besar jika dataset sangat besar. Jika tidak, Anda perlu menyesuaikan tingkat belajar Anda berdasarkan ukuran dataset.) Nilai yang diharapkan dari ini perkiraan stokastik gradien yang digunakan dalam SGD sama dengan gradien deterministik yang digunakan dalam keturunan gradien batch. .θxmE[LSGD(θ,m)]=L(θ,x)

Setiap kali kami mengambil sampel dan memperbarui bobot kami itu disebut mini-batch . Setiap kali kita menjalankan seluruh dataset, itu disebut zaman .

Katakanlah kita memiliki beberapa vektor data , vektor bobot awal yang parameter jaringan saraf kita, , dan fungsi kehilangan yang kita coba untuk meminimalkan . Jika kita memiliki contoh pelatihan dan ukuran batch , maka kita dapat membagi contoh pelatihan tersebut menjadi C-batch mini:x:RDθ0:RSL(θ,x):RSRDRSTB

C=T/B

Untuk kesederhanaan kita dapat mengasumsikan bahwa T dibagi habis oleh B. Meskipun, ketika ini tidak terjadi, karena sering tidak, berat yang tepat harus ditugaskan untuk setiap mini-batch sebagai fungsi dari ukurannya.

Algoritma iteratif untuk SGD dengan epochs diberikan di bawah ini:M

t0while t<Mθt+1θtϵ(t)1Bb=0B1L(θ,mb)θtt+1

Catatan: dalam kehidupan nyata kita membaca contoh data pelatihan ini dari memori dan, karena pra-pengambilan cache dan trik memori lainnya yang dilakukan oleh komputer Anda, algoritme Anda akan berjalan lebih cepat jika akses memori disatukan , yaitu ketika Anda membaca memori agar dan tidak melompat-lompat secara acak. Jadi, sebagian besar implementasi SGD mengocok dataset dan kemudian memuat contoh ke dalam memori dalam urutan yang akan dibaca.

Parameter utama untuk vanilla (tanpa momentum) SGD yang dijelaskan di atas adalah:

  1. Tingkat Belajar:ϵ

Saya suka menganggap epsilon sebagai fungsi dari hitungan zaman hingga tingkat pembelajaran. Fungsi ini disebut jadwal tingkat pembelajaran .

ϵ(t):NR

Jika Anda ingin memiliki tingkat pembelajaran tetap, cukup tentukan epsilon sebagai fungsi konstan.

  1. Ukuran Batch

Ukuran kumpulan menentukan berapa banyak contoh yang Anda lihat sebelum melakukan pembaruan berat. Semakin rendah, semakin ribut sinyal latihan, semakin tinggi, semakin lama waktu yang dibutuhkan untuk menghitung gradien untuk setiap langkah.

Kutipan & Bacaan Lebih Lanjut:

  1. Pengantar Pembelajaran Berbasis Gradien
  2. Rekomendasi praktis untuk pelatihan arsitektur mendalam yang berbasis gradien
  3. Pelatihan Mini-batch yang Efisien untuk Optimalisasi Stochastic
sabalaba
sumber
1
For simplicity we can assume that D is evenly divisible by B. Bukankah maksud Anda T harus dibagi habis oleh B?
Antoine
4
dan untuk benar-benar menjawab pertanyaan OP, Anda dapat menambahkan B is typically chosen between 1 and a few hundreds, e.g. B = 32 is a good default value, with values above 10 taking advantage of the speed-up of matrix-matrix products over matrix-vector products.(dari makalah Bengio 2012)
Antoine
@ Sabalaba Jawaban yang bagus. Tapi bukankah itu dalam persamaan "Algoritma iteratif untuk SGD dengan M epochs diberikan di bawah ini" kami akan memperbarui berat setelah menjalankan lebih dari setiap mini-batch. Dengan kata lain, seharusnya tidak ada loop lain (lebih dari batch mini C) di dalam loop atas zaman yaitu saat t <M
Kaushik Acharya
2
Dalam statistik, sampel terdiri dari beberapa pengamatan. Jadi, ukuran sampel ditafsirkan dengan benar oleh ahli statistik. Dalam ilmu komputer (khususnya, dalam pembelajaran mesin) sampel adalah pengamatan tunggal dan kumpulan adalah kumpulan sampel. Ini bisa sedikit membingungkan. Sampel untuk ahli statistik adalah kumpulan data ilmuwan;) Sumber: en.wikipedia.org/wiki/Sample_size_determination
Oleg Melnikov
"Parameter ukuran bets hanyalah salah satu dari hiper-parameter yang akan Anda setel ..." Bukankah menjalankan banyak model penyetelan mengalahkan tujuan SGD sejak awal? Saya pikir OP meminta aturan praktis untuk ukuran sampel. Jika data Anda berisi catatan dan variabel , berapa ukuran sampel yang sesuai untuk menghitung gradien secara memadai? nm
RobertF