Bagaimana ukuran batch memengaruhi konvergensi SGD dan mengapa?

18

Saya telah melihat kesimpulan serupa dari banyak diskusi, bahwa ketika ukuran minibatch semakin besar konvergensi SGD sebenarnya semakin sulit / buruk, misalnya tulisan ini dan jawaban ini . Saya juga pernah mendengar ada orang yang menggunakan trik seperti kecepatan belajar kecil atau ukuran batch pada tahap awal untuk mengatasi kesulitan ini dengan ukuran batch besar.

Namun tampaknya kontra-intuitif karena kehilangan rata-rata minibatch dapat dianggap sebagai perkiraan untuk kehilangan yang diharapkan atas distribusi data, semakin besar ukuran batch, semakin akurat seharusnya. Mengapa dalam praktiknya tidak demikian?

1|X|xXl(x,w)ExhaldSebuahtSebuah[l(x,w)]


Berikut adalah beberapa pemikiran saya (mungkin salah) yang mencoba menjelaskan.

Parameter model sangat bergantung satu sama lain, ketika bets menjadi terlalu besar itu akan mempengaruhi terlalu banyak parameter sekaligus, sehingga sulit bagi parameter untuk mencapai ketergantungan inheren yang stabil? (seperti masalah pergeseran kovariat internal yang disebutkan dalam kertas normalisasi bets )

Atau ketika hampir semua parameter bertanggung jawab dalam setiap iterasi mereka akan cenderung mempelajari pola implisit yang berlebihan sehingga mengurangi kapasitas model? (Maksud saya katakan untuk masalah klasifikasi digit beberapa pola harus bertanggung jawab untuk titik, beberapa untuk tepi, tetapi ketika ini terjadi setiap pola mencoba bertanggung jawab untuk semua bentuk).

Atau apakah karena ketika ukuran bets semakin dekat dengan skala set pelatihan, minibatch tidak lagi dapat dilihat sebagai iid dari distribusi data, karena akan ada kemungkinan besar untuk minibatch yang berkorelasi?


Pembaruan
Seperti yang ditunjukkan dalam jawaban Benoit Sanchez, salah satu alasan penting adalah bahwa minibatch besar membutuhkan lebih banyak perhitungan untuk menyelesaikan satu pembaruan, dan sebagian besar analisis menggunakan jumlah waktu pelatihan yang tetap untuk perbandingan.

Namun makalah ini (Wilson dan Martinez, 2003) menunjukkan bahwa ukuran bets yang lebih besar masih sedikit tidak menguntungkan bahkan mengingat jumlah zaman pelatihan yang cukup. Apakah itu umumnya terjadi? masukkan deskripsi gambar di sini

dontloo
sumber

Jawaban:

12

N

  • 27N
  • 8343×N200000,47N

Anda dapat melihat bahwa dengan kumpulan yang lebih besar Anda membutuhkan pembaruan yang jauh lebih sedikit untuk akurasi yang sama.

Tapi itu tidak bisa dibandingkan karena tidak memproses jumlah data yang sama. Saya mengutip artikel pertama:

kBj1jkBj

Di sini tentang memproses jumlah data yang sama dan sementara ada overhead kecil untuk beberapa mini-batch, ini membutuhkan sumber daya pemrosesan yang sebanding.

Ada beberapa cara untuk memahami mengapa beberapa pembaruan lebih baik (untuk jumlah data yang sama sedang dibaca). Ini adalah ide kunci dari penurunan gradien stokastik vs penurunan gradien. Alih-alih membaca semuanya dan kemudian memperbaiki diri sendiri di akhir, Anda memperbaiki diri di jalan, membuat bacaan berikutnya lebih bermanfaat karena Anda memperbaiki diri dari tebakan yang lebih baik. Secara geometris, beberapa pembaruan lebih baik karena Anda menggambar beberapa segmen, masing-masing sesuai dengan gradien (perkiraan) pada awal setiap segmen. sementara satu pembaruan besar adalah segmen tunggal dari awal ke arah gradien (tepat). Lebih baik mengubah arah beberapa kali bahkan jika arahnya kurang tepat.

Ukuran mini-batch pada dasarnya adalah frekuensi pembaruan: semakin kecil minibatch semakin banyak pembaruan. Pada satu ekstrim (minibatch = dataset) Anda memiliki gradient descent. Pada ekstrem yang lain (minibatch = satu baris) Anda memiliki SGD penuh per baris. SGD per baris memang lebih baik, tetapi minibatch yang lebih besar cocok untuk paralelisasi yang lebih efisien.

Pada akhir proses konvergensi, SGD menjadi kurang tepat dibandingkan (batch) GD. Tetapi pada titik ini, hal-hal menjadi (biasanya) semacam pemasangan tepat berguna. Meskipun Anda mendapatkan fungsi kerugian yang sedikit lebih kecil pada set pelatihan, Anda tidak mendapatkan kekuatan prediksi yang sebenarnya. Anda hanya mencari optimal yang sangat tepat tetapi tidak membantu. Jika fungsi kerugian diatur dengan benar (yang mencegah over-fitting) Anda tidak benar-benar "over" -fit, Anda hanya berguna "hyper" -fit. Ini menunjukkan sebagai perubahan akurasi yang tidak signifikan pada set tes.

Benoit Sanchez
sumber
1
terima kasih, ini sangat masuk akal. Jadi pada dasarnya jika melakukan jumlah pembaruan yang sama, maka ukuran batch yang lebih besar akan setidaknya sama baiknya bukan?
dontloo
apakah Anda mengetahui ada eksperimen yang dipublikasikan tentang itu (membandingkan ukuran batch yang berbeda dengan jumlah pembaruan yang tetap)?
dontloo
Ya untuk jumlah pembaruan yang sama, kumpulan yang lebih besar selalu lebih baik. Saya tidak tahu tentang publikasi, jika saya menemukannya, saya akan mempostingnya.
Benoit Sanchez
Saya membaca sisa pertanyaan Anda (tabel). Menariknya itu menunjukkan hasil pada set tes sementara tujuan gradien yang layak adalah untuk mengoptimalkan pada set pelatihan. Mungkin batch kecil menghindari jenis overfitting minor dengan mengacak yang optimal. Ini adalah hal halus yang tidak saya ketahui secara intuitif.
Benoit Sanchez
Menurut artikel perbedaan akurasi tidak signifikan. Mereka hanya ingin menunjukkan bahwa akurasinya pada dasarnya sama. Apa yang terutama ingin mereka tunjukkan adalah bahwa SGD dengan batch kecil jauh lebih cepat.
Benoit Sanchez
4

Untuk menambah jawaban Curtis White (dan menambahkan beberapa referensi lagi):

Ya SGD berfungsi sebagai jenis regularisasi. Ini penting karena kalau tidak, sulit untuk menjelaskan mengapa DNN tidak selalu cocok, karena mereka bisa .

Alasannya, seperti yang saya mengerti, adalah bahwa SGD menyebabkan 'melompat-lompat' di ruang parameter, jadi selama pelatihan parameter tidak dapat tetap dalam minimum yang sempit, hanya di (atau dekat) yang lebih luas. Dan yang lebih luas ini tampaknya [1] menggeneralisasi lebih baik (alias, kurang overfitting).

Lebih banyak referensi:

  • Inilah [2] makalah lain yang memformalkan ini (atau mencoba, saya tidak mengikuti semuanya, periksa sendiri!)
  • Makalah ini [3] mengklaim bahwa ada fase di "stochastic relaxation, or random diffusion"mana stokastik melekat dalam SGD mengarah ke "maximiz[ation of] the conditional entropy of the layer".

Keduanya mengatakan bahwa SGD sesuai dengan istilah regularisasi entropi.

Pasti bisa ada cara lain di mana ukuran batch mempengaruhi konvergensi; ini yang saya tahu.


[1] Contoh: "Perspektif Bayesian tentang Generalisasi dan Keturunan Gradien Stochastic", Smith, Le, 2018. Dari abstrak: "We propose that the noise introduced by small mini-batches drives the parameters towards minima whose evidence is large."

[2] "Keturunan gradien stokastik melakukan inferensi variasional, konvergen untuk membatasi siklus untuk jaringan yang dalam", Chaudhari, Soatto 2017

[3] "Membuka kotak hitam Deep Neural Networks via Information" Schwartz-Ziv, Tishby, 2017

[4] "Memahami pembelajaran yang dalam membutuhkan memikirkan kembali generalisasi", C. Zhang dll. 2016

dasWesen
sumber
(+1) Referensi yang bagus. btw, penulis pertama pada [4] adalah C. Zhang
user20160
Oh kamu benar! Diedit, terima kasih atas koreksi.
dasWesen
0

Ukuran bets yang terlalu besar dapat mencegah konvergensi setidaknya saat menggunakan SGD dan melatih MLP menggunakan Keras. Adapun mengapa, saya tidak 100% yakin apakah itu ada hubungannya dengan rata-rata gradien atau pembaruan yang lebih kecil memberikan kemungkinan lebih besar untuk lolos dari minimum lokal.

Lihat di sini .

Curtis White
sumber