Pertanyaan yang bagus Saya telah melihat banyak aturan berhenti dalam literatur, dan ada kelebihan dan kekurangan untuk masing-masing, tergantung pada konteksnya. The optim
fungsi dalam R, misalnya, memiliki setidaknya tiga aturan berhenti berbeda:
maxit
, yaitu jumlah iterasi maksimum yang telah ditentukan. Alternatif lain yang serupa yang saya lihat dalam literatur adalah jumlah detik maksimum sebelum waktu habis. Jika yang Anda butuhkan hanyalah solusi perkiraan, ini bisa menjadi sangat masuk akal. Bahkan, ada kelas model (terutama model linier) yang penghentian awal mirip dengan menempatkan Gaussian sebelum nilai parameter Anda. Seorang frequentist akan mengatakan Anda memiliki "norma L2" daripada yang sebelumnya, tetapi mereka juga akan menganggapnya sebagai hal yang wajar untuk dilakukan. Saya hanya membaca sekilas makalah ini , tetapi ini berbicara tentang hubungan antara berhenti dini dan regularisasi dan mungkin membantu mengarahkan Anda ke informasi lebih lanjut. Tetapi versi singkatnya adalah, ya, berhenti lebih awal bisa menjadi hal yang sangat terhormat untuk dilakukan, tergantung pada apa yang Anda lakukan.
abstol
, yaitu, berhenti ketika fungsi mendapat "cukup dekat" ke nol. Ini mungkin tidak relevan untuk Anda (sepertinya Anda tidak mengharapkan nol), jadi saya akan melewatkannya.
reltol
, yang seperti saran kedua Anda - berhenti ketika peningkatannya turun di bawah ambang batas. Saya tidak benar-benar tahu berapa banyak teori yang ada tentang ini, tetapi Anda mungkin akan cenderung mendapatkan minima lebih rendah dengan cara ini daripada dengan jumlah iterasi maksimum yang kecil. Jika itu penting bagi Anda, mungkin ada baiknya menjalankan kode untuk iterasi lebih lanjut.
Keluarga lain dari aturan berhenti harus dilakukan dengan mengoptimalkan fungsi biaya pada set data validasi (atau dengan validasi silang) daripada pada data pelatihan. Tergantung pada apa Anda ingin menggunakan model Anda, Anda mungkin ingin berhenti sebelum Anda mencapai minimum lokal pada data pelatihan Anda, karena itu bisa melibatkan overfitting. Saya cukup yakin Trevor Hastie telah menulis tentang cara-cara yang baik untuk melakukan ini, tetapi saya tidak dapat mengingat kutipannya.
Opsi lain yang memungkinkan untuk menemukan minima lebih rendah dalam jumlah waktu yang wajar dapat mencakup:
Stochastic gradient descent, yang hanya memerlukan estimasi gradien untuk sebagian kecil data Anda sekaligus (mis. Satu titik data untuk SGD "murni", atau bets mini kecil).
Fungsi optimisasi yang lebih maju (mis. Metode tipe Newton atau Konjugat Gradien), yang menggunakan informasi tentang kelengkungan fungsi objektif Anda untuk membantu Anda menunjuk ke arah yang lebih baik dan mengambil ukuran langkah yang lebih baik saat Anda bergerak menuruni bukit.
Istilah "momentum" dalam aturan pembaruan Anda, sehingga pengoptimal Anda melakukan pekerjaan yang lebih baik untuk menuruni bukit alih-alih melompati dinding ngarai dalam fungsi tujuan Anda.
Semua pendekatan ini dibahas dalam catatan kuliah yang saya temukan online ini.
Semoga ini membantu!
Sunting oh, dan Anda juga dapat mencoba untuk mendapatkan nilai awal yang lebih baik (misalnya dengan memecahkan versi masalah yang lebih sederhana) sehingga diperlukan lebih sedikit iterasi untuk mendekati optimal dari "permulaan hangat" Anda.