Bagaimana cara menggunakan penghentian dini dengan benar untuk melatih jaringan saraf dalam?

20

Saya memiliki model jaringan saraf yang dalam dan saya perlu melatihnya pada dataset saya yang terdiri dari sekitar 100.000 contoh, data validasi saya berisi sekitar 1000 contoh. Karena butuh waktu untuk melatih setiap contoh (sekitar 0,5 untuk setiap contoh) dan untuk menghindari overfitting, saya ingin menerapkan penghentian dini untuk mencegah perhitungan yang tidak perlu. Tetapi saya tidak yakin bagaimana cara melatih jaringan saraf saya dengan benar dengan penghentian dini, beberapa hal yang saya tidak mengerti sekarang:

  • Apa yang akan menjadi frekuensi validasi yang baik? Haruskah saya memeriksa model saya pada data validasi di akhir setiap zaman? (Ukuran batch saya adalah 1)

  • Apakah ini kasus bahwa beberapa zaman pertama mungkin menghasilkan hasil yang lebih buruk sebelum mulai konvergen ke nilai yang lebih baik? Dalam hal itu, haruskah kita melatih jaringan kita untuk beberapa zaman sebelum memeriksa untuk berhenti lebih awal?

  • Bagaimana cara menangani kasus ketika kehilangan validasi mungkin naik dan turun? Dalam hal itu, berhenti dini mungkin mencegah model saya belajar lebih jauh, bukan?

Terima kasih sebelumnya.

Log Malas
sumber
Saya sangat merekomendasikan ukuran bets lebih besar dari satu. Ukuran biasanya adalah 32, 64, dan 128.
ComputerScientist

Jawaban:

20

Apa yang akan menjadi frekuensi validasi yang baik? Haruskah saya memeriksa model saya pada data validasi di akhir setiap zaman? (Ukuran batch saya adalah 1)

Tidak ada aturan emas, menghitung kesalahan validasi setelah setiap zaman cukup umum. Karena set validasi Anda jauh lebih kecil dari set pelatihan Anda, itu tidak akan banyak memperlambat pelatihan.

Apakah ini kasus bahwa beberapa zaman pertama mungkin menghasilkan hasil yang lebih buruk sebelum mulai konvergen ke nilai yang lebih baik?

Iya

Dalam hal itu, haruskah kita melatih jaringan kita untuk beberapa zaman sebelum memeriksa untuk berhenti lebih awal?

Anda bisa, tetapi masalahnya adalah berapa banyak zaman yang harus Anda lewati. Jadi dalam praktiknya, sebagian besar waktu orang tidak melewatkan zaman apa pun.

Bagaimana cara menangani kasus ketika kehilangan validasi mungkin naik dan turun? Dalam hal itu, berhenti dini mungkin mencegah model saya belajar lebih jauh, bukan?

Orang biasanya mendefinisikan kesabaran, yaitu jumlah zaman untuk menunggu sebelum berhenti lebih awal jika tidak ada kemajuan pada set validasi. Kesabaran sering diatur di suatu tempat antara 10 dan 100 (10 atau 20 lebih umum), tetapi itu benar-benar tergantung pada dataset dan jaringan Anda.

Contoh dengan kesabaran = 10:

masukkan deskripsi gambar di sini

Franck Dernoncourt
sumber
Haruskah seseorang menggunakan model ketika awal berhenti atau model patiencezaman sebelum berhenti (yang 'terbaik' tanpa perbaikan lebih lanjut)?
stackunderflow
2
@displayname zaman kesabaran sebelum dihentikan
Franck Dernoncourt
11

Baru-baru ini saya menemukan sebuah makalah berjudul "Menghentikan Dini - tetapi kapan?" oleh Lutz Prechelt yang memiliki banyak contoh hebat tentang bagaimana menggunakan penghentian dini dengan penjelasan yang jelas tentang apa yang masing-masing lakukan dan formula bagi mereka.

Semoga melihat yang dapat membantu.

Pro Q
sumber
Makalah ini ditulis dalam gaya yang aneh tetapi info ini sangat membantu.
Josiah
3

Untuk menambah jawaban luar biasa lainnya, Anda juga bisa - tidak berhenti. Saya biasanya:

  • jalankan NN untuk lebih banyak waktu yang saya pikir masuk akal,
  • simpan model bobot setiap N zaman, dan
  • ketika saya melihat kehilangan pelatihan telah stabil, saya hanya memilih model dengan kehilangan validasi terendah.

Tentu saja itu hanya masuk akal ketika Anda tidak membayar per menit (atau biayanya cukup kecil) dan ketika Anda dapat menghentikan pelatihan secara manual. Keuntungannya adalah bahwa jauh lebih mudah untuk menentukan kesalahan validasi terendah di belakang.

johndodo
sumber
1
Saya juga melakukan ini. Meskipun seperti Anda, saya sadar itu mewah. Ketika model mulai memakan banyak ruang, saya menemukan bahwa dengan menggunakan angka loss dan f-score sebelumnya saya bisa secara program menentukan kapan harus menghapus model sebelumnya juga - sehingga Anda berakhir dengan jendela bergerak dari kandidat model terbaik yang mengonsumsi kira-kira banyak ruang hard disk karena harganya layak.
QA Collective