Penghentian awal vs validasi silang

8

Saat ini saya menggunakan penghentian awal dalam pekerjaan saya untuk mencegah pemasangan yang berlebihan. Khususnya yang diambil dari Early Stopping But When? .

Saya sekarang ingin membandingkan dengan algoritma klasifikasi lain di mana tampak bahwa 10 kali validasi silang digunakan secara luas.

Namun saya bingung tentang apakah validasi silang adalah metode untuk mencegah pemasangan berlebihan atau memilih parameter yang baik. (atau mungkin ini satu dan sama?). Saya juga bingung apakah metode penghentian awal dan validasi silang dapat digunakan sebagai pengganti satu sama lain atau dalam kombinasi.

Jadi pertanyaannya adalah: apa hubungan antara penghentian dini dan validasi silang?

Andy T
sumber

Jawaban:

4

Cross Validation adalah metode untuk memperkirakan akurasi generalisasi dari algoritma pembelajaran terawasi.

Menghentikan lebih awal adalah metode untuk menghindari overfitting dan membutuhkan metode untuk menilai hubungan antara akurasi generalisasi dari model yang dipelajari dan akurasi pelatihan.

Jadi Anda bisa menggunakan validasi silang untuk mengganti set validasi, yang disebutkan dalam makalah yang Anda kutip, dalam kerangka kerja penghentian awal. Validasi cross sepuluh kali lipat misalnya akan lebih akurat daripada menggunakan satu set validasi tunggal, dan biasanya akan menjadi estimasi kesalahan generalisasi yang lebih baik.

Jadi untuk meringkas, validasi silang adalah ukuran akurasi generalisasi yang dapat digunakan sebagai bagian dari kerangka penghentian awal.

image_doctor
sumber
1
Itu semua masuk akal, tepuk tangan. Tetapi dari apa yang saya dapat katakan 10 ditemukan validasi silang tampaknya digunakan untuk memilih parameter untuk metode yang diberikan, tidak berhenti lebih awal ketika menggunakan metode itu. Jadi saya pikir saya masih harus melewatkan sesuatu.
Andy T
@AndyT Mungkin yang menjadi fokus di sini adalah estimasi generalisasi. Baik pemilihan parameter dan penghentian awal membutuhkan penduga kesalahan kesalahan generalisasi yang baik. Validasi silang N lipat adalah salah satu penaksir tersebut. Ada yang lain, seperti tahan berulang dan bootstrap, atau satu set validasi sederhana. Apa yang Anda coba lakukan dalam kedua kasus, pemilihan parameter dan penghentian awal adalah menilai bagaimana model akan tampil pada data yang tidak terlihat sehingga Anda dapat memilih model yang baik. Untuk melakukan ini, dalam kedua kasus Anda menggunakan estimator generalisasi. Apakah itu membantu ?
image_doctor
Ya itu jelas. Terima kasih banyak atas waktu anda! Itu sangat dihargai.
Andy T
@AndyT Tidak masalah, saya harap proyek Anda berjalan dengan baik!
image_doctor
1

Selain dua pendekatan generalisasi yang Anda sebutkan, ada banyak pendekatan lain.

  • menambahkan istilah regularisasi dalam fungsi kerugian (biaya) Anda yang meminimalkan jumlah dan besarnya parameter model bukan nol Anda
  • menjatuhkan secara acak (zeroing out) sebagian dari bobot / parameter dalam model Anda dengan masing-masing zaman pelatihan
  • menambahkan lapisan node stokastik dalam model Anda (misalnya, pengambilan sampel dari "probabilitas" yang diberikan oleh output fungsi logistik)

Banyak dari pendekatan ini (termasuk validasi silang dan pendekatan awal Anda) dapat digabungkan bersama untuk memaksimalkan kinerja model pada data yang tidak terlihat (kinerja generalisasi).

Satu catatan tentang pendekatan awal. Untuk jaring saraf, Geoffrey Hinton merekomendasikan untuk menghentikan pelatihan ketika akurasi set tes mencapai maksimum (kerugian set tes, tidak termasuk ketentuan regularisasi, minimal). Satu tambahan "penyesuaian" untuk pendekatan Hinton adalah tidak berhenti jika akurasi test_set lebih baik (kerugian lebih kecil) daripada untuk set pelatihan Anda, bahkan jika akurasi set tes telah berhenti meningkat (test set loss telah berhenti menurun). Ini tidak mungkin memberi Anda lebih dari satu zaman pelatihan, tetapi kadang-kadang itu bisa membantu sedikit, terutama untuk test_sets kecil. Jangan lakukan ini untuk set tes yang sangat kecil (lebih kecil dari set sampel yang representatif, seperti kadang-kadang digunakan dalam pelatihan K-folds dan validasi silang).

hobs
sumber
0

Anda tidak dapat menggunakan penghentian awal dan validasi silang K-fold dalam kombinasi. karena penghentian awal pilih model terbaik dari set validasi, kinerja perlu diverifikasi oleh set tes. tetapi dalam validasi silang K-fold, tidak ada set tes, jika Anda menggunakan penghentian awal untuk memilih model terbaik dari set validasi, dan itu akan diverifikasi lagi dalam set validasi. validasi K-fold cross mendapatkan kinerja rata-rata (diukur dengan akurasi) dari model terbaik, dan tidak ada artinya.

tianyu zhou
sumber
Jumlah iterasi pelatihan dapat diperlakukan sebagai hyperparameter, dan dipilih menggunakan validasi silang, seperti halnya hyperparameter lainnya. Orang bisa menyebut ini "penghentian dini".
user20160
saat menggunakan penghentian awal dalam validasi silang K fold, jumlah zaman ditetapkan dengan set validasi dan berbeda untuk setiap pemisahan. Ini akan membuat jaringan memilih model terbaik di setiap pemisahan, yang tidak sesuai dengan kinerja rata-rata.
tianyu zhou
2
Cara melakukannya adalah 1) Melatih sejumlah iterasi pada setiap lipatan (mis. Hingga maksimum yang diberikan). 2) Hitung kesalahan set validasi rata-rata (lintas lipatan) sebagai fungsi dari jumlah iterasi. 3) Pilih jumlah iterasi yang meminimalkan kesalahan set validasi rata-rata.
user20160
1
Inilah solusi saya: 1. kocok semua data, 2. lakukan 10 kali lipat dengan sklearn, kfold = StratifiedKFold (n_splits = 10, shuffle = False) 3, atur callback: callbacks_list = [Awal Berhenti (monitor = 'val_loss', kesabaran = 50, verbose = 0, mode = 'min')] 4. pilih model terbaik dengan berhenti lebih awal. history = model.fit (X [kereta], Y [kereta], epochs = 250, batch_size = 512, verbose = 1, callbacks = callbacks_list, validation_split = 0,1, shuffle = Salah) atur set validasi pemisahan otomatis lainnya dari X [kereta ], Y [kereta]. 5. uji kinerja dengan X [tes] danY [tes]: skor = model.evaluate (X [tes], Y [tes], verbose = 0)
tianyu zhou