Sebuah zaman dalam penurunan gradien stokastik didefinisikan sebagai satu kali melewati data. Untuk setiap minibatch SGD, sampel diambil, gradien dihitung dan parameter diperbarui. Dalam pengaturan zaman, sampel diambil tanpa penggantian.
Tapi ini sepertinya tidak perlu. Mengapa tidak menggambar setiap minibid SGD sebagai penarikan acak dari seluruh kumpulan data di setiap iterasi? Pada sejumlah besar zaman, penyimpangan kecil di mana sampel terlihat lebih atau kurang sering tampaknya tidak penting.
neural-networks
deep-learning
gradient-descent
Pasang kembali Monica
sumber
sumber
Jawaban:
Selain jawaban Franck tentang kepraktisan, dan jawaban David tentang melihat subkelompok kecil - keduanya merupakan poin penting - sebenarnya ada beberapa alasan teoretis untuk memilih pengambilan sampel tanpa penggantian. Alasannya mungkin terkait dengan poin David (yang pada dasarnya adalah masalah pengumpul kupon ).
Pada tahun 2009, Léon Bottou membandingkan kinerja konvergensi pada masalah klasifikasi teks tertentu ( ).n = 781 , 265
Dia melatih mesin vektor dukungan melalui SGD dengan tiga pendekatan:
Ini adalah Gambar 1 yang menggambarkan bahwa:
Ini kemudian secara teoritis dikonfirmasi oleh makalah:
Bukti mereka hanya berlaku untuk kasus di mana fungsi kerugian sangat cembung, yaitu tidak untuk jaringan saraf. Adalah masuk akal untuk berharap, bahwa alasan yang sama mungkin berlaku untuk kasus jaringan saraf (yang jauh lebih sulit untuk dianalisis).
sumber
Memang memang tidak perlu dari sudut pandang kinerja dengan satu set pelatihan besar, tetapi menggunakan zaman bisa nyaman, misalnya:
[1] memberikan satu alasan lagi, yang tidak terlalu relevan dengan konfigurasi komputer saat ini:
[1] Bengio, Yoshua. " Rekomendasi praktis untuk pelatihan arsitektur mendalam berbasis gradien. " Neural Networks: Tricks of the Trade. Springer Berlin Heidelberg, 2012. 437-478.
sumber
Saya agak tidak setuju bahwa itu jelas tidak masalah. Katakanlah ada sejuta contoh pelatihan, dan kami mengambil sepuluh juta sampel.
Di R, kita dapat dengan cepat melihat seperti apa distribusi itu
plot(dbinom(0:40, size = 10 * 1E6, prob = 1E-6), type = "h")
Beberapa contoh akan dikunjungi 20+ kali, sementara 1% di antaranya akan dikunjungi 3 kali atau lebih sedikit. Jika rangkaian pelatihan dipilih dengan hati-hati untuk mewakili distribusi contoh yang diharapkan dalam data nyata, ini dapat memiliki dampak nyata di beberapa bidang kumpulan data --- terutama sekali Anda mulai mengiris data menjadi kelompok-kelompok yang lebih kecil.
Pertimbangkan kasus baru - baru ini di mana satu pemilih Illinois secara efektif mendapat oversampled 30x dan secara dramatis mengubah perkiraan model untuk kelompok demografinya (dan pada tingkat yang lebih rendah, untuk seluruh populasi AS). Jika kita secara tidak sengaja mengecoh gambar "Ruffed Grouse" yang diambil dengan latar belakang hijau pada hari-hari berawan dengan kedalaman bidang yang sempit dan meremehkan jenis gambar belibis lainnya, model mungkin mengaitkan fitur-fitur yang tidak relevan itu dengan label kategori. Semakin banyak cara untuk mengiris data, semakin banyak subkelompok ini, dan semakin banyak peluang untuk kesalahan semacam ini.
sumber
samples = sample(1:1E6, size = 1E7, replace = TRUE)
plot(table(table(samples)) / 1E7)