Güzel soru. Literatürde pek çok durma kuralı gördüm ve bağlama bağlı olarak her birinin avantaj ve dezavantajları var. optim
R fonksiyonu, örneğin, en az üç farklı durma kuralları vardır:
maxit
, yani önceden belirlenmiş bir azami yineleme sayısı. Literatürde gördüğüm bir başka benzer alternatif zaman aşımına uğramadan önce maksimum saniye sayısıdır. Tek ihtiyacınız olan yaklaşık bir çözüm ise, bu çok makul olabilir. Aslında, erken durmanın parametre değerlerinizi önceden bir Gauss koymaya benzer olduğu sınıflar (özellikle doğrusal modeller) vardır. Bir sık görüşmeci bir öncekinden ziyade bir "L2 normuna" sahip olduğunu söylerdi, ancak bunu makul bir şey olarak göreceklerini söylediler. Ben sadece bu yazıyı inceledim , ancak erken durma ve düzenlileşme arasındaki ilişkiden bahsediyor ve daha fazla bilgi edinmenize yardımcı olabilir. Ancak kısa versiyon, evet, erken durmak, ne yaptığınıza bağlı olarak, tamamen saygın bir şey olabilir.
abstol
yani, fonksiyon sıfıra "yeterince yaklaştığında" durur. Bu sizin için alakalı olmayabilir (sıfır bekliyormuşsunuz gibi gelmiyor), bu yüzden atlayacağım.
reltol
ikinci öneriniz gibi - iyileştirme eşiğin altına düştüğünde durun. Aslında bu konuda ne kadar teori olduğunu bilmiyorum, ama küçük bir azami yinelemeden çok daha düşük bir minima elde edersiniz. Bu sizin için önemliyse, daha fazla yineleme için kodu çalıştırmaya değer olabilir.
Durma kurallarının bir diğer ailesi, eğitim verilerinden ziyade bir doğrulama veri setinde (veya çapraz doğrulama ile) bir maliyet fonksiyonunu optimize etmekle ilgilidir. Modelinizi ne için kullanmak istediğinize bağlı olarak, egzersiz verileriniz üzerinde yerel asgari seviyeye ulaşmadan önce durmak isteyebilirsiniz, çünkü bu fazladan takma gerektirebilir. Trevor Hastie'nin bunu yapmanın iyi yolları hakkında yazdığından eminim ama alıntıyı hatırlayamıyorum.
Daha düşük minimayı makul bir sürede bulmak için diğer olası seçenekler şunları içerebilir:
Stokastik gradyan inişi, sadece bir seferde verilerinizin küçük bir kısmı için degradelerin tahmin edilmesini gerektirir (örneğin, "saf" SGD veya küçük mini gruplar için bir veri noktası).
Daha iyi yönlere işaret etmek ve yokuş aşağı ilerlerken daha iyi adım boyutları almak için objektif fonksiyonunuzun eğriliği hakkında bilgi kullanan daha gelişmiş optimizasyon fonksiyonları (örn. Newton tipi metotlar veya Konjugat Gradient).
Güncelleme kuralınızdaki "momentum" terimi, optimize edicinizin, hedef fonksiyonunuzdaki kanyon duvarlarını kapatmak yerine, yokuş aşağı yuvarlanma işini daha iyi yapmasını sağlar.
Bu yaklaşımların tümü çevrimiçi bulduğum ders notlarında tartışılmaktadır .
Bu yardımcı olur umarım!
Düzenleme oh, ayrıca daha iyi başlangıç değerleri almaya çalışabilirsiniz (örneğin, sorunun daha basit bir versiyonunu çözerek), böylece "sıcak başlangıç" durumunuzdan optimum seviyeye yaklaşmanız daha az yineleme gerektirir.