Adakah perbedaan dalam regularisasi dalam MLP antara pembaruan batch dan individu?

9

Saya baru saja belajar tentang regularisasi sebagai pendekatan untuk mengontrol over-fitting, dan saya ingin memasukkan ide tersebut ke dalam implementasi sederhana backpropagation dan Multilayer perceptron (MLP) yang saya kumpulkan.

Saat ini untuk menghindari pemasangan berlebihan, saya melakukan validasi silang dan menjaga jaringan dengan skor terbaik sejauh ini pada set validasi. Ini berfungsi baik, tetapi menambahkan regularisasi akan menguntungkan saya dalam pilihan yang benar dari algoritma regularisasi dan parameter akan membuat jaringan saya menyatu pada model non-overfit lebih sistematis.

Formula yang saya miliki untuk jangka waktu pembaruan (dari kursus Coursera ML) dinyatakan sebagai pembaruan batch misalnya untuk setiap berat, setelah menjumlahkan semua delta yang berlaku untuk seluruh pelatihan yang ditetapkan dari perbanyakan kesalahan, penyesuaian lambda * current_weightditambahkan sebelum penggabungan delta dikurangi pada akhir bets, di mana lambdaadalah parameter regularisasi.

Implementasi backpropagation saya menggunakan pembaruan berat per-item. Saya khawatir bahwa saya tidak bisa hanya menyalin pendekatan batch, meskipun terlihat OK secara intuitif bagi saya. Apakah istilah regularisasi yang lebih kecil per item berfungsi dengan baik?

Misalnya di lambda * current_weight / Nmana N adalah ukuran set pelatihan - sekilas ini terlihat masuk akal. Saya tidak dapat menemukan apa pun tentang masalah ini, dan saya ingin tahu apakah itu karena regularisasi tidak berfungsi dengan baik dengan pembaruan per-item, atau bahkan menggunakan nama yang berbeda atau formula yang diubah.

Neil Slater
sumber

Jawaban:

2

Regularisasi juga relevan dalam pembelajaran per item. Saya akan menyarankan untuk memulai dengan pendekatan validasi dasar untuk mengetahui lambda, apakah Anda melakukan pembelajaran batch atau per-item. Ini adalah pendekatan termudah dan teraman. Coba secara manual dengan sejumlah nilai yang berbeda. misalnya 0,001. 0,003, 0,01, 0,03, 0,1 dll. Dan lihat bagaimana perilaku validasi Anda. Kemudian, Anda dapat mengotomatiskan proses ini dengan memperkenalkan metode pencarian linier atau lokal.

Sebagai catatan, saya percaya nilai lambda harus dipertimbangkan dalam kaitannya dengan pembaruan vektor parameter, daripada ukuran pelatihan yang ditetapkan. Untuk pelatihan batch, Anda memiliki satu pembaruan parameter per pass dataset , sementara untuk online satu pembaruan per sampel (terlepas dari ukuran set pelatihan).

Saya baru-baru ini menemukan Pertanyaan Crossvalidated ini , yang tampaknya sangat mirip dengan Anda. Ada tautan ke sebuah makalah tentang algoritma SGD baru , dengan beberapa konten yang relevan. Mungkin bermanfaat untuk melihatnya (terutama halaman 1742-1743).

insys
sumber
Ya saya masih berniat melakukan cross-validate untuk memeriksa over-fitting, pertanyaan saya lebih mendasar dari itu - saya tidak dapat menemukan referensi untuk menggunakan regularisasi dengan penyesuaian berat per-item dalam MLP sama sekali, dan khawatir ada yang baik alasan untuk itu - misalnya itu tidak berfungsi dalam mode belajar itu, atau perlu penyesuaian. Pertanyaan crossvalidated ini sangat mirip meskipun dan memberi saya lebih percaya diri, terima kasih. Halaman algoritma SGD tampaknya memiliki metode stokastik yang berbeda untuk memperkenalkan regularisasi, yang mungkin sedikit lebih maju bagi saya, tetapi itulah yang saya cari.
Neil Slater
Regularisasi juga relevan dalam pembelajaran per item. Saya masih menyarankan untuk memulai dengan pendekatan validasi dasar untuk mencari lambda. Ini adalah pendekatan termudah dan teraman. Coba secara manual dengan sejumlah nilai yang berbeda. misalnya 0,001. 0,003, 0,01, 0,03, 0,1 dll. Dan lihat bagaimana perilaku validasi Anda. Kemudian, Anda dapat mengotomatiskan proses ini dengan memperkenalkan metode pencarian linier atau lokal.
insys
Jika komentar Anda di atas telah diedit dan diganti kalimat / pertanyaan pertama dalam jawaban Anda, maka saya pikir saya bisa menerimanya.
Neil Slater
Terima kasih telah menunjukkan, saya setuju. Diedit dalam. Harap lebih jelas.
insys
2

Untuk melengkapi apa dikatakan insys :

Regularisasi digunakan saat menghitung backpropagation untuk semua bobot dalam MLP Anda. Oleh karena itu, alih-alih menghitung gradien sehubungan dengan semua input dari set pelatihan (batch ) Anda hanya menggunakan beberapa / satu item ( stochastic or semi-stochastic). Anda akhirnya akan membatasi hasil pembaruan sehubungan dengan satu item dan bukan semua yang juga benar.

Juga, jika saya ingat dengan benar, Andrew NG digunakan L2-regularization. Itu/N dalam lambda * current_weight / Ntidak wajib, itu hanya membantu rescaling input. Namun jika Anda memilih untuk tidak menggunakannya, Anda akan memiliki (dalam sebagian besar kasus) untuk memilih nilai lain lambda.

Anda juga dapat menggunakan algoritma Grid-search untuk memilih nilai terbaik untuk lambda( hyperparameter => yang Anda harus pilih).

Orelus
sumber